Konfigurationsbeispiel

Beim RevPi DIO Modul kann man die Eingänge nicht nur zum direkten Einlesen von digitalen Eingangswerten benutzen, sondern auch als Zähler, der fallende oder steigende Flanken zählt oder jeweils 2 Eingänge zusammen zum Anschluß eines Inkrementalgebers.

Ausgänge können nicht nur ein Digitalsignal, sondern aber auch ein pulsweitenmoduliertes (PWM-) Signal ausgeben.

Gleiches gilt natürlich für die RevPi DI und RevPi DO Module, die folgende Erklärung erwähnt jedoch nur die DIO.

PiCtory Screenshot
PiCtory Oberfläche

Wenn man ein RevPi DIO Modul in PiCtory eingefügt and angeklickt hat, kann man in dem Bereich Device Data links unten in der Spalte Input und Output die Anzahl der Aus- und Eingänge auswählen. Es ändert sich dabei nicht die Anzahl der phsikalischen I/Os, sondern die Anzahl der Variablen über die sie angesprochen werden können. Standardeinstellung ist, dass jeder I/O-Pin über eine eigene BOOL-Variable Input_Pin_n bzw. Output_pin_n angesprochen werden kann. Wählt man die niedrige Zahl, sind alle I/Os in jeweils einer 16-Bit-Variable als Bitfeld kodiert.

Die Zahlen in der Auswahlbox sind größer, da auch die optionalen Variablen für Counter, Encoder und PWM mitgezählt werden. Außerdem muss beachtet werden, dass das Prozessabbild von allen drei Modulen gleich aufgebaut ist, aber bestimmte Bytes nicht benutzt werden. Beim DO z.B. die Bytes für die Eingänge, beim DIO die Bits für Pin 15 und 16 die hier nicht angeschlossen sind.

Im Value Editor rechts unten kann man nun den Variablen andere Namen geben. Die Namen werden später z.B. in logi.CAD3 übernommen. Es gibts aber auch einem ioctl-Aufruf im piControl-Treiber um für einen Namen die Position im Prozessabbild zu bekommen. Dadurch kann man die Hardwarekonfiguration und damit auch den Aufbau des Prozessabbilds ändern ohne das man die Anwendung die darauf zugreift ändern muss. Damit das funktioniert, muss natürlich jede Variable einen anderen eindeutigen Namen haben.

Als zweites kann man Variablen einen Startwert geben. Das ist insbesonder bei den Werten vom Typ MEM wichtig, denn damit wird das Verhalten des Moduls konfiguriert.

Value Editor Screenshot
Value Editor

Bei den 16 InputMode_n Variablen kann eine von 4 Betriebsarten auswählen:

  • Direct: der aktuellen Eingangswert steht in der Variable Input_Pin_n
  • Coutner, rising edge: steigende Flanken werden gezählt
  • Coutner, falling edge: fallende Flanken werden gezählt
  • Encoder: An diesem und folgenden Eingang werden Encodepulse gezählt.
HINWEIS
Es können an einem Modul nicht mehr als 6 Eingänge gleichzeitig als Counter oder Encoder konfiguriert werden.

Der Zähler- bzw. Encoderwert steht als 32-Bit-Wert in den Variablen Counter_n.

Mit InputDebounce kann die Entprellung für alle Eingänge gemeinsam eingestellt werden. Möglich sind die Werte: Aus, 25µs, 750µs, 3ms

OutputPushPull definiert, ob die Ausgänge im Push-Pull oder High-Side-Switch Modus arbeiten. Die Variable ist ein Bitfeld, d.h. wenn Bit 0 den Wert 1 hat, arbeitet Output 1 im Push-Pull-Modus, Bit 1 gilt für Output 2 usw. Standardwert ist 0, also alle Ausgänge im High-Side-Switch Modus.

OutputOpenLoadDetection definiert, ob die Verbindung zur Last offen oder geschlossen ist. Die Variable ist ein Bitfeld, d.h. wenn Bit 0 den Wert 1 hat, ist die OutputOpenLoadDetection aktiv für Kanal 1. Für die Konfiguration und Auswertung dieser Funktion muss zunächst die Überwachung für die entsprechenden Output-Channel in PiCtory über „OpenLoadDetect“ aktiviert werden.

Im Fehlerfall werden in der Variable „Output Status“ (Offset 2) die entsprechenden Bits gesetzt, siehe auch Tutorial Konfiguration digitale I/O-Module. Dadurch werden alle Ausgänge abgeschaltet und die Status LED am DIO/DO-Modul leuchtet, wie bei allen Fehlerfällen dauerhaft rot.

Hinweis: die OpenLoadDetection ist nur aktiv, wenn der überwachte Ausgang Low ist. Wenn Spannung anliegt, ist die Überwachung deaktiviert. Außerdem ist eine genaue Unterscheidung zwischen overtemperature, overload und openLoad nicht möglich.

OutputPWMActive ist auch ein Bitfeld. Ist ein Bit 0 wird der Wert von Output_Pin_n direkt ausgegeben. Ist das Bit 1, wird statt dessen ein PWM Signal ausgegeben. Der Wert, der ausgegeben werden soll, muss in die Variable PWM_n geschrieben werden. In die PWM_n Variablen können %-Werte von 0 bis 100 geschrieben werden. 0% bedeutet immer Aus, 100% immer an. Bei 20% ist der Ausgang z.B. eine fünftel Periode an und 4/5 Perioden aus. Die Periodenlänge bzw. die Frequenz kann über die Variable OutputPWMFrequency zwischen 40Hz und 400Hz eingestellt werden. Bei 40Hz können alle Werte zwischen 0% und 100% in Einerschritten ausgegeben werden. Bei 400Hz sind nur 10% Schritte möglich, also 0%, 10%, 20% usw bis 100%.

Es gibt noch 2 Statuswerte:

Output_Status ist ein Bitfeld mit 16 Bits für die 16 Ausgänge.