ProjectInfo (PRG)¶
PROGRAM ProjectInfo
Die Projektinfo ist eine Ansammlung zur Anwendung der Klasse im ProgrammCode.
Note
Die Beschreibung ist Beispielhaft und an das Projekt CanOpenMaster angelehnt.
***********************************************************************************************************************************************************
- Einbinden des Bibliothek CanOpenCheck -> Typische vorgehensweise:
1.) Einbinden der Bibliothek und Instanzierung des FB’s
VAR:
_CanOpenCheck : ELA_CANOpenCheck.CanOpenCheck_FB;2.) Anlegen der Rückgabevariablen im Projekt
VAR:
pzaDeviceState : POINTER TO ARRAY [0..3] OF CIA405.DEVICE_STATE; // DEVICESTATEpzaLocalCanState : POINTER TO ARRAY [0..3] OF CIA405.CANOPEN_KERNEL_ERROR; // DEVICEERRORDer FB gibt die Informationen für Devices 0(Master)..127(Slaves) bekannt.
Da die Rückgabe über Pointer erfolgt, kann das Array der eigen Applikation kleiner ausfallen.
| 0 | Master |
| 1..127 | Slaves |
3.) Versorgen der Bausteineingänge
Code:
_CanOpenCheck._wCANTimeout := wCANTimeout; (* Timoutzeit in ms. Default = 50; Abweichenden Wert hier einmalig angeben *)_CanOpenCheck._byNetzwerk := 1 ; // CanController, 1:= CAN0, 2:= CAN1 ....``_CanOpenCheck._MaxNodeID := 3 ; // ``
4.) Aufruf der Methode
_CanOpenCheck();5.) Abfrage der eigenen Node ID
Code:
_CanOpenCheck._byLocalID;6.) Abfrage des Gerätestatus
Code:
pzaDeviceState^[0]; // Debugausgabe: Status MASTER"pzaDeviceState^[1]; // Debugausgabe: Status Slave ID 1pzaDeviceState^[2]; // Debugausgabe: Status Slave ID 27.) Abfrage des CanStatus
Code:
pzaLocalCanState^[0]; // Debugausgabe: Kernel Status MASTERpzaLocalCanState^[1]; // Debugausgabe: Kernel Status Slave ID 1pzaLocalCanState^[2]; // Debugausgabe: Kernel Status Slave ID 2***********************************************************************************************************************************************************
- Beispiele
1.) Aussprung wenn Slave ID1 nicht bereit
Code:
IF pzaDeviceState^[1] <> CIA405.DEVICE_STATE.OPERATIONALTHENRETURNEND_IF***********************************************************************************************************************************************************
- Typische Device States
| ENUM | Bedeutung: | Wert |
|---|---|---|
| INIT | 0 | |
| RESET_COMM | 1 | |
| RESET_APP | 2 | |
| PRE_OPERATIONAL | 3 | |
| STOPPED | 4 | |
| OPERATIONAL | 5 | |
| UNKNOWN | 6 | |
| NOT_AVAIL | 7 |
- Typische Kernal Errors
| ENUM | Bedeutung: | Wert |
|---|---|---|
| CANOPEN_KERNEL_NO_ERROR | There is no error | 0 |
| CANOPEN_KERNEL_OTHER_ERROR | More information is provided by output ERRORINFO. | 1 |
| CANOPEN_KERNEL_DATA_OVERFLOW | Lost counter or Tx/Rx error counter is above 0. | 2 |
| CANOPEN_KERNEL_TIMEOUT | A timeout occurred. | 3 |
| CANOPEN_KERNEL_CANBUS_OFF | CAN Bus is in BUSOFF or busalarm state. | 4 |
| CANOPEN_KERNEL_CAN_ERROR_PASSIVE | CAN Bus is in Error Passive state | 5 |
| CANOPEN_INTERNAL_FB_ERROR | internal error | 6 |
| CANOPEN_NO_MORE_MEMORY | There is not enough memory. | 7 |
| CANOPEN_WRONG_PARAMETER | Wrong parameter passed to the function | |
| CANOPEN_NODEID_UNKNOWN | Unknown NodeID. | |
| CANOPEN_NETID_UNKNOWN | Unknown CAN Network ID (not part of I/O config | |
| CANOPEN_REQUEST_ERROR | A request error happened. | |
| CANOPEN_SDOCHANNEL_UNKNOWN | Unknown SDO channel. | |
| CANOPEN_NO_DRIVER | CAN Driver not found. | |
| CANOPEN_CONFIGURATION_ERROR | At least one SDO abort in configuration phase of a slave. | |
| CANOPEN_GUARDING_ERROR | A guarding error (Heartbeat or Nodeguarding) |