From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

Discussions au sujet des autres produits NI

annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 

USB-6525 - Programmation VS2012 - GetSwitchRelayPosition

Résolu !
Accéder à la solution

Bonjour,

 

J'utilise un USB-6525 pour piloter (avec les sorties) le déplacement d'un chariot sur des rails. Différents fin de course sont positionnés et reliés aux entrées du 6525.

 

Le programme est développé en Visual Studio 2012 C#. La commande des sorties et la lecture des entrées se ont convenablement.

 

Par contre, je bute sur la lecture de l'état des relais de sortie.

 

J'utilise GetSwitchRelayPosition qui attend comme paramètre un string représentant le numéro du relais à lire. Je ne sais pas à quoi correspond ce nom.

 

Toutes mes tentatives se soldent par un exception 😞


Ci joint un exemple de code :

 

            Task digitalWriteTask4 = new Task();

            digitalWriteTask4.DOChannels.CreateChannel("Dev1/port0/line4", "", ChannelLineGrouping.OneChannelForEachLine);

            DigitalSingleChannelWriter writer4 = new DigitalSingleChannelWriter(digitalWriteTask4.Stream);
            writer4.WriteSingleSampleSingleLine(true, ckbEtat.Checked);

            try
            {

                // Lit la position du relais


                label1.Text = string.Format("{0}", DaqSystem.Local.GetSwitchRelayPosition("Dev1/port0/line4"));


                //label1.Text = string.Format("{0}", DaqSystem.Local.GetSwitchRelayPosition("line4"));
                //label1.Text = string.Format("{0}", DaqSystem.Local.GetSwitchRelayPosition("4"));
                //label1.Text = string.Format("{0}", DaqSystem.Local.GetSwitchRelayPosition("output4"));

            }
            catch (DaqException ex)
            {
                MessageBox.Show(ex.Message);
            }

Dans ce cas l'exception est : Relay name is not specified in the list entry avec un status code de : -200531

 

Merci de votre aide.

 

A+

 

0 Compliments
Message 1 sur 4
6 383 Visites

Bonjour Luc,

 

Malheureusement cette propriété (GetRelayPosition) n'est pas supportée pour les USB-6525.

 

NI USB-6525 Supported Properties

 

J'ai fait le test avec une carte simulée (une PXI-2576) et la fonction GetRelayPosition("/PXI1Slot2/k0") renvoie bien l'état du relai (ouvert/fermé):

 

NI PXI-2576 Supported Properties

 

Si tu veux refaire le test par toi même, voici la procédure pour simuler un périphérique dans MAX

 

Bonne journée,

Valentin
Certified LabVIEW Architect
Certified TestStand Architect
Certified LabWindowsCVI Developer
National Instruments France

0 Compliments
Message 2 sur 4
6 325 Visites
Solution
Accepté par l'auteur du sujet Luc84

Bonjour,

 

Merci d'avoir pris le temps de lire mon post et d'y répondre.

 

Cordialement

0 Compliments
Message 3 sur 4
6 265 Visites

Bonjour,

 

Je suis actuellement un peu dans le même cas car je dispose d'un usb-6525 et j'aimerai piloter automatiquement les relais à l'aide des fonctions C DAQmxSwitchOpenRelays et DAQmxSwitchCloseRelays. Elles ne se trouvent pas non plus dans la liste des fonctions supportées par la carte usb-6525. Est ce que cela signifie que l'on ne peut pas effectuer cette opération sans Labview ou existe t'il une autre méthode pour venir fermer et ouvrir les relais automatiquement via des fonctions en C ?

 

Bien cordialement,

Romain Pavec

0 Compliments
Message 4 sur 4
2 984 Visites