Autor Thema: Q-Ausgänge mit Basic auslesen  (Gelesen 2993 mal)

Offline crimsonghost

  • Newbie
  • *
  • Beiträge: 6
Q-Ausgänge mit Basic auslesen
« am: März 05, 2014, 17:23:31 Nachmittag »
Hallo,

ich verstehe nicht was an diesem Code falsch ist:

easyCOM.Read_Object_Value(1, 1, anzahlQ, lblQPuffer)
anzahlQ ist als Integer und lblQPuffer als Byte deklariert.

Mit der ersten 1 sprech ich NT1 an, mit der zweiten 1 das auszulesende Objekt, also in diesem Fall die Ausgänge Q und mit anzahlQ (1-8) einen einzelnen Ausgang also Q1-Q8 und dann erwarte ich in lblQPuffer eine 1 oder 0, sprich Qx ist AN oder AUS...

Komischerweise ist der Wert von lblQPuffer immer "85".

Kann mir jemand helfen ?

Danke!

Offline Peter_Pig

  • Jr. Member
  • **
  • Beiträge: 48
Re:Q-Ausgänge mit Basic auslesen
« Antwort #1 am: März 25, 2014, 23:44:21 Nachmittag »
Hallo,

also ich bin zwar nicht der Experte, werde aber versuchen zu helfen:

So wie ich die Doku interpretiere, braucht Objekt 1 (Digital-Ausgänge Basisgerät) 2 byte für die "Antwort".

Der dritte Übergabeparameter (anzahlQ) ist laut Doku bei Objekt 1 belanglos (kannst also 0 schreiben)

Objekt 1 schreibt, bei Erfolg, immer die Zustände aller 8 Ausgänge, in Form eines 1 Byte Integers, auf den zugewiesenen Speicher.

D.h. : um den Zustand jedes einzelnen Ausgangs zu "entschlüsseln", musst Du m.E. eine Maske auf den Wert in lblQpuffer anwenden.

Mit Python mache ich das folgendermaßen (muss mit sonstigen Sprachen ähnlich gehen):

Q1 = int(data) & int(1) == 1
Q2 = int(data) & int(2) == 2
Q3 = int(data) & int(4) == 4
Q4 = int(data) & int (8) == 8
Q5 = int(data) & int(16) == 16
Q6 = int(data) & int(32) == 32
Q7 = int(data) & int(64) == 64
Q8 = int(data) & int(128) == 128

Dies weist den Variablen Q1 ... Q8 True bzw. False zu.

Es gibt bestimmt bessere Lösungen...

Jedenfalls musst Du erst dein Rückgabewert auswerten, um zu wissen, ob deine 85 eine Fehlermeldung des Geräts (Rückgabewert 2) ist oder ein Abbild der Ausgänge (Rückgabewert 0).

85 wäre binär 01010101. Entspricht das deinen Ausgängen?

Gruß,

Peter
« Letzte Änderung: März 26, 2014, 00:33:30 Vormittag von Peter_Pig »