Parameterization and commissioning
CX8050, CX8051 - Embedded-PCs for
CANopen and CAN
44
Version: 1.4
0 = No error
1 = Node deactivated
2 = Node not found
4 = SDO syntax error at StartUp
5 = SDO data mismatch at StartUp
8 = Node StartUp in progress
11 = FC510x Bus-OFF
12 = Pre-Operational
13 = Severe bus fault
14 = Guarding: toggle error
20 = TxPDO too short
22 = Expected TxPDO is missing
23 = Node is Operational but not all TxPDOs were received
The DiagFlag indicates whether an emergency telegram was received from the slave. The telegram can then
be read in the System Manager or the PLC via ADS (see ADS interface). Please consult the slave
manufacturer regarding interpretation of the data. The flag is reset once the Diag buffer was read.
The EmergencyCounter is incremented after each emergency telegram.
CAN Layer 2 communication
If you have selected this checkbox, the entire CANopen network management for this device is deactivated.
It is not started, monitored etc. The PDO inputs are detected as pure CAN (layer 2) telegrams and enable
the controller to operate in event driven mode.
CAN interface
Any CAN data can be sent via the CAN interface. There is a choice between 11-bit identifier (CAN 2.0A) or
29-bit identifier (CAN 2.0B).
Message structure with 29-bit support
• Length (0..8)
• CobId
◦ Bit 0-28: 11 Bit identifier / 29 Bit identifier
◦ Bit 30: RTR
◦ Bit 31: 0: normal Message (11 Bit Identifier), 1: extended Message (29 Bit-Identifier)
• Data[8]
Sending data: In NoOfTxMessages enter the number of data to be sent from the Tx buffer. If the buffer has
capacity for 10 entries, the maximum number of telegrams that can be send consecutively is 10. "Length"
defines the number of PDO data bytes (maximum 8 bytes). Enter the data, then enter the CAN message ID
in "codId". Now increment the TxCounter value.
Sample code: Sending messages from the PLC
if Outputs.TxCounter = Inputs.TxCounter then
for i=0 to NumberOfMessagesToSend do
Outputs.TxMessage[i] = MessageToSend[i];
End_for
Outputs.NoOfTxMessages = NumberOfMessagesToSend;
Outputs.TxCounter := Outputs.TxC 1;
end_if
Sample code: Receiving messages from the PLC
if Outputs.RxCounter <> Inputs.RxCounter then
for i := 0 to (Inputs.NoOfRxMessages-1) do
MessageReceived[i] := Inputs.RxMessage [i];
End_for
Outputs.RxCounter := Outputs.Rx1;
end_if
Also see about this
2
2
Summary of Contents for CX8050
Page 2: ......