.. first line of object.rst template .. first line of pou-object.rst template .. first line of prg-object.rst template .. <% set key = ".fld-Project Information.ProjectInfo" %> .. _`.fld-Project Information.ProjectInfo`: .. <% merge "object.Defines" %> .. <% endmerge %> .. _`ProjectInfo`: ProjectInfo (PRG) ----------------- PROGRAM ProjectInfo .. <% merge "object.Doc" %> | 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);`` | | .. table:: Eingangsvariablen +--------------+----------------------+--------------------------------------------------------------------------------------+ | VAR Input | Typ | Bedeutung | +==============+======================+======================================================================================+ | CanNo | BYTE | * Nummer des Can-Controllers (0 /1) | | | | * 0 := erster CANController CAN0 | | | | * 1 := zweiter CANController CAN1 | | | | * >1 := Deaktiviert den Kommunikationsbaustein | | | | | +--------------+----------------------+--------------------------------------------------------------------------------------+ | Baudrate | WORD | * Baudrate | | | | * Unterstützt, je nach Gerät : 10,20,50,100,125,250,500,1000 bkb | | | | * 0 := Deaktiviert den Kommunikationsbaustein | | | | * >1001 := Deaktiviert den Kommunikationsbaustein | +--------------+----------------------+--------------------------------------------------------------------------------------+ | .. table:: Ausgangsvariablen +--------------+----------------------+--------------------------------------------------------------------------------------+ | VAR Output | Typ | Bedeutung | +==============+======================+======================================================================================+ | | | Nicht verwendet | +--------------+----------------------+--------------------------------------------------------------------------------------+ | | 2.) Verhalten im Fehlerfall - ``AOutHandlingAfterStop()`` | | Code | ``AOutHandlingAfterStop(Enable := TRUE);`` | .. table:: Eingangsvariablen +--------------+----------------------+--------------------------------------------------------------------------------------+ | VAR Input | Typ | Bedeutung | +==============+======================+======================================================================================+ | Enable | BOOL | * Legt fest, daß es nach Steuerung STOP eine Individuelle Konfiguration gibt. | | | | * FALSE: Alle Analogausgänge werden auf NULL gesetzt | | | | * TRUE : Es ist im Stop-Fall der Werte der Methode AoutValueAfterStop() zu verwenden | +--------------+----------------------+--------------------------------------------------------------------------------------+ | .. table:: Ausgangsvariablen +--------------+----------------------+--------------------------------------------------------------------------------------+ | VAR Output | Typ | Bedeutung | +==============+======================+======================================================================================+ | | | Nicht verwendet | +--------------+----------------------+--------------------------------------------------------------------------------------+ | | 3.) Verhalten im Fehlerfall - ``AOutValueAfterStop()`` | | Code | ``AOutValueAfterStop(Node := 1, Channel := 1, rValue:= 5000);`` | .. table:: Eingangsvariablen +--------------+----------------------+--------------------------------------------------------------------------------------+ | 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 ) | +--------------+----------------------+--------------------------------------------------------------------------------------+ | .. table:: Ausgangsvariablen +--------------+----------------------+--------------------------------------------------------------------------------------+ | VAR Output | Typ | Bedeutung | +==============+======================+======================================================================================+ | | | Nicht verwendet | +--------------+----------------------+--------------------------------------------------------------------------------------+ | | 4.) Verhalten im Fehlerfall - ``DoutHandlingAfterStop()`` | | Code | ``DOutHandlingAfterStop(Enable := TRUE);`` | .. table:: Eingangsvariablen +--------------+----------------------+--------------------------------------------------------------------------------------+ | VAR Input | Typ | Bedeutung | +==============+======================+======================================================================================+ | Enable | BOOL | * Legt fest, daß es nach Steuerung STOP eine Individuelle Konfiguration gibt. | | | | * FALSE: Alle Analogausgänge werden auf NULL gesetzt | | | | * TRUE : Es ist im Stop-Fall der Werte der Methode AoutValueAfterStop() zu verwenden | +--------------+----------------------+--------------------------------------------------------------------------------------+ | .. table:: Ausgangsvariablen +--------------+----------------------+--------------------------------------------------------------------------------------+ | VAR Output | Typ | Bedeutung | +==============+======================+======================================================================================+ | | | Nicht verwendet | +--------------+----------------------+--------------------------------------------------------------------------------------+ | | 5.) Verhalten im Fehlerfall - ``DOutValueAfterStop()`` | | Code | ``DOutValueAfterStop(Node := 1, Channel := 1, xValue:= TRUE);`` | .. table:: Eingangsvariablen +--------------+----------------------+--------------------------------------------------------------------------------------+ | VAR Input | Typ | Bedeutung | +==============+======================+======================================================================================+ | Node | BYTE | * Node-ID das anzusprechenden Slave | +--------------+----------------------+--------------------------------------------------------------------------------------+ | Channel | UINT | * Nummer des zu setzenden Ausgang | +--------------+----------------------+--------------------------------------------------------------------------------------+ | xValue | REAL | * Werte der gesetzt werden soll | +--------------+----------------------+--------------------------------------------------------------------------------------+ | .. table:: Ausgangsvariablen +--------------+----------------------+--------------------------------------------------------------------------------------+ | 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);`` | | .. table:: Eingangsvariablen +--------------+---------------------------+---------------------------------------------------------------------------------------+ | 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 | +--------------+---------------------------+---------------------------------------------------------------------------------------+ | .. table:: Ausgangsvariablen +--------------+----------------------+--------------------------------------------------------------------------------------------+ | 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);`` | | .. table:: Eingangsvariablen +--------------+---------------------------+---------------------------------------------------------------------------------------+ | 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 | +--------------+---------------------------+---------------------------------------------------------------------------------------+ | .. table:: Ausgangsvariablen +--------------+----------------------+--------------------------------------------------------------------------------------------+ | VAR Output | Typ | Bedeutung | +==============+======================+============================================================================================+ | | | Nicht verwendet | +--------------+----------------------+--------------------------------------------------------------------------------------------+ | | | 8.) Lesen eines digitalen Eingang - ``Din()`` | | Code | ``DigitalEingang01 := IO.Din(Node :=1 ,Channel:= 1);`` | | .. table:: Eingangsvariablen +--------------+---------------------------+--------------------------------------------------------------------------------------+ | VAR Input | Typ | Bedeutung | +==============+===========================+======================================================================================+ | Node | BYTE | Node-ID das anzusprechenden Slave | +--------------+---------------------------+--------------------------------------------------------------------------------------+ | Channel | UINT | Nummer des zu lesenden Eingang | +--------------+---------------------------+--------------------------------------------------------------------------------------+ | .. table:: Ausgangsvariablen +--------------+----------------------+-------------------------------------------------------------------------------------------+ | VAR Output | Typ | Bedeutung | +==============+======================+===========================================================================================+ | | BOOL | Werte des angefragen Digitaleingangs | +--------------+----------------------+-------------------------------------------------------------------------------------------+ | | | 9.) Schreiben eines digitalen Ausgang - ``Dout()`` | | Code | ``IO.Dout( ChannelNo := 1, bValue := DigitalAusgang01 );`` | | .. table:: Eingangsvariablen +--------------+---------------------------+--------------------------------------------------------------------------------------+ | 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) | +--------------+---------------------------+--------------------------------------------------------------------------------------+ | .. table:: Ausgangsvariablen +--------------+----------------------+-------------------------------------------------------------------------------------------+ | VAR Output | Typ | Bedeutung | +==============+======================+===========================================================================================+ | | | Nicht verwendet | +--------------+----------------------+-------------------------------------------------------------------------------------------+ | | | 10.) CanOpen-Slave Betriebsbereit - ``NodeActive()`` | | Code | ``Slave01_OK := IO.NodeActice( NodeNo := 1 );`` | | .. table:: Eingangsvariablen +--------------+---------------------------+--------------------------------------------------------------------------------------+ | VAR Input | Typ | Bedeutung | +==============+===========================+======================================================================================+ | NodeNo | BYTE | Knotennummer des zu detektierenden CanOpen- Teilnehmers | +--------------+---------------------------+--------------------------------------------------------------------------------------+ | .. table:: Ausgangsvariablen +--------------+----------------------+-------------------------------------------------------------------------------------------+ | VAR Output | Typ | Bedeutung | +==============+======================+===========================================================================================+ | | BOOL | CanOpen Teilnehmer betriebsbereit | +--------------+----------------------+-------------------------------------------------------------------------------------------+ | | | 11.) CanOpen-Slave Betriebsbereit - ``NodeState()`` | | Code | ``Slave01_State := IO.NodeState( NodeNo := 1 );`` | | .. table:: Eingangsvariablen +--------------+---------------------------+--------------------------------------------------------------------------------------+ | VAR Input | Typ | Bedeutung | +==============+===========================+======================================================================================+ | NodeNo | BYTE | Knotennummer des zu detektierenden CanOpen- Teilnehmers | +--------------+---------------------------+--------------------------------------------------------------------------------------+ | .. table:: Ausgangsvariablen +--------------+----------------------+------------------------------------------------------------------------------------------+ | VAR Output | Typ | Bedeutung | +==============+======================+==========================================================================================+ | | BOOL | * Status des CanOpen Teilnehmer | | | | * 0..4 = Pre- Operational. Teilnehmer startet | | | | * 5 = OPERATIONAL. Teilnehmer Bertriebsbereit | | | | * 6..99 = Teilnehmer nicht gefunden oder in Störung | +--------------+----------------------+------------------------------------------------------------------------------------------+ | | | 12.) CanOpen-Slave Betriebsbereit - ``SetNodeOptional()`` | | Code | ``IO.SetNodeOptional( Node := 1 ; Optional := TRUE );`` | | .. table:: Eingangsvariablen +--------------+---------------------------+--------------------------------------------------------------------------------------+ | VAR Input | Typ | Bedeutung | +==============+===========================+======================================================================================+ | Node | BYTE | Knotennummer des zu überwachenden CanOpen- Teilnehmers | +--------------+---------------------------+--------------------------------------------------------------------------------------+ | Optional | BYTE | * Setzt einzelner CanOpen- Teilnehmer auf den Attribut "Optional" | | | | * TRUE = (Default) der CanOpen Master startet dennoch, | | | | sollte der Slave nicht bereit sein | | | | * FALSE = der Master startet nicht, wenn ein Teilnehmer nicht bereit ist | +--------------+---------------------------+--------------------------------------------------------------------------------------+ | .. table:: Ausgangsvariablen +--------------+----------------------+------------------------------------------------------------------------------------------+ | 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 );`` | | .. table:: Eingangsvariablen +--------------+---------------------------+--------------------------------------------------------------------------------------+ | VAR Input | Typ | Bedeutung | +==============+===========================+======================================================================================+ | Unforce | BOOL | * TRUE = Werte werden nur bei Änderung übertragen | | | | * FALSE = Werte werden bei Änderung und Zyklisch übertragen (sicherer) | +--------------+---------------------------+--------------------------------------------------------------------------------------+ | .. table:: Ausgangsvariablen +--------------+----------------------+-------------------------------------------------------------------------------------------+ | VAR Output | Typ | Bedeutung | +==============+======================+===========================================================================================+ | | | nicht verwendet | +--------------+----------------------+-------------------------------------------------------------------------------------------+ | | | | 14.) Nodeguarding - ``SetGuardTime()`` | | Code | ``IO.SetGuardTime(Node:=2 , GuardTime:=1000 , Livetime:=4 );`` | | .. table:: Eingangsvariablen +--------------+---------------------------+--------------------------------------------------------------------------------------+ | VAR Input | Typ | Bedeutung | +==============+===========================+======================================================================================+ | Node | BYTE | * SlaveNo | | | | | +--------------+---------------------------+--------------------------------------------------------------------------------------+ | GuardTime | WORD | * Nodeguardingzeit in ms. In diesem Anstand sendet der Master ein Guard-Telegramm | | | | an den Slave | +--------------+---------------------------+--------------------------------------------------------------------------------------+ | Livetime | BYTE | * Lifetime-Faktor. Nach Guardtime x Lifetimefactor kein Telegrammempfang | | | | geht der Slave in Störung | +--------------+---------------------------+--------------------------------------------------------------------------------------+ | .. table:: Ausgangsvariablen +--------------+----------------------+-------------------------------------------------------------------------------------------+ | 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 | .. <% endmerge %> .. <% merge "object.iotbl" %> .. <% endmerge %> .. last line of prg-object.rst template .. last line of pou-object.rst template .. last line of object.rst template