CAN-bus communication. TechnoCAN protocol |
TechnoCAN is an alternate protocol to TMLCAN – the default CAN-bus protocol for the Technosoft drives/motors without CANopen. TechnoCAN was specifically designed to permit connection of the Technosoft drives/motors without CANopen on a CANopen network where messages are exchanged using CANopen protocol. TechnoCAN and CANopen do not disturb each other and therefore can co-exist on the same physical bus. On request, the Technosoft drives/motors without CANopen may be delivered with TechnoCAN protocol. The difference between the drives/motors with TMLCAN protocol and those with TechnoCAN protocol is done only through the firmware: all the Technosoft products equipped with TechnoCAN have a firmware number starting with 2 i.e. a firmware code is F2xxY, where 2xx is the firmware number and Y is the firmware revision. TechnoCAN is based on CAN2.0A using 11 bits for the identifier. It accepts the following baud rates: 125kb, 250kb, 500kb (default after reset), 800kb and 1Mb. Like TMLCAN, TechnoCAN offers the possibility to connect a PC via a serial RS-232 link to any drive/motor from the CANopen network and through it to access all the Technosoft drives/motors. In this case, this drive/motor connected both to CAN-bus and RS-232 becomes a relay axis (see Communication protocols – Overview for details)
In TechnoCAN the TML instructions are split into 8 categories:
Each category is mapped in the following range of COB-ID (Communication Object Identifier – CANopen terminology for a CAN message identifier): TechnoCAN uses only COB-IDs outside of the range used by CANopen. Thus, TechnoCAN protocol and CANopen protocol can co-exist and communicate simultaneously on the same physical CAN bus, without disturbing each other.
The next table shows how TechnoCAN COB-IDs are assigned in relation with the CANopen COB-IDs.
CANOpen and TechnoCAN COB-IDs
Remarks: In comparison with TMLCAN, TechoCAN has the following restrictions:
Normal messages encapsulation: COB-ID: 121h – 13Fh Host messages encapsulation: COB-ID: 141h – 15Fh Remark: Host messages occur only when a drive/master answers to a data request (other then “GiveMeData”) where the Sender Axis ID has the HOST bit set to 1. This happens for example when the host is a PC connected to one of the drives/motors via RS-232 and asks a data from another drive/motor. The answer will be sent to the relay axis as a Host message. The Host messages do not occur when the request is sent by a drive or by a host/master connected directly on the CAN bus. Take Data messages encapsulation: COB-ID: 161h – 17Fh Remarks: In the Take Data messages, the 10-byte code of the Take Data TML instruction is compacted to 8-bytes. This is done in the following way:
Group messages encapsulation: COB-ID: 001h – 01Fh PVT messages encapsulation: COB-ID: 041h – 05Fh Remarks: In the PVT messages, the 10-byte code of the PVT TML instruction is compacted to 8-bytes. This is done in the following way:
Synchronization messages encapsulation: COB-ID: 020h Remarks:
Broadcast messages encapsulation: COB-ID: 200h
Take Data 2 messages encapsulation: COB-ID: 101h – 11Fh Remarks:
Example 1: A host connected on a CANopen network sends to drive/motor with axis ID = 5 the TML instruction “KPP = 0x1234” (set proportional part of the position controller with value 0x1234). The Axis ID Code and the TML instruction binary code are: Binary code of TML instruction KPP =0x1234 Remark: Use Binary Code Viewer to get the binary code of TML instructions
The host must send a TechnoCAN message with the following contents: TechnoCAN message: TML instruction KPP =0x1234 sent to axis 5 Remark: The last 4 bytes are not used and are not transmitted
Example 2: A host connected on a CANopen network wants to get the value of the position error from the drive/motor with the axis ID=5. The host axis ID is 3. The position error is the 16-bit TML variable named POSERR and its address in the TML data memory is 0x022A. The host sends to axis 5 a “GiveMeData” request for the TML variable POSERR and waits for the “TakeData” answer. The Axis ID Code and the binary code of “GiveMeData” request for POSERR are: Binary code of GiveMeData request for POSERR value sent to axis 5 The host must send a TechnoCAN message with the following contents: TechnoCAN message: GiveMeData request for POSERR value sent to axis 5 Remark: The last 2 byes are not used and are not transmitted. Supposing that the drive/motor with Axis ID = 5 returns a position error POSERR = 2, the Axis ID Code and the binary code of the “TakeData” answer is: Binary code of TakeData with POSERR value from axis 5 The host gets a TechnoCAN message with the following contents: TechnoCAN message: TakeData with POSERR value from axis 5 Remark: The last 2 byes are not used and are not transmitted. Example 3: A PVT command is sent to the drive with the axis ID 5 like following: pvtp -1000L, -10, 500U, 0 (set the coordinates for the next point the position at -1000 IU = 0,5 rot = FFFC18h, the speed at -10IU = 300 rpm = FFF600 and the time 500IU = 0,5s = 01F4 ). Binary code of PVT command sent to axis 5 The TechnoCAN message sent has the following contents: TechnoCAN message: PVT command for axis 5 Example 4: If a Technosoft drive/motor receives the TML instruction SETSYNC 20, it becomes the synchronization master and starts sending every 20ms a synchronization message and its time to the all drives connected in the CAN bus network. At a moment the master time has the value 0x246C46F and the code of TML instruction is the following: Binary code of Set Master Time command sent to all axes The TechnoCAN messages are:
TechnoCAN message: Synchronization command for all axes Remark: The last 8 bytes are not used and are not transmitted.
TechnoCAN message: Set Master Time command to all axes Example 5: If for example the axis 2 encounters a control error, the drive sends a message with the value of the error register MER (0x0008) with a TakeData2 instruction which has the following content: Binary code of TakeData 2 with MER register value from axis 2 Remark: The VT bit is set to zero The TechnoCAN message sent has the following contents: TechnoCAN message: TakeData2 command from axis 2 Remark: The last 3 byes are not used and are not transmitted. See also: Communication protocols – Overview Message structure. Axis ID and Group ID |