Manufacturer's Code to CAN Hex Translation?
  • 0
  • Hello to the Forum!

    I'm in the process of trying to integrate a device known as an "ePark" with one of our electric cars. The ePark does exactly that - it's a small electric motor with its own CAN bus that puts the car in PARK once it receives its CAN command. I have all of the documentation and command structures from the Manufacturer, but boy am I absolutely lost as to how to put the command into Hex(?) format that I can then send through the Canbus Triple software.

    Please keep in mind that I'm beyond new to virtually all of this, having been thrown into the deep end here at work and told to "Make that Park Motor shift". I did the research and saw the CAN Bus Triple as finally being a way to try and send commands to the ePark's CAN. I'm still confused as to how to properly translate (parse?) commands through the software:

    For example, I'm used to seeing this with a CAN sniffer:

    Message ID: 0x80
    Data: 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37

    BUT: The documentation to send a command to "PARK" looks like this in the documentation:

    Message $308 (DMC_TCM_SHIFT)

    Name: parkrequest
    Startbit: 5
    Length (Bit): 2
    Value Type: Unsigned
    Init Value: 0
    Factor: 1
    Min: 0
    Max: 2
    Unit: -
    Comments: 0-off, 1-park, 2-unpark. Byte Order Intel.

    Name: MotorSpd
    Startbit: 8
    Length (Bit): 16
    Value Type: Unsigned
    Init Value: -16064
    Factor: 0.5
    Min: -16064
    Max: 16064
    Unit: rpm
    Comments: Used for vehicle speed qualification of parking pawl engage speed. Allow engage if aba(motorRPM) < 200 RPM. Offset: -16064 Byte Order Intel.

    I have absolutely no clue how to properly send this through the CanBus Triple into the ePark system. Total noob.

    Any help would be greatly appreciated!

    Best regards (and feeling like my head's exploding),

    -James

  • 0
  • Hey James,

    I'm not sure how much help I'll be, but I'll give it a shot.

    I found this PDF that I'm assuming is for the same device:
    http://media3.evtv.me/egearCANbus.pdf - Page 8 being of particular importance for this message.

    I'm guessing the Message ID is 0x308 based on the $308.

    Typically you're looking at an 8 byte payload. That's 64 bits of payload.

    There are two parts to the message: bits 5-7 are the parkrequest section and bits 8-16 are the MotorSpd section. I would assume that bits 0-5 are simply ignored and can be left as 0's. parkrequest is 0x01 for park. MotorSpd can be left as 0's for now.

    The byte order Intel means that it's <a href="https://en.wikipedia.org/wiki/Endianness#Little-endian">little-endian</a>.

    So putting that all together, we have a message ID of 0x308 and a payload of 0000000001000000(b) == 0x40(h). So I'd try sending: MsgID=0x308 with payload=0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x00

    If that doesn't work, I'd try switching the endianness. Best of luck getting it going! Maybe someone else will have some more tips if that doesn't work.

    *Trevor

  • 0
  • Trevor,

    Thank you so very much! This is the first time I've seen it broken down - is there any where else I can learn more about properly phrasing code to talk to the CAN Bus? This is a huge help - I feel like that South Park episode - Step 1: CanBus Step 2: (Blank), Step 3: Running CANbus!

    We'll give this a shot and see what happens. You were bang on finding that PDF, that is the exact unit we're working with. The biggest challenge while bench-testing is to somehow feed the unit it's 'safety requirements' (motor speed <250) in order to get through gates to enable us to try its working functions.

    Off to experiment,

    -James

  • 3
    Posts
  • 744
    Views
  • Log in to reply