ProjectInfo (PRG)¶
PROGRAM ProjectInfo
Die Projektinfo informiert über Version und Anwendung der ELA-IO.
Note
- Beschreibung: Direkten Zugriff auf die Ein- und Ausgänge einer Mastersteuerung,
- sowie auf Slave-EA’s über eine CanOpen-Kommunikation. Alle EA’s werden hierbei über PLC-Code konfiguriert, geschrieben und gelesen. Eine statische Projektierung innerhalb CoDeSys entfällt.
MASTER: Alle Elrest Master- Geräte unter CoDeSys V3. SLAVES: - Elrest Robusto Slave 102 - Elrest Robusto Slave 123 - Elrest Combo Slave 1xx Maximale Anzahl von Slaves: 64
Name : ELA-IO_Basic Firma : Elrest GmbH, Deutschland Autor : F.Nething
Die Projektinfo ist eine Ansammlung zur Anwendung der Klasse im ProgrammCode.
Note
Die Beschreibung ist Beispielhaft und an das Projekt ELA_IO angelehnt.
***********************************************************************************************************************************************************
- Initalisierung -> Typische vorgehensweise:
1.) Einbinden der Bibliothek ELA_IO und Instanzierung des FB’s
VAR:
IO : ELA_IO.ELA_IO_Fb;
2.) Konfigurieren von Analogkanälen
Sollen Analogkanäle verwendet werden, müssen diesen mit den Funktionen XXX ein ensprechender Sensortyp zugewiesen werden. :
Code für Eingänge:
`` IO.AInConfigureType(Node,Channel, ELA_IO_ITF.AIN_0_10VOLT); // Type 0``
Code für Eingänge:
`` IO.AOutConfigureType(Node,Channel,ELA_IO_ITF.AOUT_0_10VOLT_NORMED); // Type 54``
Damit zur Sensorauswahl mit einem Pulldown-Menü gearbeitet werden kann, `` IO.AOutConfigureType(00+i,ELA_IO_ITF.[PULLDOWN-MENUE]); ``
sind innerhalb der Entwicklungsumgebung folgende Einstellungen vorzunehmen.
Wählen Sie:
Tools –> Optionen –> Intelligentes Kodieren.
dann wie folgt:
[X] Alle Instanzvariablen in der Eingabehilfe auflisten
[X] Komponenten auslisten, nachdem ein Punkt (.) eingegeben wurde
[X] Mit Namensraum einfügen.
3.) Lesen von analogen Eingängen
Code:
Digitaleingang01 := IO.Ain(1,1);
* weitere Detail zur Funktion finden sich weiter unten
4.) Schreiben von analogen Ausgängen
Code:
AnalogEingang02 := IO.Aout(0,2);
* weitere Detail zur Funktion finden sich weiter unten
5.) Lesen von digitalen Eingängen
Code:
DigitalEingang01 := IO.Din(1,1);
* weitere Detail zur Funktion finden sich weiter unten
6.) Schreiben von digitalen Ausgängen
Code:
DigitalEingang16 := IO.Dout(0,16);
* weitere Detail zur Funktion finden sich weiter unten
7.) Can-Initialisierung
IO.CanOpenInit(CanNo:=0,Baudrate:=125);
Die Methode muß nur aufgerufen werden, wenn auf Ein- und Ausgänge weiterer angelossener Geräte
(Canopen -Slaves) zugegriffen werden soll.
8.) Aufruf der Methode
IO();
Die Methode muß nur aufgerufen werden, wenn auf Ein- und Ausgänge weiterer angeschlossener Geräte
(Canopen -Slaves) zugegriffen werden soll.
***********************************************************************************************************************************************************
- Erläuterung der Methoden
1.) CanBus- Initialisierung -
CanOpenInit()
Code
IO.CanOpenInit(CanNo:=0,Baudrate:=125);
VAR Output | Typ | Bedeutung |
---|---|---|
Nicht verwendet |
2.) Verhalten im Fehlerfall -
AOutHandlingAfterStop()
Code
AOutHandlingAfterStop(Enable := TRUE);
VAR Input | Typ | Bedeutung |
---|---|---|
Enable | BOOL |
|
VAR Output | Typ | Bedeutung |
---|---|---|
Nicht verwendet |
3.) Verhalten im Fehlerfall -
AOutValueAfterStop()
Code
AOutValueAfterStop(Node := 1, Channel := 1, rValue:= 5000);
VAR Input | Typ | Bedeutung |
---|---|---|
Node | BYTE | Node-ID das anzusprechenden Slave |
Channel | UINT | Nummer des zu setzenden Ausgang (HE) |
rValue | REAL | Werte der gesetzt werden soll (im Beispiel: 5000 = 5 Volt am Ausgang ) |
VAR Output | Typ | Bedeutung |
---|---|---|
Nicht verwendet |
4.) Verhalten im Fehlerfall -
DoutHandlingAfterStop()
Code
DOutHandlingAfterStop(Enable := TRUE);
VAR Input | Typ | Bedeutung |
---|---|---|
Enable | BOOL |
|
VAR Output | Typ | Bedeutung |
---|---|---|
Nicht verwendet |
5.) Verhalten im Fehlerfall -
DOutValueAfterStop()
Code
DOutValueAfterStop(Node := 1, Channel := 1, xValue:= TRUE);
VAR Input | Typ | Bedeutung |
---|---|---|
Node | BYTE |
|
Channel | UINT |
|
xValue | REAL |
|
VAR Output | Typ | Bedeutung |
---|---|---|
Nicht verwendet |
6.) Wahl des Eingangs- Sensortyp -
AinConfigureType()
Code
IO.AInConfigureType(Node :=1, Channel := 1, eSensorType := ELA_IO_ITF.AIN_0_10VOLT);
VAR Input | Typ | Bedeutung |
---|---|---|
Node | BYTE | Node-ID das anzusprechenden Slave |
Channel | UINT | Nummer des zu setzenden Ausgang |
eSensorType | ELA_IO_ITF.AIN_SENSORTYPE | Sensortyp der gesetzt werden soll |
VAR Output | Typ | Bedeutung |
---|---|---|
Nicht verwendet |
7.) Wahl des Ausgangs- Sensortyp -
AoutConfigureType()
Code
IO.AOutConfigureType(Node := 1 , Channel := 1, eSensorType := ELA_IO_ITF.AOUT_0_10VOLT_NORMED);
VAR Input | Typ | Bedeutung |
---|---|---|
Node | BYTE | Node-ID das anzusprechenden Slave |
Channel | UINT | Nummer des zu setzenden Ausgang |
eSensorType | ELA_IO_ITF.AIN_SENSORTYPE | Sensortyp der gesetzt werden soll * Die Enumeration entnehmen sie bitte der Bibliothek “IO Interface |
VAR Output | Typ | Bedeutung |
---|---|---|
Nicht verwendet |
8.) Lesen eines digitalen Eingang -
Din()
Code
DigitalEingang01 := IO.Din(Node :=1 ,Channel:= 1);
VAR Input | Typ | Bedeutung |
---|---|---|
Node | BYTE | Node-ID das anzusprechenden Slave |
Channel | UINT | Nummer des zu lesenden Eingang |
VAR Output | Typ | Bedeutung |
---|---|---|
BOOL | Werte des angefragen Digitaleingangs |
9.) Schreiben eines digitalen Ausgang -
Dout()
Code
IO.Dout( ChannelNo := 1, bValue := DigitalAusgang01 );
VAR Input | Typ | Bedeutung |
---|---|---|
Node | BYTE | Nummer des zu setzenden Ausgang (HE) |
Channel | UINT | Nummer des zu setzenden Ausgang |
bValue | BOOL | Werte des Digitalausgang (TRUE/FALSE) |
VAR Output | Typ | Bedeutung |
---|---|---|
Nicht verwendet |
10.) CanOpen-Slave Betriebsbereit -
NodeActive()
Code
Slave01_OK := IO.NodeActice( NodeNo := 1 );
VAR Input | Typ | Bedeutung |
---|---|---|
NodeNo | BYTE | Knotennummer des zu detektierenden CanOpen- Teilnehmers |
VAR Output | Typ | Bedeutung |
---|---|---|
BOOL | CanOpen Teilnehmer betriebsbereit |
11.) CanOpen-Slave Betriebsbereit -
NodeState()
Code
Slave01_State := IO.NodeState( NodeNo := 1 );
VAR Input | Typ | Bedeutung |
---|---|---|
NodeNo | BYTE | Knotennummer des zu detektierenden CanOpen- Teilnehmers |
VAR Output | Typ | Bedeutung |
---|---|---|
BOOL |
|
12.) CanOpen-Slave Betriebsbereit -
SetNodeOptional()
Code
IO.SetNodeOptional( Node := 1 ; Optional := TRUE );
VAR Input | Typ | Bedeutung |
---|---|---|
Node | BYTE | Knotennummer des zu überwachenden CanOpen- Teilnehmers |
Optional | BYTE |
sollte der Slave nicht bereit sein * FALSE = der Master startet nicht, wenn ein Teilnehmer nicht bereit ist |
VAR Output | Typ | Bedeutung |
---|---|---|
nicht verwendet |
ACHTUNG: Das Ändern dieses Parameters auf FALSE ist nur bedingt sinnvoll.
Pre- Operational: Hier kann durch das Setzten auf FALSE der Master aufgefordert werden nicht zu startet.
Operational: Hier müssten Alle, auch die funktionierenden Teilnehmer zum Stillstand gezwungen werden.
Da dies so gut wie nicht im Sinne des Programmierers sein kann, wirkt diese Option im Betrieb nicht.
Verwenden sie zur Erkennung stattdessen die Methoden NodeActive(); oder NodeState();
13.) CanOpen-Slave Betriebsbereit -
UnforceCircleSend()
Code
IO.UnforceCircleSend( Node := 1 ; Optional := TRUE );
VAR Input | Typ | Bedeutung |
---|---|---|
Unforce | BOOL |
|
VAR Output | Typ | Bedeutung |
---|---|---|
nicht verwendet |
14.) Nodeguarding -
SetGuardTime()
Code
IO.SetGuardTime(Node:=2 , GuardTime:=1000 , Livetime:=4 );
VAR Input | Typ | Bedeutung |
---|---|---|
Node | BYTE |
|
GuardTime | WORD |
|
Livetime | BYTE |
|
VAR Output | Typ | Bedeutung |
---|---|---|
nicht verwendet |
15.) Verbundungsinformationen
Folgende Variablenwerte geben Rückschluss über den Baustein
IO.CAN_Itf.FBVersion;
Gibt Auskunft über die Bausteinversion z.B. „3.5.8.2“
IO.CAN_Itf.FBState;
Gibt Auskunft über den Verbindungzustand der Kommunikation des CanOpen.
„DISABLE“ := Baustein ist deaktiviert
„RUN“ := Baustein läuft, ist aber nicht verbunden
„WAIT“ := Verbindet sich gerade mit einem Gerät
„CONNECTED := Ist mindestens mit einem Gerät verbunden