Difference between revisions of "CanServo/Protocol/V1.1"

From HITEC_HELP
Jump to navigation Jump to search
Line 24: Line 24:


* Message: Host -> Servo
* Message: Host -> Servo
** ZUW1, <UID : 16 byte>, <ADDR : 2 byte>, <DATA : 2 byte>
** ZUW1, < UID : 16 byte >, < ADDR : 2 byte >, < DATA : 2 byte >
** ZUW2, <UID : 16 byte>, <ADDR1 : 2 byte>, <DATA1 : 2 byte>, <ADDR2 : 2 byte>, <DATA2 : 2 byte>
** ZUW2, < UID : 16 byte >, < ADDR1 : 2 byte >, < DATA1 : 2 byte >, < ADDR2 : 2 byte >, < DATA2 : 2 byte >
** ZUX1, <UID : 16 byte>, <ADDR : 2 byte>, <DATA : 2 byte>
** ZUX1, < UID : 16 byte >, < ADDR : 2 byte >, < DATA : 2 byte >
** ZUX2, <UID : 16 byte>, <ADDR1 : 2 byte>, <DATA1 : 2 byte>, <ADDR2 : 2 byte>, <DATA2 : 2 byte>
** ZUX2, < UID : 16 byte >, < ADDR1 : 2 byte >, < DATA1 : 2 byte >, < ADDR2 : 2 byte >, < DATA2 : 2 byte >
** ZUR1, <UID : 16 byte>, <ADDR : 2 byte>
** ZUR1, < UID : 16 byte >, < ADDR : 2 byte >
** ZUR2, <UID : 16 byte>, <ADDR1 : 2 byte>, <ADDR2 : 2 byte>
** ZUR2, < UID : 16 byte >, < ADDR1 : 2 byte >, < ADDR2 : 2 byte >


* Message : Servo -> Host
* Message : Servo -> Host
** ZUV1, <UID : 16 byte>, <ADDR : 2 byte>, <DATA : 2 byte>
** ZUV1, < UID : 16 byte >, < ADDR : 2 byte >, < DATA : 2 byte >
** ZUV2, <UID : 16 byte>, <ADDR1 : 2 byte>, <DATA1 : 2 byte>, <ADDR2 : 2 byte>, <DATA2 : 2 byte>
** ZUV2, < UID : 16 byte >, < ADDR1 : 2 byte >, < DATA1 : 2 byte >, < ADDR2 : 2 byte >, < DATA2 : 2 byte >


== MultiPacket for Long Message ==
== MultiPacket for Long Message ==

Revision as of 05:33, 27 June 2024

Under construction

CAN Protocol Ver 1.1

  • This protocol needs FW Ver 1.12+
  • The purpose of this message is to set the servo's ID based on the servo's UID.
  • CAN ID
    • 0x7FF : Servo -> Host
    • 0x7FE : Host -> Servo
  • Message : Servo -> Host
    • ZUID, <UID : 16 byte>, <ID2 : 4 byte>, <ID1 : 1 byte>, <CAN Mode : 1 byte>
  • Message: Host -> Servo
    • ZIDS, <UID : 16 byte>, <ID2 : 4 byte>
    • ZIDS, <UID : 16 byte>, <ID2 : 4 byte>, <ID1 : 1 byte>
    • ZIDS, <UID : 16 byte>, <ID2 : 4 byte>, <ID1 : 1 byte>, <CAN Mode : 1 byte>
  • This message is delivered using the MultiPacket method below.

CAN Protocol Ver 1.2

  • Message: Host -> Servo
    • ZUW1, < UID : 16 byte >, < ADDR : 2 byte >, < DATA : 2 byte >
    • ZUW2, < UID : 16 byte >, < ADDR1 : 2 byte >, < DATA1 : 2 byte >, < ADDR2 : 2 byte >, < DATA2 : 2 byte >
    • ZUX1, < UID : 16 byte >, < ADDR : 2 byte >, < DATA : 2 byte >
    • ZUX2, < UID : 16 byte >, < ADDR1 : 2 byte >, < DATA1 : 2 byte >, < ADDR2 : 2 byte >, < DATA2 : 2 byte >
    • ZUR1, < UID : 16 byte >, < ADDR : 2 byte >
    • ZUR2, < UID : 16 byte >, < ADDR1 : 2 byte >, < ADDR2 : 2 byte >
  • Message : Servo -> Host
    • ZUV1, < UID : 16 byte >, < ADDR : 2 byte >, < DATA : 2 byte >
    • ZUV2, < UID : 16 byte >, < ADDR1 : 2 byte >, < DATA1 : 2 byte >, < ADDR2 : 2 byte >, < DATA2 : 2 byte >

MultiPacket for Long Message

  • The first step is to calculate the CRC16 of the message and add it to the end to create the content to be sent.
  • Send (maximum) 7 bytes extracted from the content to be sent and a Check Byte.
  • Multi Packet's Data Format
    • < Data : max 7 byte, cut from 'Message + CRC16' >, <Check Byte>
    • Check Byte
      • bit 7 = 1, if first packet
      • bit 6 = 1, if last packet
      • bit 5 = Toggle, first packet = 1, toggle bit on each packet
      • bit 4:0 = Seq, 0 ~ 31, inc 1 on each message
  • Note:
    • ID2, CRC16 : byte order : low byte first, little endian

FD-CAN

  • FD-CAN allows up to 64 bytes to be transmitted, so up to 63 bytes can be extracted at a time.
  • This approach has not yet been implemented.