AAR LCCM Use Cases Locomotive Command and Control Module (LCCM) Use Cases Version 1.0 Table of Contents 1.0 Establish Controlling Application to LCCM Communication Link ..................................................... 2 2.0 LCCM Discovery by Controlling Application ...................................................................................... 3 3.0 Monitor Mode................................................................................................................................... 4 4.0 Engage Auto ...................................................................................................................................... 6 5.0 Disengage Auto ................................................................................................................................. 9 6.0 Direct Control .................................................................................................................................. 11 7.0 Exit................................................................................................................................................... 13 8.0 Alternate Flow A: LCCM Discovery over Class D connection .......................................................... 14 9.0 Exception Flows .............................................................................................................................. 15 9.1 Exception Flow A: Communication Loss Between Controlling Application and LCCM .......... 15 9.2 Exception Flow B: Failure to apply Controlling Application Command Critical Fault ............. 17 9.3 Exception Flow C: Failure to Meet Criteria to transition to Auto ........................................... 19 9.4 Exception Flow D: Simultaneous Throttle and DB command ................................................ 20 9.5 Exception Flow E: Communication Loss Between Controlling Application and LCCM While in Monitor Mode............................................................................................................................................. 21 9.6 Exception Flow F: Failure of LCCM to Authenticate Controlling Application ......................... 22 9.7 Exception Flow G: Communication Loss Between Controlling Application and LCCM In Direct Control…. .................................................................................................................................................... 23 10.0 Recovery Flows ............................................................................................................................... 25 10.1 Recovery Flow A: Invalid Command Provide by Controlling Application ............................... 25 10.2 Recovery Flow B: Message Integrity Failure........................................................................... 27 10.3 Recovery Flow C: Failure to apply Command Non-Critical Fault ............................................ 28 Appendix A: LCCM State Transition Diagram.............................................................................................. 29 Appendix B: LCCM Asynchronous Messaging Sequence Diagram .............................................................. 30 1 AAR LCCM Use Cases 1.0 Establish Controlling Application to LCCM Communication Link Identifier: UC 1 Description: The process to establish a Controlling Application to LCCM communication link, which consist of establishing the EMP Class D link, and Controlling Application authentication. Preconditions: (Default State) Operational Controlling Application with Operational Private Key, and Operational LCCM with List of allowable Operational Private Keys. Post-conditions: Controlling Application to LCCM communication link is established and Controlling Application is authenticated. Controlling application commands the LCCM to Monitor Mode. Main Flow: 1. LCCM opens TCP Port 3600 and listens for Class D socket request. 2. Controlling Application establishes Class D socket on TCP Port 3600 at IP address 10.255.255.50 per Class D Specification S-9356. 3. Controlling Application transmits Authentication Request Message (652) populated with Controlling Application identification parameters. 4. LCCM generates 128 bit random number (b) and calculates LCCM Public Key (𝐵 = 𝑞 𝑏 𝑚𝑜𝑑 𝑝) 5. LCCM transmits Authentication Response Message (752) with LCCM Public Key and hard coded p and q values. 6. Controlling Application generates 128 bit random number (a), calculates Controlling Application public key(𝐴 = 𝑞 𝑎 𝑚𝑜𝑑 𝑝), calculates encryption key (𝑆 = 𝐵 𝑎 𝑚𝑜𝑑 𝑝) and encrypts OPK using encryption key and AES-128 CBC Algorithm. 7. Controlling Application transmits Authentication Data Message (653) containing Controlling Application Public Key and encrypted OPK. 8. LCCM calculates encryption key (𝑆 = 𝐴𝑏 𝑚𝑜𝑑 𝑝) and decrypts OPK using key. 9. LCCM verifies decrypted OPK is on LCCM OPK list. [9.6 Exception Flow F: Failure of LCCM to Authenticate Controlling Application] 10. LCCM transmits Authentication Data Response Message (753) with Authentication Status set to Authentication Accepted. 11. LCCM logs Controlling Application identification. 2 AAR LCCM Use Cases 2.0 LCCM Discovery by Controlling Application Identifier: UC 2 Description: The process of Controlling Application discovering LCCMs and their configurations. Preconditions: LCCM is powered up in any state. Post-conditions: Controlling Application discovers connected LCCMs. LCCM stays in the same state, no transition. Main Flow: 1. LCCM registers with the ICR via the M-9154A specification. 2. Controlling Application obtains routes for all LCCMs via ICC Router (M-9154A) 3. Controlling Application transmits Locomotive Command Module Status Request message via the ICR over EMP Class C link via ICR. [8.0 Alternate Flow A: LCCM Discovery over Class D connection] a. Controlling Application will communicate directly (not thru ICR) with the LCCM on the lead locomotive 4. LCCM receives message and verifies message is valid a. EMP Message ID 651 b. CRC-32 is valid 5. Within 1000 ms of receiving the Locomotive Command Module Status Request message, the LCCM transmits a Locomotive Command Module Status via the ICR (LCCM on lead locomotive will communicate directly to Controlling Application) over the EMP Class C link via ICR. a. EMP Header Message Number field shall be populated with the EMP Header Message Number received in the Locomotive Command Module Status Request message b. The LCCM shall populate the Manufacturer ID, Part number, Software Version and Road Number values and set the validity bits to valid to indicate which fields have valid data. c. LCCM shall set the validity bits of all supported capabilities to valid. 6. Controlling Application verifies message is valid a. EMP Message ID 751 b. CRC-32 is valid 7. Controlling Application processes LCCM status data 3 AAR LCCM Use Cases 3.0 Monitor Mode Identifier: UC 3 Description: The process to enter and operate in monitor mode. Preconditions: LCCM operating in the Default, Disengaging Auto state, or Direct Control. Post-conditions: LCCM operating in Monitor Mode, with Control Heartbeat Established. Main Flow: 1. Controlling Application determines conditions to enable transition to monitor mode have been met a. Transition from Default: The Controlling Application to LCCM communication link is established and Controlling Application is authenticated. b. Transition from Disengaging Auto: Master Controller Handle matches commanded propulsion control state c. Transition from Direct Control: Propulsion control state and train line state match 2. Controlling Application transmits Locomotive Command Message (650) with the Command field set to Monitor Mode (0): a. All other fields in the Locomotive Command Message (650) will be recorded but not asserted by the LCCM when the Command field is set to Monitor Mode. 3. LCCM receives message and transmits a copy of the Locomotive Command Message (650) to LDARS, if there was a change to any of the Command fields from the previous message. 4. LCCM verifies Locomotive Command Message (650) is valid. [10.0 Recovery Flows 5. 10.1 Recovery Flow A: Invalid Command Provide by Controlling Application] [10.2 Recovery Flow B: Message Integrity Failure] 6. LCCM transitions to monitor mode. 7. LCCM sets propulsion control to cab controls. 8. The LCCM transmits a Locomotive Command Response Message (750), at the status update rate configured in the most recent Locomotive Command Message (650): a. Status fields are populated with current values b. Validity bits for all status fields with current values are set to valid i. Current value defined as less than 1 second old for speed data, and less than 2 seconds old for all other status fields 4 AAR LCCM Use Cases c. Validity bits for status fields that meet any of the following conditions are set to invalid: i. Unsupported statuses ii. Statuses which are not current iii. Statuses detected as not accurate d. Validity bits for all control fields are set to invalid (0) e. Command Control field is set to Monitor Mode 9. LCCM transmits the same Locomotive Command Response Message (750) to LDARS, if the message has a change in Control field from the previous message. 10. LCCM establishes the Control Heartbeat, upon receiving two valid consecutive Locomotive Command Message (650) within 10 seconds. 11. Controlling Application verifies Locomotive Command Response Message (750) is valid and processes message. 12. Controlling Application transmits Locomotive Command Message (650) with Command field set to Monitor Mode at periodic rate of 0.2 – 5 Hz to maintain the Controlling Application to LCCM communication link. [9.5 Exception Flow E: Communication Loss Between Controlling Application and LCCM While in Monitor Mode] 13. Repeat steps 3 thru 9 of Main Flow. 5 AAR LCCM Use Cases 4.0 Engage Auto Identifier: UC 4 Description: The process to engage and operate in Auto. Preconditions: LCCM operating in monitor mode, with an established Control Heartbeat. Post-conditions: LCCM operating in Auto. Main Flow: 1. Controlling Application transmits Locomotive Command Message (650) with the Command field set to Engage Auto (2): a. Command fields populated per the desired control commands to be applied b. Validity bits for commands fields to be asserted are set to valid (1) c. Validity bits are set to invalid (0) for commands fields NOT to be asserted 2. LCCM receives a Commanded Mode of Engage Auto and verifies that it is valid. [10.0 Recovery Flows 3. 10.1 Recovery Flow A: Invalid Command] [10.2 Recovery Flow B: Message Integrity Failure] 4. The LCCM transmits a copy of the Locomotive Command Message (650) to LDARS, if there was a change to any of the Command fields from the previous message. 5. LCCM asserts all Command fields which it is configured to support, and that have the Validity Bits set to valid in the Locomotive Command Message (650). [9.2 Exception Flow B: Failure to apply Controlling Application Command Critical Fault][10.3 Recovery Flow C: Failure to apply Command Non-Critical Fault] 6. LCCM cuts out the Master Control Handle and drives propulsion commands. 7. LCCM will slew discontinuous throttle commands using LCCM minimum slew rate as required. 8. The LCCM transmits a Locomotive Command Response Message (750), at the status update rate configured in the most recent Locomotive Command Message (650): a. Status fields are populated with current values b. Validity bits for all status fields with current values are set to valid i. Current value defined as less than 1 second old for speed data, and less than 2 seconds old for all other status fields c. Validity bits for status fields that meet any of the following conditions are set to invalid: i. Unsupported statuses ii. Statuses which are not current iii. Statuses detected as not accurate 6 AAR LCCM Use Cases d. Control fields are set to value being asserted by LCCM e. Validity bits for all control fields being asserted by LCCM are set to valid (1) f. Validity bits for all control fields NOT being asserted by LCCM are set to invalid (0) g. Command Control Field is set to Auto Engaging (2) 9. LCCM transmits the same Locomotive Command Response Message (750) to LDARS, if the message has a change in Control field from the previous message. 10. Controlling Application verifies Locomotive Command Response Message (750) is valid. 11. Controlling Application Continues to send Locomotive Command Message (650) with the Engage Auto command at a minimum rate of 0.2 Hz and maximum rate of 5 Hz until the status received via the Locomotive Command Response Message (750) reflect the Auto Mode criteria have been met. [9.3 Exception Flow C: Failure to Meet Criteria to transition to Auto] [9.0 Exception Flows 12. 9.1 Exception Flow A: Communication Loss Between Controlling Application and LCCM] 13. Controlling Application transmits Locomotive Command Message (650) with the Command field set to Auto Mode (1), at a minimum rate of 0.2 Hz and maximum rate of 5 Hz: a. Command fields populated per the desired control commands to be applied b. Validity bits for command fields to be asserted are set to valid (1) c. Validity bits are set to invalid (0) for command fields NOT to be asserted 14. LCCM verifies Locomotive Command Message (650) is valid. [10.0 Recovery Flows 15. 10.1 Recovery Flow A: Invalid Command] [10.2 Recovery Flow B: Message Integrity Failure] 16. LCCM applies Auto Mode as defined by Locomotive Command Message (650) Command Field. 17. LCCM asserts all Command fields which it is configured to support, and that have the Validity Bits set to valid in the Locomotive Command Message (650). [9.2 Exception Flow B: Failure to apply Controlling Application Command Critical Fault][10.3 Recovery Flow C: Failure to apply Command Non-Critical Fault][9.4 Exception Flow D: Simultaneous Throttle and DB command] 18. LCCM will slew discontinuous throttle commands using LCCM minimum slew rate as required. 19. The LCCM transmits a Locomotive Command Response Message (750), at the status update rate configured in the most recent Locomotive Command Message (650): a. Status fields populated with current values b. Validity bits for all status fields with current values are set to valid i. Current value defined as less than 1 second old for speed data, and less than 2 seconds old for all other status fields 7 AAR LCCM Use Cases c. Validity bits for status fields that meet any of the following conditions are set to invalid: i. Unsupported statuses ii. Statuses which are not current iii. Statuses detected as not accurate d. Control fields set to value being asserted by LCCM i. In the event of throttle slewing the target notch is applied to the control field e. Validity bits for all control fields being asserted by LCCM set to valid (1) f. Validity bits for all control fields NOT being asserted by LCCM set to invalid (0) g. Command Control Field set to Auto Engaged (1) 20. LCCM transmits the same Locomotive Command Response Message (750) to LDARS, if a mode transition or state change occurred. 21. Controlling Application verifies Locomotive Command Response Message (750) is valid. 22. Repeat steps 13 thru end of Main Flow. 8 AAR LCCM Use Cases 5.0 Disengage Auto Identifier: UC 5 Description: The process to disengage Auto. Preconditions: LCCM operating in Auto or Engage Auto mode. Post-conditions: LCCM operating in Monitor Mode. Main Flow: 1. Controlling Application system determines the need to disengage auto. 2. Controlling Application transmits Locomotive Command Message (650) with the Command field set to Disengage Auto (3): a. Command fields populated per the desired control commands to be applied b. Validity bits for commands fields to be asserted are set to valid (1) c. Validity bits are set to invalid (0) for commands fields NOT to be asserted 3. LCCM receives the message and verifies Locomotive Command Message (650) is valid. [10.0 Recovery Flows 4. 10.1 Recovery Flow A: Invalid Command] [10.2 Recovery Flow B: Message Integrity Failure] 5. The LCCM transmits a copy of the Locomotive Command Message (650) to LDARS, if there was a change to any of the Command fields from the previous message. 6. LCCM asserts all Command fields which it is configured to support, and that have the Validity Bits set to valid in the Locomotive Command Message (650). [9.2 Exception Flow B: Failure to apply Controlling Application Command Critical Fault][10.3 Recovery Flow C: Failure to apply Command Non-Critical Fault] [9.4 Exception Flow D: Simultaneous Throttle and DB command] 7. The LCCM transmits a Locomotive Command Response Message (750), at the status update rate configured in the most recent Locomotive Command Message (650): a. Status fields populated with current values b. Validity bits for all status fields with current values are set to valid i. Current value defined as less than 1 second old for speed data, and less than 2 seconds old for all other status fields c. Validity bits for status fields that meet any of the following conditions are set to invalid: i. Unsupported statuses ii. Statuses which are not current iii. Statuses detected as not accurate d. Control fields are set to value being asserted by LCCM 9 AAR LCCM Use Cases e. Command Control Field is set to Auto Disengaging (3) f. Validity bits for all control fields being asserted by LCCM are set to valid (1). g. Validity bits for all control fields NOT being asserted by LCCM are set to invalid (0) 8. LCCM transmits the same Locomotive Command Response Message (750) to LDARS, if the message has a change in Control field from the previous message. 9. Controlling Application verifies Locomotive Command Response Message (750) is valid. 10. steps 2 – 8 (between controlling application and the LCCM) are repeated at a minimum rate of 0.2 Hz and maximum rate of 5 Hz until Controlling Application determines that it can release propulsion control to cab control [9.0 Exception Flows 11. 9.1 Exception Flow A: Communication Loss Between Controlling Application and LCCM]. While steps 2-7 are repeated, the LCCM commands the Loco throttle to reduce 1 notch every 3 seconds until the throttle is in idle position. Once the throttle is physically placed by the driver to IDLE position, the LCCM removes the load from the throttle trainlines and then disengages by returning locomotive control to cab control. If DB is applied (Hold DB state) then the LCCM exits Auto Mode and ends propulsion control by maintaining dynamic brake until the operator matches or exceeds the last dynamic brake command and then disengaging by returning locomotive control to the cab. 12. Controlling Application transmits Locomotive Command Message (650) with the Command field set to Monitor Mode (0): a. All other fields in the Locomotive Command Message (650) will be ignored when the Command field is set to Monitor Mode 13. See Monitor Mode Step #3. 10 AAR LCCM Use Cases 6.0 Direct Control Identifier: UC 6 Description: Controlling Application directly commands control of trail locomotive via Direct Control command to trail locomotive LCCM. Preconditions: LCCM operating in Monitor Mode and the control heartbeat is established. Post-conditions: LCCM Operating in Direct Control Main Flow: 1. Controlling Application transmits Locomotive Command Message (650) with the Command field set to Direct Control (4): a. Command fields populated per the desired control commands to be applied b. Validity bits for commands fields to be asserted are set to valid (1) c. Validity bits are set to invalid (0) for commands fields NOT to be asserted 2. LCCM receives message and transmits a copy of the Locomotive Command Message (650) to LDARS, if there was a change to any of the Command fields from the previous message. 3. LCCM verifies Commanded Mode of Direct Control is valid. [10.0 Recovery Flows 4. 10.1 Recovery Flow A: Invalid Command] [10.2 Recovery Flow B: Message Integrity Failure] 5. LCCM asserts all Command fields which it is configured to support, and that have the Validity Bits set to valid in the Locomotive Command Message (650). [9.2 Exception Flow B: Failure to apply Controlling Application Command Critical Fault][10.3 Recovery Flow C: Failure to apply Command Non-Critical Fault][9.4 Exception Flow D: Simultaneous Throttle and DB command] 6. LCCM cuts out the train lines, disables Distributed Power control and drives propulsion commands via LCCM. 7. LCCM will slew discontinuous throttle commands using LCCM minimum slew rate as required. 8. The LCCM transmits a Locomotive Command Response Message (750), at the status update rate configured in the most recent Locomotive Command Message (650): a. Status fields are populated with current values b. Validity bits for all status fields with current values are set to valid i. Current value defined as less than 1 second old for speed data, and less than 2 seconds old for all other status fields c. Validity bits for status fields that meet any of the following conditions are set to invalid: 11 AAR LCCM Use Cases i. Unsupported statuses ii. Statuses which are not current iii. Statuses detected as not accurate d. Control fields are set to value being asserted by LCCM e. Validity bits for all control fields being asserted by LCCM are set to valid (1) f. Validity bits for all control fields NOT being asserted by LCCM are set to invalid (0) g. Command Control Field is set to Direct Control (4) 9. LCCM transmits the same Locomotive Command Response Message (750) to LDARS, if the message has a change in Control field from the previous message. 10. Controlling Application verifies Locomotive Command Response Message (750) is valid. 11. Controlling Application Continues to send Locomotive Command Message (650) with the Direct Control command at a minimum rate of 0.2 Hz and maximum rate of 5 Hz. [9.7 Exception Flow G: Communication Loss Between Controlling Application and LCCM In Direct Control] 12 AAR LCCM Use Cases 7.0 Exit Identifier: UC 7 Description: Exit Command from Controlling Application drops the Controlling Application to LCCM communication link and the LCCM transitions to the default state. Preconditions: LCCM operating in Monitor Mode Post-conditions: LCCM is in the default state. Controlling Application is still authenticated and Class D link is still active. Main Flow: 1. Controlling Application transmits Locomotive Command Message (650) with the Command field set to Exit (5): a. All other fields in the Locomotive Command Message (650) will be ignored when the Command field is set to Exit 2. LCCM receives message and transmits a copy of the Locomotive Command Message (650) to LDARS, if there was a change to any of the Command fields from the previous message. 3. LCCM verifies Locomotive Command Message (650) is valid. [10.0 Recovery Flows 4. 10.1 Recovery Flow A: Invalid Command Provide by Controlling Application] [10.2 Recovery Flow B: Message Integrity Failure] 5. LCCM transitions to Exit state 6. LCCM ignores all Locomotive Command Messages (650), except for Exiting and LCCM Response Rate commands. 7. Controlling Application stops sending Locomotive Command Messages (650) to LCCM 8. LCCM continues transmitting Locomotive Command Response Message (750) to Controlling Application at the commanded rate 9. LCCM transmits the same Locomotive Command Response Message (750) to LDARS, if the message has a change in Control field from the previous message. 10. LCCM determines communication loss with Controlling Application (after 5 seconds without valid communication with Controlling Application) 11. LCCM terminates communication with Controlling Application and enters the default state. 13 AAR LCCM Use Cases 8.0 Alternate Flow A: LCCM Discovery over Class D connection Description: Controlling Application transmits Locomotive Command Module Status Request Message over Class D link. Precondition: The LCCM is prepared to receive messages on the Class D socket on Port 3600. 1. Controlling Application transmits Locomotive Command Module Status Request message via the ICR over an EMP Class D link on port 3600 using the IP Address provided by the ICR. a. Controlling Application will communicate directly (not thru ICR) with the LCCM on the lead locomotive 2. LCCM receives message and verifies message is valid a. EMP Message ID 651 b. CRC-32 is valid 3. Within 1000 ms of receiving the Locomotive Command Module Status Request message, the LCCM transmits a Locomotive Command Module Status via the ICR (LCCM on lead locomotive will communicate directly to Controlling Application) over the EMP Class D link on port 3600. a. EMP Header Message Number field shall be populated with the EMP Header Message Number received in the Locomotive Command Module Status Request message b. The LCCM shall populate the Manufacturer ID, Part number, Software Version and Road Number values and set the validity bits to valid to indicate which fields have valid data. c. LCCM shall set the validity bits of all supported capabilities to valid. 4. Controlling Application verifies message is valid a. EMP Message ID 751 b. CRC-32 is valid 5. Controlling Application processes LCCM status data 6. Steps 1 – 5 repeated for each LCCM Controlling Application wants to discover 14 AAR LCCM Use Cases 9.0 Exception Flows 9.1 Exception Flow A: Communication Loss Between Controlling Application and LCCM Description: LCCM fails to receive a valid Locomotive Command Message (650) within 5000 ms. 1. LCCM fails to receive valid Locomotive Command Message (650) within 5000 ms of the previous valid Locomotive Command Message (650): a. Controlling Application Message Integrity Failure Fault i. HMAC integrity check failure ii. Sequence number integrity check failure b. Invalid Command Provided by Controlling Application c. No receipt of Locomotive Command Message (650) 2. LCCM generates the following fault code “Communication Loss Between Controlling Application and LCCM". a. Fault code shall remain active until the conditions which generated the fault no longer exist or 5000 ms, whichever is longer. 3. LCCM unestablishes the Control Heartbeat 4. LCCM idle down by reducing one throttle notch every 3000 ms to idle or continuing to hold current DB command and alert engineer of fault via Bell. 5. If commanding Asynchronous DP mode, the LCCM leaves the DP commands in the last state and commands the DP system to return the DP remote control buttons to the operator screen. 6. LCCM logs fault code. (Recommended LCCM action) 7. Following a critical fault LCCM will NACK all Locomotive Command Messages (650): a. Set all command validity bits to invalid (0). b. Status fields are populated with current values c. Validity bits for all status fields with current values are set to valid i. Current value defined as less than 1 second old for speed data, and less than 2 seconds old for all other status fields d. Validity bits for status fields that meet any of the following conditions are set to invalid: i. Unsupported statuses ii. Statuses which are not current iii. Statuses detected as not accurate e. Command Control field set to idle Down / Hold DB 15 AAR LCCM Use Cases 8. LCCM returns propulsion control to cab controls once operator matches idle or DB command with the Master Controller Handle and enters default state. 9. Once propulsion control is under cab control and LCCM is in the default state, the LCCM ceases transmission of Locomotive Command Response Messages (750) and will now respond to a valid Controlling Application command to transition to Monitor Mode. 10. LCCM remains in Default state until Controlling Application transmits valid Locomotive Command Message (650) with the Command field set to Monitor mode (0). 11. Following a period of inactivity from Controlling Application, the LCCM will drop the Class D connection 16 AAR LCCM Use Cases 9.2 Exception Flow B: Failure to apply Controlling Application Command Critical Fault Description: LCCM was unable to apply a critical command, resulting in critical fault. 1. LCCM determines a critical command was not applied: a. Local Throttle b. Train Line Throttle c. Distributed Power 2. LCCM Generates Critical Fault Code(s) indicating which command(s) failed to be applied. a. Fault code shall remain active until the conditions which generated the fault no longer exist or 5000 ms, whichever is longer. 3. LCCM idle down by reducing one throttle notch every 3000 ms to idle or continuing to hold current DB command and alerts engineer of fault via Bell. 4. LCCM logs fault code(s). 5. The LCCM transmits a Locomotive Command Response Message (750), at the status update rate configured in the most recent Locomotive Command Message (650): a. Status fields populated with current values b. Validity bits for all status fields with current values are set to valid i. Current value defined as less than 1 second old for speed data, and less than 2 seconds old for all other status fields c. Validity bits for status fields that meet any of the following conditions are set to invalid: i. Unsupported statuses ii. Statuses which are not current iii. Statuses detected as not accurate d. Validity bits for all control fields being asserted by LCCM are set to valid e. Validity bits for all control fields NOT being asserted by LCCM are set to invalid (includes command fields for which fault occurred) f. Number of fault codes set to number of faults and Fault Code Field set indicate all current fault codes. g. Command Control field set to idle Down / Hold DB 6. Controlling Application Verifies message is valid. 7. Following a critical fault LCCM will NACK all Locomotive Command Messages (650): a. Set all command validity bits to invalid (0) b. Current status values populated with most recent data (less than 1 second old for speed data, and less than 2 seconds old for all other status fields) c. Validity bits for all status fields with current values are set to valid (1) d. Validity bits for any status fields without current values are set to invalid (0) 17 AAR LCCM Use Cases e. Command Control field set to idle Down / Hold DB 8. LCCM returns propulsion control to cab controls once operator matches idle or DB command with the Master Controller Handle. 9. Once propulsion control is under cab control, the LCCM will transition to the default state and will now respond to a valid Controlling Application command to transition to Monitor Mode. [9.5 Exception Flow E: Communication Loss Between Controlling Application and LCCM] 18 AAR LCCM Use Cases 9.3 Exception Flow C: Failure to Meet Criteria to transition to Auto Description: Locomotive fails to meet criteria to enable transition to Auto. 1. Controlling Application determines criteria to transition to Auto has not been met within the defined time limit. 2. Controlling Application terminates Auto Engaging by sending Locomotive Command Message (650) with Disengaging Auto command set. 3. Go to Disengage Auto Use Case Step #1. 19 AAR LCCM Use Cases 9.4 Exception Flow D: Simultaneous Throttle and DB command Description: LCCM commanding throttle per Controlling Application Locomotive Command Message (650) and the LCCM detects dynamic brake command from MC Handle. 1. LCCM detects DB command status while commanding throttle per Controlling Application Locomotive Command Message (650). 2. LCCM enters Idle down / Hold DB state, drops load and holds DB command. 3. LCCM generates a Local Throttle fault & a Trainline Throttle fault. a. Fault code shall remain active until the conditions which generated the fault no longer exist or 5000 ms, whichever is longer. 4. LCCM returns propulsion control to cab controls once operator matches DB command with the Master Controller Handle and enters default state. 20 AAR LCCM Use Cases 9.5 Exception Flow E: Communication Loss Between Controlling Application and LCCM While in Monitor Mode Description: LCCM fails to receive a valid Locomotive Command Message (650) within 5000 milliseconds of the last valid Locomotive Command Message (650). 1. LCCM fails to receive valid Locomotive Command Message (650) within 5000 ms of the last valid Locomotive Command Message (650): a. Controlling Application Message Integrity Failure Fault i. HMAC integrity check failure ii. Sequence number integrity check failure b. Invalid Command Provided by Controlling Application c. No receipt of Locomotive Command Message (650) 2. LCCM generates the following fault code “Communication Loss Between Controlling Application and LCCM”. a. Fault code shall remain active until the conditions which generated the fault no longer exist or 5000 ms, whichever is longer. 3. LCCM logs fault code. (Recommended LCCM action) 4. LCCM enters Default state (No communication with Controlling Application, EMP Class D link still established). 5. LCCM remains in Default state until Controlling Application transmits valid Locomotive Command Message (650) with the Command field set to Monitor mode (0). 6. Following a period of inactivity from Controlling Application, the LCCM will drop the Class D connection 21 AAR LCCM Use Cases 9.6 Exception Flow F: Failure of LCCM to Authenticate Controlling Application Description: LCCM does not authenticate Controlling Application, because the Controlling Application OPK key is not on LCCM OPK list. 1. LCCM fails to authenticate Controlling Application due to invalid OPK. 2. LCCM transmits Authentication Data Response Message with Authentication Status set to Authentication Rejected. 3. LCCM closes the Class D socket connection. 4. Controlling Application Class D link dropped. 5. LCCM sends data to event recorder. 6. LCCM re-opens TCP Port 3600 and listens for Class D socket request from Controlling Application. 22 AAR LCCM Use Cases 9.7 Exception Flow G: Communication Loss Between Controlling Application and LCCM In Direct Control Description: LCCM fails to receive a valid Locomotive Command Message (650) within 5000 ms. 1. LCCM fails to receive valid Locomotive Command Message (650) within 5000 ms of the previous valid Locomotive Command Message (650): a. Controlling Application Message Integrity Failure Fault i. HMAC integrity check failure ii. Sequence number integrity check failure b. Invalid Command Provided by Controlling Application c. No receipt of Locomotive Command Message (650) 2. LCCM Generates the following fault code “Communication Loss Between Controlling Application and LCCM”. a. Fault code shall remain active until the conditions which generated the fault no longer exist or 5000 ms, whichever is longer. 3. LCCM unestablishes the Control Heartbeat 4. LCCM transitions to train lines by adjusting one throttle notch every 3000 ms to train line match and alert engineer of fault via Bell. 5. LCCM logs fault code. (Recommended LCCM action) 6. Following a critical fault LCCM will NACK all Locomotive Command Messages (650): a. Set all command validity bits to invalid (0). b. Status fields populated with current values c. Validity bits for all status fields with current values are set to valid i. Current value defined as less than 1 second old for speed data, and less than 2 seconds old for all other status fields d. Validity bits for status fields that meet any of the following conditions are set to invalid: i. Unsupported statuses ii. Statuses which are not current iii. Statuses detected as not accurate e. Command Control field set to idle Down / Hold DB 7. LCCM transitions to the default state, ceases transmission of Locomotive Command Response Messages (750) and will now respond to a valid Controlling Application command to transition to Monitor Mode. 8. Following a period of inactivity from Controlling Application, the LCCM will drop the Class D connection 23 AAR LCCM Use Cases 24 AAR LCCM Use Cases 10.0 Recovery Flows 10.1 Recovery Flow A: Invalid Command Provide by Controlling Application Description: Locomotive Command Message (650) request invalid mode transition, or contains in an invalid command. 1. LCCM determines Command is invalid: a. Mode transition requested by Locomotive Command Message (650) is not allowed see Appendix A: LCCM State Transition Diagram b. Unsupported Command (Simultaneous DB and Throttle) c. Failure to provide a valid Local Throttle Command when in Auto Engage, Auto, or Auto Disengage d. Failure to provide a valid Local Throttle Command or a Valid Train Line Throttle Command when in Direct Control 2. LCCM continues to operate based on the periodic reception of a valid Locomotive Command Message (650) from Controlling Application (mechanism referred to as control heartbeat) and will stop when it detects a loss of heatbeat (timeout). 3. LCCM generates the following fault code “Invalid Command Provided by Controlling Application” a. Fault code shall remain active until the conditions which generated the fault no longer exist or 5000 ms, whichever is longer. 4. LCCM logs fault code. (Recommended LCCM action) 5. The LCCM transmits a Locomotive Command Response Message (750), at the status update rate configured in the most recent Locomotive Command Message (650): a. Incremented EMP sequence number b. Number of fault codes set to 1 and Fault Code Field set to Invalid Command Provided by Controlling Application Fault code c. Status fields populated with current values d. Validity bits for all status fields with current values are set to valid i. Current value defined as less than 1 second old for speed data, and less than 2 seconds old for all other status fields e. Validity bits for status fields that meet any of the following conditions are set to invalid: i. Unsupported statuses ii. Statuses which are not current iii. Statuses detected as not accurate f. Validity bits for all control fields set to invalid 6. Controlling Application Receives Locomotive Command Response Message (750) and verifies integrity. 25 AAR LCCM Use Cases 7. Controlling Application repeats the command at a minimum rate of 0.2 Hz and maximum rate of 5 Hz. 8. Continue in Monitor Mode Step #3, Engage Auto Main Flow Step #1.c, or Disengage Auto Step #3. 26 AAR LCCM Use Cases 10.2 Recovery Flow B: Message Integrity Failure Description: Message integrity check fails. Message HMAC, or sequence number, did not pass integrity check. 1. LCCM determines either HMAC or Sequence Number is invalid. 2. LCCM continues to operate based on the last valid Locomotive Command Message (650). 3. LCCM generates the following fault code “Controlling Application Message Integrity Failure”. a. Fault code shall remain active until the conditions which generated the fault no longer exist or 5000 ms, whichever is longer. 4. LCCM logs fault code. (Recommended LCCM action) 5. The LCCM transmits a Locomotive Command Response Message (750), at the status update rate configured in the most recent Locomotive Command Message (650): a. Number of fault codes set to 1 and Fault Code Field Set to the Controlling Application Message Integrity Failure Fault code. b. Status fields populated with current values c. Validity bits for all status fields with current values are set to valid i. Current value defined as less than 1 second old for speed data, and less than 2 seconds old for all other status fields d. Validity bits for status fields that meet any of the following conditions are set to invalid: i. Unsupported statuses ii. Statuses which are not current iii. Statuses detected as not accurate e. Validity bits for all control fields set to invalid f. Command Control field set to last valid Command 6. Controlling Application Receives Locomotive Command Response Message (750) and verifies integrity. 7. Controlling Application repeats the command at a minimum rate of 0.2 Hz and maximum rate of 5 Hz for each Locomotive Command Message (650) sent. 8. Continue in Monitor Mode Main Flow Step #3 or Engage Auto Main Flow Step #1.c or Disengage Auto Step #3. 27 AAR LCCM Use Cases 10.3 Recovery Flow C: Failure to apply Command Non-Critical Fault Description: LCCM was unable to apply a non-propulsion control command, resulting in noncritical fault. 1. LCCM determines a non-propulsion control command was not applied 2. LCCM Generates Non-Critical Fault Code(s) indicating which command(s) failed to be applied. a. Fault code shall remain active until the conditions which generated the fault no longer exist or 5000 ms, whichever is longer. 3. LCCM continues to operate based on the last received valid Locomotive Command Message (650) from Controlling Application. 4. LCCM logs fault code(s). 5. The LCCM transmits a Locomotive Command Response Message (750), at the status update rate configured in the most recent Locomotive Command Message (650): a. Status fields populated with current values b. Validity bits for all status fields with current values are set to valid i. Current value defined as less than 1 second old for speed data, and less than 2 seconds old for all other status fields c. Validity bits for status fields that meet any of the following conditions are set to invalid: i. Unsupported statuses ii. Statuses which are not current iii. Statuses detected as not accurate d. Validity bits for all control fields being asserted by LCCM set to valid e. Validity bits for all control fields NOT being asserted by LCCM set to invalid (includes command fields for which fault occurred) f. Number of fault codes set to number of faults and Fault Code Field set indicate all current fault codes 6. Controlling Application Verifies message is valid. 7. Controlling Application repeats the auto engage command at a minimum rate of 0.2 Hz and maximum rate of 5 Hz. 8. Continue in Engage Auto Main Flow Step #1.c or Disengage Auto Step #3. 28 AAR LCCM Use Cases Appendix A: LCCM State Transition Diagram LCCM State Transition Diagram Nominal State Transition Fault State Transition T6D Transition TD0 T0D T02 T04 T05 T13 Description Controlling Application system has 1) established a Class D connection, 2) been successfully authenticated, AND 3) sent a valid Locomotive Command Message (650) with the Command field set to 0: Monitor Mode. 7: Train Line Match T7D 4: Direct Control Unexpected Comm Loss with Controlling Application while in Monitor Mode. Comm Loss is defined as a lack of valid heartbeat control messages, even if the Class D socket connection remains open. T04 T47 T40 T02 Receipt of valid Locomotive Command Message (650) with the Command field set to 2: Engage Auto while in the Monitor Mode state T26 2: Auto Engaging D: Default Receipt of valid Locomotive Command Message (650) with the Command field set to 4: Direct Control while in the Monitor Mode state 0: Monitor Mode T23 T0D T30 Receipt of valid Locomotive Command Message (650) with the Command field set to 5: Exit while in the Monitor Mode state. Controlling Application transmits Exit command when it is preparing to drop the Class D connection with LCCM. Receipt of valid Locomotive Command Message (650) with the Command field set to 3: Disengage Auto while in the Auto Engaged state. T16 LCCM detects a critical fault or loss of control heartbeat while in the Auto Engaged state. T21 Receipt of valid Locomotive Command Message (650) with the with the Command field set to 1: Auto Mode while in the Auto Engaging state. T23 Receipt of valid Locomotive Command Message (650) with the Command field set to 3: Disengage Auto while in the Auto Engaging state. T26 LCCM detects a critical fault or loss of control heartbeat while in the Auto Engaging state. T30 Receipt of valid Locomotive Command Message (650) with the Command field set to 0: Monitor Mode while in the Auto Disengaging state. T36 LCCM detects a critical fault or loss of control heartbeat while in the Auto Disengaging state. T40 Receipt of valid Locomotive Command Message (650) with the Command field set to 0: Monitor Mode while in the Direct Control state. T47 LCCM detects a critical fault or loss of control heartbeat while in the Direct Control state. LCCM will slew control to match the train lines, and then revert to cab control. T5D Controlling Application drops the Class D socket connection or stops sending Locomotive Command Messages (650) while in the Exiting state. T6D LCCM detects that the Master Controller handle has been moved to idle (in motoring) or to match or exceed the last dynamic brake command (in braking). T7D LCCM has slewed controls to match the train lines and reverted to cab control. 29 T5D T05 T16 T21 TD0 1: Auto Engaged 6: Idle Down / Hold DB T13 3: Auto Disengaging T23 T36 5: Exiting State D: Default Description Default LCCM state. LCCM will be in this state on power up, after transitioning out of an error state, or upon loss of control heartbeat when in Monitor Mode. In the default state, LCCM may or may not be connected to Controlling Application via a Class D socket connection. The only transition out of the default state is via a valid Monitor Mode command from an authenticated Controlling Application system. When in the default state, LCCM will ignore Locomotive Command Messages (650) until it receives a valid Monitor Mode command from Controlling Application. 0: Monitor Mode 1: Auto Engaged 2: Auto Engaging 3: Auto Disengaging 4: Direct Control 5: Exiting 6: Idle Down / Hold DB Monitor Mode state commanded by Controlling Application via the Monitor Mode Command Auto Engaged state commanded by Controlling Application via the Auto Mode Command Auto Engaging state commanded by Controlling Application via the Engage Auto Command Auto Disengaging state commanded by Controlling Application via the Disengage Auto Command 7: Train Line Match LCCM error state upon detection of a critical fault or loss of control heartbeat while in the Direct Control state. LCCM will automatically transition from this state back to the default state once it has slewed the controls to match the train lines and transitioned back to cab controls. Direct Control state commanded by Controlling Application via the Direct Control Command Exiting state commanded by Controlling Application via the Exit Command LCCM error state upon detection of a critical fault or loss of control heartbeat while in the Auto Engaging, Auto Engaged, or Auto Disengaging states. LCCM will automatically transition from this state back to the default state once the Master Controller has been moved to idle (in motoring) or has matched (or exceeded) the currently applied dynamic brake settings (in braking). When in this state, LCCM will respond to command messages with current status, but will not implement further commands from Controlling Application. AAR LCCM Use Cases Appendix B: LCCM Asynchronous Messaging Sequence Diagram EM After successful authentication, EM initiates the control heartbeat by sending a valid Locomotive Command Message to command the LCCM to Monitor Mode. LCCM will respond with a periodic Locomotive Command Response message every 1000 ms unless commanded by EM to transmit at a different rate (valid range: 2005000 ms). M-9155 LCCM EM Authentication : Success Loco Command Msg (Monitor Mode) Loco Command Response Msg Loco Command Response Msg To keep the socket connection alive, EM must send a Locomotive Command Message at a minimum rate of 5000 ms between messages (0.2 Hz) and a maximum rate of 200 ms between messages (5.0 Hz). If there are no command changes, EM should repeat the previous command with a new message sequence number. The rate of Locomotive Command Messages from EM may be variable as needed, within the allowable timing constraints of 200-5000 ms between messages. Loco Command Msg Loco Command Response Msg Loco Command Msg Loco Command Response Msg Loco Command Response Msg Loco Command Msg LCCM Asynchronous Messaging 30 LCCM Command Response Period Min: 200 ms Max: 5000 ms Default: 1000 ms Rate defined by EM in Locomotive Command message (650) LCCM will declare a comm loss fault if a valid Locomotive Command Message is not received from EM at the minimum rate of every 5000 ms (0.2 Hz)
© Copyright 2025 Paperzz