Skip to main content

I began to add support for 4-digit addressing to the Python code I’ve developed to control TMCC and Legacy-equipped devices. It’s going to take a bit of work! Here are some initial observations:

  • The basic approach is to append the 4 digit address itself as 4 ascii bytes to the standard 3 byte TMCC2/Legacy commands. For example, to send the command Speed Step 1 to engine 5067, the byte sequence is: 0xF8000135303637. Note that the bits used to encode the 2 digit legacy address are set to zero...
  • It looks like all of the legacy commands documented in the LCS Legacy Protocol Spec (v1.22) are supported/can be sent.
  • As expected, the 4 digit commands are not echoed out via the LCS Ser 2
  • New PDI commands 0x2C and 0x2D are used to transmit to and receive from the Base 3 the 4-digit commands
  • New PDI commands have been added to read/write state changes to the Base 3
  • To the best of my knowledge, Lionel hasn't released any documentation that describes how to send/receive/process 4-digit commands
  • The Base 3 does not echo back all state changes commands

These last two bullet points will be the hardest to work with. I very much hope that Lionel will release documentation at some point that reduces the need for reverse engineering. Also, it will be important that all state changes are broadcast by the base three so as to keep connected devices, apprised of state changes.

On the bright side, I can now echo out four digit commands that I do receive!

00:11:43.517 [PDI Tmcc4_Rx [ENGINE 5067 FORWARD_DIRECTION (RX) (0xf8010035303637)] (0x2df8010035303637)]
00:11:43.517 [ENGINE 5067 FORWARD_DIRECTION (RX) (0xf8010035303637)]
00:11:43.610 [PDI Tmcc4_Rx [ENGINE 5067 ABSOLUTE_SPEED 0 (RX) (0xf8000035303637)](0x2df8000035303637)]
00:11:43.611 [ENGINE 5067 ABSOLUTE_SPEED 0 (RX) (0xf8000035303637)]


  -- Dave

Original Post

Add Reply

Post
×
×
×
×
Link copied to your clipboard.
×
×