+ All Categories
Home > Documents > jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for...

jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for...

Date post: 23-Sep-2020
Category:
Upload: others
View: 2 times
Download: 0 times
Share this document with a friend
65
ILC Communications Protocol For M1M3 Support System G. Knight LTS-646 Revision 6 7 20 th April January 2019 20
Transcript
Page 1: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol

For M1M3 Support System

G. Knight

LTS-646

Revision 67

20th AprilJanuary 201920

Page 2: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

Change Record

Version Date Description Owner name

1 17 Aug 2016 Initial Release G. Knight

2 21 May 2017 Added mezzanine functions and various other updates. G. Knight

3 7 July 2017

Changed Code 73 (0x49) Set PID Parameters command to Set Boost Valve DCA Gains command.Changed Code 74 (0x4A) Read PID Parameters command to Read Boost Valve DCA Gains command.Added Code 119 (0x77) Read DCA Pressure Sensors.Various changes to accommodate use of compensator math instead of PID math.Changes to Dual Axis Force Status (3.5.10.2) - Added Lalteral Load Cell Force in the response table. Removed references to PID1 and replaced with Axial. Added DCA fault indication as bit 1 of status in response.

G. Knight

4 16th Oct 2017 Added Hardpoint Monitor and related features. G.Knight

5 29th Jan 2018Changed firmware type codes for command 120 response to reflect 53 & 54 codes for the DCP.Code 17 – Updated ILC id codes and options codes.Added Thermal (Fan-Coil) ILC including Code 88, 89.

G.Knight

6 20th Jan 2019

Added absolute temperature to Thermal ILC. Thermal status command response now includes absolute temperature. Added ILC status bits Ref Resistance (bit 6) and RTD (Bit 7) to ILC status command response.Added heater disabled flag to status byte of thermal status responses in commands 88 and 89.Updated Thermal ILC firmware revision code to V9.1.

G.Knight

7 20th April 2020 Minor changes Petr Kubánek

i

Page 3: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

Contents

Change Record.............................................................................................................................................. i

1 Overview..............................................................................................................................................1

1.1 ILC Models & Firmware Versions.................................................................................................1

2 One-Wire Network Node (TEDS) Device..............................................................................................1

2.1 Single Axis Pneumatic ILC Network Node Data............................................................................1

2.2 Dual Axis Pneumatic ILC Network Node Data..............................................................................2

2.3 Electromechanical ILC (Hard-points) Network Node Data...........................................................2

2.4 Hardpoint Monitoring ILC Network Node Data............................................................................2

2.5 Thermal ILC Network Node Data.................................................................................................3

3 MODBUS Protocol................................................................................................................................3

3.1 Serial Implementation Class.........................................................................................................3

3.1.1 Request Message Recognition.............................................................................................4

3.2 ILC Request Message Handling....................................................................................................4

3.2.1 Consecutive Requests to the same ILC.................................................................................5

3.2.2 Function Request Timings....................................................................................................5

3.3 Server Addressing........................................................................................................................8

3.3.1 Unicast Address (1-247).......................................................................................................8

3.3.2 Broadcast Address (0)..........................................................................................................9

3.3.3 Exceptional Function Broadcast Addresses (248, 249 & 250)..............................................9

3.3.4 Failure Address (255)...........................................................................................................9

3.4 Public Function Codes..................................................................................................................9

3.4.1 Code 17 (0x11) Report Server ID..........................................................................................9

3.5 User Defined Function Codes.....................................................................................................11

3.5.1 Code 18 (0x12) Report Server Status.................................................................................12

3.5.2 Code 65 (0x41) ILC Mode...................................................................................................14

3.5.3 Code 66 (0x42) Hard-point Step Motor Move Command..................................................18

3.5.4 Code 67 (0x43) Hard-point ILC - Force [N] and Status Request..........................................20

ii

Page 4: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

3.5.5 Code 68 (0x44) Freeze Sensor Values................................................................................21

3.5.6 Code 72 (0x48) Set ILC Temporary Address.......................................................................21

3.5.7 Code 73 (0x49) Set Boost Valve DCA Gains........................................................................22

3.5.8 Code 74 (0x4A) Read Boost Valve DCA Gains.....................................................................23

3.5.9 Code 75 (0x4B) Pneumatic Axis Force Demand Command................................................24

3.5.10 Code 76 (0x4C) Pneumatic ILC - Force [N] and Status Request..........................................28

3.5.11 Code 80 (0x50) Set ADC Scan-rate.....................................................................................30

3.5.12 Code 81 (0x51) Set ADC Channel Offset & Sensitivity........................................................31

3.5.13 Code 82 (0x52) Read DAC values........................................................................................32

3.5.14 Code 88 (0x58) Thermal Demand Command.....................................................................33

3.5.15 Code 89 (0x59) Thermal Status Request............................................................................36

3.5.16 Code 107 (0x6B) Reset.......................................................................................................37

3.5.17 Code 110 (0x6E) Read Calibration Data..............................................................................38

3.5.18 Code 119 (0x77) Read Mezzanine Board Pressure Values (psi)..........................................40

3.5.19 Code 120 (0x78) Report Mezzanine Board ID....................................................................42

3.5.20 Code 121 (0x79) Report Mezzanine Board Status..............................................................43

3.5.21 Code 122 (0x7A) Read DCP Mezzanine Board LVDT Instruments (Volts)...........................46

iii

Page 5: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

1 Overview

This document describes the communications protocol and commands used to provide control and monitoring of ILC application firmware for Inner Loop Controller (ILC) network employed on the LSST M1M3 Mirror Cell ILCs.

1.1 ILC Models & Firmware Versions

This document contains specific information related to timing and functions that may change between ILC firmware versions.

The following ILC Models and firmware versions apply at the time of writing this document:

Pneumatic ILC firmware V9.0 Electromechanical ILC firmware V8.2 Hardpoint Monitoring ILC firmware V9.0 Thermal (Fan-Coil) ILC firmware V9.1

2 One-Wire Network Node (TEDS) Device

The one-wire, or network node TEDS device referred to within this document, is a memory device installed at the network connection of each ILC. The ILC reads the device at reset, tests the data then uses the data to determine its MODBUS address and other operating parameters.

The ILC network is divided into six sub-nets (A thru F).

2.1 Single Axis Pneumatic ILC Network Node Data

There is a maximum of sixteen Single Axis Pneumatic ILC’s located on each of four sub-nets (Sub-net A thru D). The following data is provided to each of the Single Axis Pneumatic Actuator ILC’s by their associated network node device:

Name Description ValueMODBUS Server Address - 1 thru 16 ILC Application Type - 2 = PneumaticILC Options Number of axes 0 = single axisADC Configuration Scan Channels 0 = 3-Channels

Sample Rate Code 8 = 480/sPGA Gain 0 = 1 (2^0)Filter Code 0 = SINC3

Sensor DIFF1 Sensor 1 Range 3,336.166211 NSensor DIFF2 Not Used 0Sensor DIFF3 Not Used 0Sensor DIFF4 Not Used 0

1

Petr Kubanek, 20/04/20,
Side note about formatting: I believe default text is Arial 12pt. Every paragraph has that changed to 10pt. It makes sense to change template, but I will not do that without permission.
Page 6: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

2.2 Dual Axis Pneumatic ILC Network Node Data

There are a maximum of thirty-two Dual Axis Pneumatic ILC’s located on each of four sub-nets (Sub-net A thru D). The following data is provided to each of the Dual Axis Pneumatic Actuator ILC’s by their associated network node device:

Name Description ValueMODBUS Server Address - 17 thru 48

(Maximum of 32 on each sub-net A thru D)ILC Application Type - 2 = PneumaticILC Options Number of axes 2 = Dual axisADC Configuration Scan Channels 0 = 3-Channels

Sample Rate Code 8 = 480/sPGA Gain 0 = 1 (2^0)Filter Code 0 = SINC3

Sensor DIFF1 Sensor 1 Range 3,336.166211 NSensor DIFF2 Sensor 2 Range 3,336.166211 NSensor DIFF3 Not Used 0Sensor DIFF4 Not Used 0

2.3 Electromechanical ILC (Hard-points) Network Node Data

There is six Hardpoint Electromechanical ILC’s on sub-net E. The following data is provided to each of the Hard-point Electrical Actuator ILC’s by their associated network node device:

Name Description ValueMODBUS Server Address - 73 thru 78ILC Application Type - 1 = ElectromechanicalILC Options SSI Type 1 = BinaryADC Configuration Scan Channels 0 = 3-Channels

Sample Rate Code 8 = 480/sPGA Gain 2 = 4 (2^2)Filter Code 0 = SINC3

Sensor DIFF1 Sensor 1 Range 5,000 NSensor DIFF2 Not Used 0Sensor DIFF3 Not Used 0Sensor DIFF4 Not Used 0

2.4 Hardpoint Monitoring ILC Network Node Data

There is six Hardpoint Monitoring ILC’s located on sub-net E. The following data is provided to each of the Hardpoint Monitoring ILC’s by their associated network node device:

Name Description ValueMODBUS Server Address - 84 thru 89ILC Application Type - 7 = Hardpoint MonitoringILC Options - 0 (Not Used)ADC Configuration Scan Channels 0 = 3-Channels

Sample Rate Code 0 = 50/sPGA Gain 0 = 1 (2^0)

2

Page 7: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

Filter Code 0 = SINC3Sensor DIFF1 Not Used 0Sensor DIFF2 Not Used 0Sensor DIFF3 Not Used 0Sensor DIFF4 Not Used 0

2.5 Thermal ILC Network Node Data

There are ninety-six Thermal ILC’s located on sub-net F. The following data is provided to each of the Thermal Control ILC’s by their associated network node device:

Name Description ValueMODBUS Server Address - 1 thru 96ILC Application Type - 3 = ThermalILC Options - 0 (Not Used)ADC Configuration Scan Channels 0 = 3-Channels

Sample Rate Code 0 = 50/sPGA Gain 3 = 8 (2^3)Filter Code 0 = SINC3

Sensor DIFF1 Sensor 1 Scaling 25.28246949685 K/mVSensor DIFF2 Not Used 0Sensor DIFF3 Not Used 0Sensor DIFF4 Not Used 0

3 MODBUS Protocol

The ILC firmware (Bootloader and Application), acts as a Modbus serial RTU server with communication over its RS-422 port. The firmware is written to comply with the Modbus-IDA.org “Modbus Application Protocol Specification” V1.1b3 (Modbus.org, V1.1b3), and follows implementation guidelines from the Modbus-IDA.org “Modbus over serial line specification and implementation guide” V1.02” (Modbus.org,V1.02) .

3.1 Serial Implementation Class

The ILC firmware does not respect all aspects of the Modbus-IDA serial implementation class. The following comply with the basic implementation, except where shaded.

ILC MODBUS-IDA BASICAddressing Slave (1-247 and 255) Slave (1-247)Broadcast Yes (248 and 249) Yes (0)Baud Rate 921,600 only 9,600 at startParity NONE EVEN at startStop bits 1 1 at start, 2 no parity Mode RTU RTU at start

During operation, the ILC serial class defined above is complied with at all times.

3

Petr Kubanek, 04/20/20,
This mislead to assume there is Modbus-ida.org site. There is one, but that’s not related to Modbus (as far as I can tell). Proper reference was created, also for next entry.
Page 8: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

3.1.1 Request Message Recognition

The ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer and timer interrupts to monitor & control message receipts. The following describes the techniques used by the ILC firmware to maximize efficiency for validation of incoming messages from the M1M3 controller. There are no consequences to existing methods of sending those messages from the M1M3 controller.

To achieve low latency, the MODBUS RTU specification of “MODBUS Message RTU Framing” which define silent intervals between message frames and silent intervals between message characters are not employed by the ILC for incoming messages.

The ILC firmware does not wait for the Modbus RTU defined minimum silent interval of 3.5 character widths following a message to frame the message from the M1M3 controller as complete. The ILC recognizes the form of the request and its expected size, upon receipt of the first four bytes. See the section, “ILC Request Message Handling” later in this document for details.

Modbus RTU also defines the maximum silent interval between individual characters of 1.5 character widths. The ILC however, assumes that all incoming messages are of minimal silent interval between characters. To ensure that the ILC firmware does not timeout and drop the message from the M1M3 controller, timing rules defined by the internal timer interrupt determine the allowed time frames for an M1M3 controller message to the ILC. For the purpose of describing timing rules, and as a consequence of the use of a four-byte receive buffer within the ILC microcontroller, the word “group” is used in the following to sub-divide what is a continuous incoming message from the M1M3 controller:

The first group of four characters of the message must arrive within 5.0 times character width. For longer messages with subsequent groups of four characters, each must arrive within 5.0 times

character width. For a final group of 1, 2 or 3 characters, they must arrive within 2 .5, 3.5 or 4.5 times character width

respectively.

Valid four-byte requests sent by the M1M3 controller, are immediately recognized by the ILC firmware and it will immediately commence CRC validation and processing with no delay. This is especially beneficial to some ILC status requests, such as the electromechanical ILC force status request.

A valid message received from the M1M3 controller of longer than four bytes is timed out by the ILC firmware after the end of the message. Following the timeout, the ILC commences CRC validation and processing. The timeout is included in the latency values documented in the “Function Request Timings” section later in this document.

3.2 ILC Request Message Handling

The minimum request size for any ILC request is four bytes (Address + Function code + CRC). Any message received by the ILC firmware that is shorter than four bytes is ignored.

The ILC tests the Modbus address byte (the first byte of the message) and the Modbus command code (the second byte of the message), upon receipt of the first four characters of a request message from the M1M3 Controller. If the address is not valid, the ILC disregards the message, then continues to wait for a

4

Page 9: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

new message. If the address is determined to be valid, the ILC tests the validity of the command code. If the command code is not valid the ILC firmware sends an exception response (01), disregards the message, then continues to wait for a new message. If the command code is valid, the ILC firmware then continues to buffer the rest of the message until it has completed.

Following the ILC’s acceptance of a message from the M1M3 controller, there is time taken for the ILC to validate the CRC and process the whole message as a request. If CRC validation fails, the ILC disregards the message, then continues to wait for a new message. Once the ILC firmware successfully validates a request, it processes it and provides a response if required by the protocol.

For M1M3 Controller request messages that require a response, the M1M3 Controller may commence sending a new request message to the same ILC no less than 25 µs after the completion of that ILC’s response.

For M1M3 Controller request messages that do not require a response, the M1M3 Controller may commence sending a new message to the same ILC 15 µs after the latency period has ended.

Specific timings are detailed in the “Function Request Timings” section later in this document.

3.2.1 Consecutive Requests to the same ILC

The following diagrams illustrate the sequence for consecutive requests addressed to the same ILC.

3.2.2 Function Request Timings

The following tables detail timings for the request and latency for each ILC and its Modbus functions. ILC Functions are detailed in the “Function Codes” section later in this document.

The latency values shown represent interval between the end of the M1M3 controller request message and the earliest time the next request message may be sent by the M1M3 controller.

All time values are maximum values recorded during tests.

5

Page 10: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

All time values are in units of micro-seconds.

3.2.2.1 Pneumatic ILC

Modbus Request Function or response note Request Latency

XX – Illegal Function Exception response 01 Varies  17017 – Report Server ID   44 69018 – Report Server Status   44 17065 – Change ILC Mode To illegal mode. Exception response 03 66 180  To same mode 66 180  Read current mode 66 155  Firmware Update to Standby 66 84,740  Standby to Firmware Update (Fault) 66 76,620  Clear Faults - Fault to Standby 66 235  Standby to Disabled 66 235  Disabled to Enabled 66 235  Enabled to Disabled 66 235  Disabled to Standby 66 23568 – Freeze Sensor Values 44 9072 – Set Temp ILC Addr   55 12573 – Set Boost Valve DCA Gains 12 40,00074 – Read Boost Valve DCA Gains 44 1,00075 – Force Demand Unicast - Single Axis 86 205

Unicast - Dual Axis 119 210Broadcast 2,665 180

76 – Force & Status Single Axis 44 175Dual Axis 44 220

80 – Set ADC Scanrate Unicast 55 210Broadcast 55 155

81 – Set ADC Ch Offset & Sens   141 36,150107 – Reset Server   44 84,740110 – Read Calibration   44 1,625119 – Read mezz pressure sensors 44 430120 – Report DCA ID 44 285121 – Report DCA Status 44 155

3.2.2.2 Electromechanical (Hardpoint) ILC

Modbus Request Function or response note Request Latency

XX – Illegal Function Exception response 01 Varies  170

6

Page 11: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

17 – Report Server ID   44 73518 – Report Server Status   44 15565 – Change ILC Mode To illegal mode. Exception response 03 66 175  To same mode 66 160  Read current mode 66 155  Firmware Update to Standby 66 75,255  Standby to Firmware Update (Fault) 66 64,705  Clear Faults - Fault to Standby 66 235  Standby to Disabled 66 235  Disabled to Enabled 66 235  Enabled to Disabled 66 235  Disabled to Standby 66 23566 – Step Motor Move Unicast 55 305  Broadcast 900 20067 – Force & Status   44 20068 – Freeze Sensor Values 44 9272 – Set Temp ILC Addr   55 12580 – Set ADC Scanrate Unicast 55 180  Broadcast 55 12581 – Set ADC Ch Offset & Sens   141 35,935107 – Reset Server   44 64,685110 – Read Calibration   44 1,425

3.2.2.3 Hardpoint Monitoring ILC

Modbus Request Function or response note Request Latency

XX – Illegal Function Exception response 01 Varies  17017 – Report Server ID   44 69018 – Report Server Status   44 17065 – Change ILC Mode To illegal mode. Exception response 03 66 180  To same mode 66 180  Read current mode 66 155  Firmware Update to Standby 66 84,740  Standby to Firmware Update (Fault) 66 76,620  Clear Faults - Fault to Standby 66 235  Standby to Enabled 66 235  Enabled to Standby 66 23572 – Set Temp ILC Address   55 125107 – Reset Server   44 84,740119 – Read mezzanine pressure sensors 44 365

7

Page 12: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

120 – Report mezzanine (DCP) ID 44 285121 – Report mezzanine (DCP) Status 44 150122 – Read DCP Mezzanine Board LVDT Instruments 44 255

3.2.2.4 Thermal ILC

Modbus Request Function or response note Request Latency

XX – Illegal Function Exception response 01 Varies  17017 – Report Server ID   44 73518 – Report Server Status   44 15565 – Change ILC Mode To illegal mode. Exception response 03 66 175  To same mode 66 160  Read current mode 66 155  Firmware Update to Standby 66 75,255  Standby to Firmware Update (Fault) 66 64,705  Clear Faults - Fault to Standby 66 235  Standby to Disabled 66 235  Disabled to Enabled 66 235  Enabled to Disabled 66 235  Disabled to Standby 66 23572 – Set Temp ILC Address   55 15588 – Thermal Demand Unicast 86 220  Broadcast 119 26089 – Thermal Status 44 240107 – Reset Server   44 85,000

3.3 Server Addressing

3.3.1 Unicast Address (1-247)

Each ILC is provided with its own unicast slave address that it reads from a one-wire memory device that is embedded in the network connection it is mated to. This address is within the range required by the MODBUS specification (Address numbers 1 thru 247).

3.3.2 Broadcast Address (0)

All ILCs accept address number zero from the client as the broadcast address required by the MODBUS over Serial Line specification. Only a few write commands will operate under broadcast mode. The ILC does not provide any form of response to client requests with a broadcast address.

8

Page 13: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

3.3.3 Exceptional Function Broadcast Addresses (248, 249 & 250)

Some ILC’s accept address number 248, 249 or 250 from the client as a broadcast address to be used for exceptional functions. This address is in the reserved area of addresses specified by the MODBUS-IDA standard. Address 248 is used for Electromechanical Hardpoint ILC’s, address 249 is used for Pneumatic ILC’s and 250 is used for Thermal ILC’s. The address provides a means of communicating step motor moves (Electromechanical ILC), Force set-points (Pneumatic ILC’s) or Thermal demands (Thermal ILC’s) to multiple ILC’s in one frame. Each ILC that accepts the address, subsequent function code and array of values, then indexes its required set-point using its own slave address. This broadcast method is used only to optimize communication and synchronization with large groups of ILC’s. Since the ILC’s cannot respond to broadcast commands, integrity is checked later by reading back values via a separate unicast command for each ILC. See the “User Defined Function Codes” section for details of function codes that can be used with these broadcast addresses.

3.3.4 Failure Address (255)

When the one-wire memory device cannot be read by the ILC, the ILC adopts a failure mode slave address (255). This address is in the reserved area of addresses specified by the MODBUS-IDA standard. Adopting this fixed address value allows for one device with failed one-wire memory to continue communicating on the network so that its failure mode may be reported. This address value may be temporarily changed by use of the “Set ILC Temporary Address” command – See the “User Define Codes” section.

3.4 E xception codes

A subset of Modbus exception codes is used, with the following meaning:

Exception Code Name Meaning

0x01 ILLEGAL FUNCTION

The function code received in the query is not an allowable action for the server. This may be because the function code is only applicable to newer devices, and was not implemented in the unit selected. It could also indicate that the server is in the wrong state to process a request of this type, for example because it is unconfigured and is being asked to return register values

0x03ILLEGAL DATA VALUE

A value contained in the query data field is not an allowable value for server. This indicates a fault in the structure of the remainder of a complex request, such as that the implied length is incorrect. It specifically does NOT mean that a data item submitted for storage in a register has a value outside the expectation of the application program, since the MODBUS protocol is unaware of the significance of any particular value of any particular register.

0x04SERVER DEVICE FAILURE

An unrecoverable error occurred while the server was attempting to perform the requested action

9

Page 14: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

3.5[3.4] Public Function Codes

The following standard MODBUS public function code commands are implemented by the ILC. The use of these commands follows MODBUS-IDA specifications. Only one command is included from the MODBUS-IDA specification.

Command Code Sub-Code Description

Report Server ID 17 N/A Report Server ID – Specific to ILC. See command description below.

Diagnostic commands or commands addressing registers are not supported by the ILC’s.

3.5.1[3.4.1] Code 17 (0x11) Report Server ID

The MODBUS request for Report Server ID provides a response that is specific to the ILC. It contains server identifier information relating to the ILC revisions and operating state.

This command is a unicast command that is common to all ILC’s and will respond in any ILC mode.

Request

Length Value/DescriptionFunction Code 1-Byte 0x11

Response

Length Value/DescriptionFunction Code 1-Byte 0x11Byte Count 1-Byte Length of Server ID messageServer ID message ….

Unique ID 6-Bytes Unique identifier

10

Page 15: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

ILC App (Firmware)Type

1-Byte 1 = Electromechanical Actuator2 = Pneumatic Actuator3 = Thermal7 = Hardpoint Monitoring10 = Bootloader

Network Node (TEDS) Type

1-Byte

ILC Selected Options 1-Byte Electrical Actuator ILC0x00 = Gray Code SSI0x01 = Binary SSI

Electromechanical Actuator ILC0x00 = Gray Code SSI Encoder0x01 = Binary SSI Encoder

Pneumatic Actuator ILC0x00 = Single Load Cell/Axis0x02 = Two Load Cells/Axes

Thermal ILCNone

Hardpoint Monitoring ILCNone

BootloaderNone

Network Node (TEDS) Options

1-Byte

Major Rev 1-Byte (0-255) Major revision numberMinor Rev 1-Byte (0-255) Minor revision numberFirmware Name Variable ASCII name string for ILC firmware

Error/Exception Response

Length Value/DescriptionError Code 1-Byte 0x91Exception Code 1-Byte 0x01 or 0x03

3.6[3.5] User Defined Function Codes

The following commands are used for functions that are specific to ILC operation. These codes perform specific functions that provide a more efficient means than standard MODBUS commands using registers.

Command Code ILC Type DescriptionReport Server Status 18 All Read Mode, Status & FaultsILC Mode 65 All Read or Change ILC modeStep Motor Broadcast – Hard Point Actuators

66 Electromechanical Used with 248 user defined broadcast address to broadcast step motor set-points to all stepper controlled actuator ILCs.

Force Request – Hard Point Actuator

67 Electromechanical Read Load Cell force and ILC status data from individual electrical actuator ILCs.

Freeze Sensor Values 68 Electromechanical & Pneumatic

Used with 248 or 249 user defined broadcast address to hold force reading until next M1M3 Force Request (67) or M1M3 Force Request (76 or 78) has completed.

Set Temporary ILC Address 72 All Sets temporary address for a failed ILC responding to address 255

Set Boost Valve DCA Gains 73 Pneumatic Set Pneumatic ILC Boost Valve DCA GainsRead Boost Valve DCA Gains

74 Pneumatic Read Pneumatic ILC Boost Valve DCA Gains

Pneumatic Force Set-point 75 Pneumatic Used with unicast or 249 user defined broadcast address to issue force set-point(s).

11

Petr Kubanek, 20/04/20,
I would rather see those exception codes explained in this document. See new section 3.4
Page 16: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

Pneumatic Force Status Request

76 Pneumatic Read Load Cell force and ILC status

ADC Sample Rate 80 Electromechanical, Pneumatic & Thermal

Read or Set ADC sample rate

ADC Channel Sensitivities 81 Electromechanical, Pneumatic & Thermal

Read or Set ADC channel sensor sensitivities

Read DAC 82 Pneumatic Read DAC output raw valuesThermal Demand 88 Thermal Unicast or Broadcast Heater PWM value and Fan RPM

set point.Thermal Status Request 89 Thermal Read Differential Temperature, Absolute Temperature,

Fan RPM and ILC status data from individual thermal ILC’s.

Reset 107 All Reset the ILCRead Calibration Data 110 Electromechanical,

Pneumatic & ThermalRead calibration values of both main and backup calibration

Read Mezzanine Pressure Sensors (psi)

119 Pneumatic & Hardpoint Monitoring

Read pressure (psi) from all four mezzanine board pressure sensors.

Report DCA ID 120 Pneumatic & Hardpoint Monitoring

Read unique ID, firmware type and firmware version of DCA mezzanine board

Report Mezzanine Status 121 Pneumatic & Hardpoint Monitoring

Read detailed status of DCA mezzanine board

Read DCP Mezzanine Board LVDT Instruments

122 Hardpoint Monitoring Read LVDT Instruments (Volts)

3.6.1[3.5.1] Code 18 (0x12) Report Server Status

The MODBUS request for Report Server Status is used to report server Mode, Status and Faults. These values may be routinely read during operations to monitor the server operational status.

This command is a unicast command that is common to all ILC’s and will respond in any ILC mode.

Name Mode

Bit Name Value/Description

ILC Mode All 0..7 - Electromechanical (Hard-Point) ILC0 = Standby – No Motions or Acquisitions1 = Disabled mode (Acquire only)2 = Enabled mode (Acquire and Motion) 3 = Firmware Update4 = FaultPneumatic ILC0 = Standby – No Motions or Acquisitions1 = Disabled mode (Acquire only)2 = Enabled mode (Acquire and Motion) 3 = Firmware Update4 = FaultThermal ILC0 = Standby – No Motions or Acquisitions1 = Disabled mode (Acquire only)2 = Enabled mode (Acquire and Control) 3 = Firmware Update4 = Fault

12

Page 17: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

Hardpoint Monitoring ILC0 = Standby – No Motions or Acquisitions2 = Enabled mode (Acquire and Motion) 3 = Firmware Update4 = Fault

ILC StatusAll

0 Major Fault 0 = None, 1 = Major System Fault1 Minor Fault 0 = None, 1 = Minor System Fault2 Reserved 03 Fault Override 0 = No faults overridden

1 = One or more faults overridden4 Cal Main Electromechanical, Pneumatic or Thermal ILC’s

Only0 = Main Calibration OK1 = Main Calibration Error

5 Cal Back Electromechanical, Pneumatic or Thermal ILC’s Only0 = Backup Calibration OK1 = Backup Calibration Error

6 Ref Resistor Thermal Only0 = Ref Resistor OK1 = Ref Resistor Error

7 RTD Thermal Only0 = RTD OK1 = RTD Error

8 Limit Switch 1 Electromechanical ILC Only0 = Limit 1 Not activated 1 = Limit 1 activated

9 Limit Switch 2 Electromechanical ILC Only0 = Limit 2 Not activated 1 = Limit 2 activated

10 Breaker 1Heater

Thermal ILC Only0 = Breaker 1 OK1 = Breaker 1 Failed

11 Breaker 2Fan

Thermal ILC Only0 = Breaker 2 OK1 = Breaker 2 Failed

12 Monitor Instrument Error

Monitoring ILC’s Only0 = Monitoring instrument OK1 = Monitoring instrument Error

13 Mezzanine Brd Pneumatic or Hardpoint Monitoring ILC’s Only0 = DCA/DCP mz board OK1 = DCA/DCP mz board Error

14 Mezzanine brd Bootload mode

Pneumatic or Hardpoint Monitoring ILC’s Only0 = DCA/DCP mz board running app’n1 = DCA/DCP mz board running firmware updater

15 Reserved 0ILC Faults All 0 Unique ID 0 = Unique ID verified, 1 = Unique ID CRC error

1 App Type 0 = App Type & Network Node Type match1 = App Type & Network Node Type do not match

2 No App 0 = ILC App present, 1 = No ILC App programmed

3 App CRC 0 = ILC-App verified, 1 = ILC-App CRC error

13

Page 18: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

4 No TEDS 0 = TEDS present, 1 = No TEDS found5 TEDS 1 0 = TEDS copy 1 verified, 1 = TEDS copy 1 error6 TEDS 2 0 = TEDS copy 2 verified, 1 = TEDS copy 2 error7 Reserved 08 Watchdog Reset 0 = Watchdog timer OK,

1 = A reset occurred due to Watchdog timeout9 Brown-Out 0 = OK, 1 = Power brown-out occurred10 Event Trap 0 = OK,

1 = A reset occurred due to controller event trap

11 Motor Driver Electromechanical ILC Only0 = OK, 1 = Motor driver fail

12 SSR Power 0 = OK, 1 = SSR power fail13 Aux Power 0 = OK, 1 = Aux power fail14 SMC Power Electromechanical ILC Only

0 = OK, 1 = Motor controller power fail15 Reserved 0

Request

Length Value/DescriptionFunction Code 1-Byte 0x12

Response

Length Value/DescriptionFunction Code 1-Byte 0x12Mode 1-Byte 0x00 – Standby

0x01 – Disabled0x02 - Enabled0x03 – Firmware Update 0x04 – Fault

Status 2-bytes See description aboveFault 2-Bytes See description above

14

Petr Kubanek, 20/04/20,
Tables shouldn’t break on page. I tried to change formatting option, that should help. All tables shall be reviewed, it’s hard to read table with breaks. See https://www.extendoffice.com/documents/word/4543-word-keep-table-rows-on-same-page.html
Page 19: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

Error/Exception Response

Length Value/DescriptionError Code 1-Byte 0x92Exception Code 1-Byte 0x01 or 0x03

3.6.2[3.5.2] Code 65 (0x41) ILC Mode

The ILC Mode command provides a method for the client to request a change between ILC operating modes.

Certain rules apply when switching between operating modes. When these rules are violated (for example; attempting a mode change from Firmware Update to Enabled), the ILC responds by transmitting an exception response.

This command operates only for unicast communications and in any ILC mode.

15

Page 20: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

Request

Length Value/DescriptionFunction Code 1-Byte 0x41Mode Value (Change to mode request)

2-Bytes Electromechanical (Hard-Point) ILC0 = Standby – No Motions or Acquisitions1 = Disabled mode (Acquire only)2 = Enabled mode (Acquire and Motion) 3 = Firmware Update4 = FaultPneumatic ILC0 = Standby – No Motions or Acquisitions1 = Disabled mode (Acquire only)2 = Enabled mode (Acquire and Motion) 3 = Firmware Update4 = FaultThermal ILC0 = Standby – No Motions or Acquisitions1 = Disabled mode (Acquire only)2 = Enabled mode (Acquire and Motion) 3 = Firmware Update4 = FaultHardpoint Monitoring ILC0 = Standby – No Acquisitions2 = Enabled mode (Acquire) 3 = Firmware Update4 = Fault

Response

Length Value/DescriptionFunction Code 1-Byte 0x41Mode Value(New mode - Dependent upon outcome of request)

2-Bytes Electromechanical (Hard-Point) ILC0 = Standby – No Motions or Acquisitions1 = Disabled mode (Acquire only)2 = Enabled mode (Acquire and Motion) 3 = Firmware Update4 = FaultPneumatic ILC0 = Standby – No Motions or Acquisitions1 = Disabled mode (Acquire only)2 = Enabled mode (Acquire and Motion) 3 = Firmware Update4 = FaultThermal ILC0 = Standby – No Motions or Acquisitions1 = Disabled mode (Acquire only)2 = Enabled mode (Acquire and Motion) 3 = Firmware Update4 = FaultHardpoint Monitoring ILC0 = Standby – No Acquisitions2 = Enabled mode (Acquire)

16

Petr Kubanek, 20/04/20,
Page 21: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

3 = Firmware Update4 = Fault

Error/Exception Response

Length Value/DescriptionError Code 1-Byte 0xC1Exception Code 1-Byte 0x01 or 0x03

3.6.2.1[3.5.2.1] Electromechanical (Hardpoint) ILC Statechart

17

Petr Kubanek, 20/04/20,
This chart will be much easier to read using container for all non-fault states, and just fault for running into fault state. See https://sparxsystems.com/resources/tutorials/uml2/state-diagram.html
Page 22: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

3.6.2.2[3.5.2.2] Pneumatic ILC Statechart

3.6.2.3[3.5.2.3] Thermal ILC Statechart

18

Page 23: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

3.6.2.4[3.5.2.4] Hardpoint Monitoring ILC Statechart

3.6.3[3.5.3] Code 66 (0x42) Hard-point Step Motor Move Command

Code 66 is intended for use with M1M3 step motor driven actuator ILCs. It can be used either in conjunction with a broadcast command or to address an individual ILC.

This command operates for both unicast and broadcast communications and in “Enabled” ILC mode only.

3.6.3.1[3.5.3.1] Code 66 (0x42) as Broadcast Command

Code 66 is specifically tailored to broadcast step motor move values to a network of ILCs consisting of seventy-two M2 axial and six M2 tangent ILCs. This function code may be used only when the servers are being addressed by the exceptional function broadcast address code 248 as described in the “Server Addressing” section of this document.

This function code is accompanied by an array of step motor move values intended for up to seventy-eight ILCs within the same network. Only the first six step motor values are used by M1M3 Electromechanical ILC’s as follows:

ILC M1M3 Hard-Points 6 * 1-byte intended for ILCs with server addresses 1 thru 6.

Each ILC uses a simple indexing method utilizing its own server address to retrieve its own step motor commanded value from the received array of values.

This broadcast command frame also includes a “Broadcast Communication Counter”. This is a count that is incremented by the client upon every broadcast. The counter value is returned by the ILC response in Code 67 described below, in order for the client to be able to check that its previous broadcast was received by each ILC.

This is a broadcast command, no response is provided by the ILCs.

19

Petr Kubanek, 20/04/20,
See above how to simplify fault state with one big encompassing container.
Page 24: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

Request

Length Value/DescriptionFunction Code 1-Byte 0x42Broadcast Communication Counter

1-Bytes Broadcast Communication Counter

Step Values * 6 for M1M3 ILC Hard-Points with Server Address 1 Thru 6

6-Bytes Relative Step value * 6Byte +127 to -128 step counts

Step Values * 72Redundant values with Server Address 7 Thru 78

72-Bytes Relative Step value * 72Byte +127 to -128 step counts

3.6.3.2[3.5.3.2] Code 66 (0x42) as Unicast Command

Code 66 can also be used in conjunction with the unicast address of hard-point ILC to send individual step commands. There is only a single step motor command and the ILC responds in the same manner as after receiving code 67.

The only intent of this implementation is as a mechanism to allow resending step commands to ILCs that missed the broadcast command at the beginning of the communications cycle.

Request

Length Value/DescriptionFunction Code 1-Byte 0x42Step Value For ILC M1M3 Hard-Point ILC with Server Address 1 Thru 6

1-Byte Relative Step valueByte +127 to -128 step counts

20

Petr Kubanek, 20/04/20,
I would recommend to insert page break before those section. This will keep together most of the tables referenced in code structure/responses.
Petr Kubanek, 20/04/20,
As side note, this isn’t how the code is implemented. It doesn’t zero array of remaining values (above 6), might leave in random garbage (depending on compiler..). I will fix that.
Page 25: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

Response

Length Value/DescriptionFunction Code 1-Byte 0x42Status 1-Byte Bit 0 – ILC Fault (Inc. Step Driver Fault) (0=OK, 1=FAULT)

Bit 1 – Not Used (Always 0)Bit 2 – Limit Switch CW (0=OPEN, 1=CLOSED)Bit 3 – Limit Switch CCW (0=OPEN, 1=CLOSED)Bit 4..7 - Broadcast Communication Counter (0..15)

SSI Encoder Position (Counts) 4-Bytes Int32 value for encoder position (Counts)Load Cell Force (Newtons) 4-Bytes Float32 value for measured Load Cell/Actuator force (N)

Error/Exception Response

Length Value/DescriptionError Code 1-Byte 0xC2Exception Code 1-Byte 0x01 or 0x03

3.6.4[3.5.4] Code 67 (0x43) Hard-point ILC - Force [N] and Status Request

Code 67 is intended for use with the M1M3 Hard-Point step motor driven actuator ILC’s. It is specifically used to request Force and Status data. This request is intended to be an efficient method to be used with every actuator ILC following a code 66 Stepper Move Broadcast to retrieve the actuator force value, verify communication integrity and ILC status.

This command operates only for unicast communications and in “Disabled” or “Enabled” ILC modes.

Request

Length Value/DescriptionFunction Code 1-Byte 0x43

21

Page 26: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

Response

Length Value/DescriptionFunction Code 1-Byte 0x43Status 1-Byte Bit 0 – ILC Fault (Inc. Step Driver Fault) (0=OK, 1=FAULT)

Bit 1 – Not Used (Always 0)Bit 2 – Limit Switch CW (0=OPEN, 1=CLOSED)Bit 3 – Limit Switch CCW (0=OPEN, 1=CLOSED)Bit 4..7 - Broadcast Communication Counter (0..15)

SSI Encoder Position 4-Bytes Int32 value for encoder positionLoad Cell Force 4-Bytes Float32 value for measured Load Cell/Actuator force.

Error/Exception Response

Length Value/DescriptionError Code 1-Byte 0xC3Exception Code 1-Byte 0x01 or 0x04

[3.5.5] Code 68 (0x44) Freeze Sensor Values

Code 68 is a broadcast command for use with the Electromechanical ILC’s and Pneumatic ILC’s.

The purpose of this command is to provide a synchronous snapshot of force values from Electromechanical or Pneumatic ILC’s on the same network of ILC’s.

In the case of an electromechanical ILC, it is used to instruct the ILC to hold the load cell and SSI encoder sensor values until read by a code 67 Force Status command.

In the case of Pneumatic ILC’s, it is used to instruct the ILC’s to hold force sensor values until read by a code 76 Force Status command.

This command may be used only when the ILC’s are being addressed in broadcast communications using the exceptional function broadcast address code 248 (Electromechanical), or 249 (pneumatic), in Disabled or Enabled ILC modes.

This broadcast command frame also includes a “Broadcast Communication Counter”. This is a count (0-15) that is incremented by the client upon every broadcast. The counter value is returned by the ILC response in Code 67 or Code 76 described below, in order for the client to be able to check that its previous broadcast was received by each ILC.

22

Page 27: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

Request

Length Value/DescriptionFunction Code 1-Byte 0x44Broadcast Communication Counter

1-Byte 0 - 15

3.6.5[3.5.6] Code 72 (0x48) Set ILC Temporary Address

Code 72 is intended to provide method for an ILC to temporarily use an address value provided by the client. This request may only be used in the event that one ILC has failed to read its address from its network connection and therefore adopts the failure address of 255 in order for the client to be able to communicate. Upon successful completion of this command the ILC immediately uses the temporary address for future transactions with the client.

This command operates only for unicast communications and in any ILC mode.

Request

Length Value/DescriptionFunction Code 1-Byte 0x48Address 1-Byte Temporary address

Response

Length Value/DescriptionFunction Code 1-Byte 0x48Address 1-Byte Temporary address

Error/Exception Response

Length Value/Description

23

Page 28: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

Error Code 1-Byte 0xC2Exception Code 1-Byte 0x01 or 0x03

3.6.6[3.5.7] Code 73 (0x49) Set Boost Valve DCA Gains

Code 73 is for use with the M1M3 Single or Dual Axis Pneumatic actuator ILCs. It is used to set the gains of the DCA (mezzanine board) boost valve compensator math. These values are programmed to the ILC EEPROM calibration memory and need only be set once.

This command programs gains for both outputs of the DCA regardless of single or dual axis configuration. The lateral gain should just be set to zero in the case of a single axis actuator.

This command operates only for unicast communications and in any ILC mode.

The ILC must be reset using command 107, or re-powered for the programmed values to take effect.

Request

Length Value/DescriptionFunction Code 1-Byte 0x49Axial Boost Valve Gain 4-Bytes Floating point single (4-bytes)Lateral Boost Valve Gain 4-Bytes Floating point single (4-bytes)

Response

Length Value/DescriptionFunction Code 1-Byte 0x49

Error/Exception Response

Length Value/DescriptionError Code 1-Byte 0xC9Exception Code 1-Byte 0x01 or 0x03

3.6.7[3.5.8] Code 74 (0x4A) Read Boost Valve DCA Gains

Code 74 is for use with the M1M3 pneumatic actuator ILCs. It responds with the gains of the DCA (mezzanine board) boost valve compensator math read from the ILC & mezzanine board EEPROM.

This command reads the gains for both outputs of the DCA regardless of single or dual axis configuration.

This command operates only for unicast communications and in any ILC mode.

24

Page 29: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

Request

Length Value/DescriptionFunction Code 1-Byte 0x4A

Response

Length Value/DescriptionFunction Code 1-Byte 0x4AAxial Boost Valve Gain 4-Bytes Floating point single (4-bytes)Lateral Boost Valve Gain 4-Bytes Floating point single (4-bytes)

Error/Exception Response

Length Value/DescriptionError Code 1-Byte 0xCAException Code 1-Byte 0x01 or 0x03

3.6.8[3.5.9] Code 75 (0x4B) Pneumatic Axis Force Demand Command

Force commands for the Pneumatic actuator ILCs are sent using command 75. It can be used either in conjunction with a broadcast command or to address an individual ILC. There are two different forms of the command, each for Single Axis or Dual Axis Pneumatic ILC’s.

This command operates for both unicast and broadcast communications and in “Enabled” ILC mode only.

25

Page 30: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

3.6.8.1[3.5.9.1] Code 75 (0x4B) as Broadcast Command

Code 75 is tailored to broadcast force set-point values to a sub-net of ILC’s consisting of up to 16 single axis ILC’s and 32 dual axis ILC’s. This function code may be used only when the servers are being addressed by the exceptional function broadcast address code 249 as described in the “Server Addressing” section of this document.

This function code is accompanied by an array of 24-bit fixed point force values in milli-Newtons intended for multiple ILC’s within the same network.

Each ILC uses an indexing method utilizing its own server address to retrieve its own force demand value from the received array of values. The single axis ILC MODBUS address range is 1-16. The dual axis ILC MODBUS address range is 17-48.

This broadcast command frame also includes a “Broadcast Communication Counter”. This is a count (0-15) that is incremented by the client upon every broadcast. The counter value is returned by the ILC response in Code 76 described below, in order for the client to be able to check that its previous broadcast was received by each ILC.

This broadcast frame also contains a flag indicating telescope slewing or tracking mode. This is a single byte flag.

This is a broadcast command. No response is provided by the ILCs.

Request

Length Value/DescriptionFunction Code 1-Byte 0x4BBroadcast Communication Counter

1-Byte Broadcast Communication Counter

Slewing/Tracking flag 1-Byte 0xFF = Slewing (Uses flow/boost valve PID)0x00 thru 0xFE = Tracking

Force Set-Points * 16 for Single Axis Pneumatic Actuators with Server Address 1 Thru 16

32-Bytes 16 * 24-bit signed (3-bytes) per axis – Axial Force set-point.-8388607 to +8388607 millinewtons

Force Set-Points * 32 for Dual Axis Pneumatic Actuators with Server Address 17 Thru 48

192-Bytes 32 *2 * 24-bit signed (6-bytes) per axis – Axial & Lateral Force set-points.-8388607 to +8388607 millinewtons

3.6.8.2[3.5.9.2] Code 75 (0x4B) as Unicast Command

Code 75 can also be used in conjunction with the unicast address of any pneumatic actuator ILC to send force set-point value(s) to a specific ILC. The ILC responds in the same manner as after receiving code 76.

26

Page 31: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

The only intent of this implementation is as a mechanism to allow resending force commands to ILCs that missed the broadcast command at the beginning of the communications cycle.

There are two different forms of the command for single axis and dual axis ILC’s. A single axis ILC is sent one force set-point and a dual axis ILC is sent two force set-points.

This frame also contains a flag indicating telescope slewing or tracking mode. This is a single byte flag.

3.6.8.2.1[3.5.9.2.1] Single Axis ILC Unicast Command

Request

Length Value/DescriptionFunction Code 1-Byte 0x4BSlewing/Tracking flag 1-Byte 0xFF = Slewing (Uses flow/boost valve PID)

0x00 thru 0xFE = TrackingForce Set-Point 3-Bytes 24-bit signed (3-bytes) per axis – Axial Force set-point.

-8388607 to +8388607 millinewtons

Response

Length Value/DescriptionFunction Code 1-Byte 0x4BStatus 1-Byte Bit 0 – ILC Fault (0=OK, 1=FAULT)

Bit 1 – DCA Fault (0=OK, 1=FAULT)Bit 2 – Not Used (Always 0)Bit 3 – Not Used (Always 0)Bit 4..7 - Broadcast Communication Counter (0..15)

Load Cell Force 4-Bytes Floating point single (4-byte) Force value (Newtons)

27

Page 32: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

Error/Exception Response

Length Value/DescriptionError Code 1-Byte 0xCBException Code 1-Byte 0x01 or 0x03

3.6.8.2.2[3.5.9.2.2] Dual Axis ILC Unicast Command

Request

Length Value/DescriptionFunction Code 1-Byte 0x4BSlewing/Tracking flag 1-Byte 0xFF = Slewing (Uses flow/boost valve PID)

0x00 thru 0xFE = TrackingAxial Force Set-Point 3-Bytes 24-bit signed (3-bytes) per axis – Axial Force set-point.

-8388607 to +8388607 millinewtonsLateral Force Set-Point 3-Bytes 24-bit signed (3-bytes) per axis – Lateral Force set-point.

-8388607 to +8388607 millinewtons

Response

Length Value/DescriptionFunction Code 1-Byte 0x4BStatus 1-Byte Bit 0 – ILC Fault (0=OK, 1=FAULT)

Bit 1 – DCA Fault (0=OK, 1=FAULT)Bit 2 – Not Used (Always 0)Bit 3 – Not Used (Always 0)Bit 4..7 - Broadcast Communication Counter (0..15)

Axial Load Cell Force 4-Bytes Floating point single (4-byte) Force value (Newtons)Lateral Load Cell Force 4-Bytes Floating point single (4-byte) Force value (Newtons)

28

Page 33: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

Error/Exception Response

Length Value/DescriptionError Code 1-Byte 0xCBException Code 1-Byte 0x01 or 0x03

3.6.9[3.5.10] Code 76 (0x4C) Pneumatic ILC - Force [N] and Status Request

Code 776 is intended for use with the M1M3 Pneumatic ILCs. It is specifically used to request Force and Status data. This request is intended to be an efficient method to be used with every Pneumatic ILC following a code 75 Force Command Broadcast to retrieve the actuator force value, verify communication integrity and ILC status.

There are two forms of response to this command. One for single axis ILC and the other for dual axis ILC.

This command operates only for unicast communications and in “Disabled” or “Enabled” ILC modes.

3.6.9.1[3.5.10.1] Single Axis ILC Status Request

Request

Length Value/DescriptionFunction Code 1-Byte 0x4C

29

Page 34: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

Response

Length Value/DescriptionFunction Code 1-Byte 0x4CStatus 1-Byte Bit 0 – ILC Fault (0=OK, 1=FAULT)

Bit 1 – DCA Fault (0=OK, 1=FAULT)Bit 2 – Not Used (Always 0)Bit 3 – Not Used (Always 0)Bit 4..7 - Broadcast Communication Counter (0..15)

Axial Load Cell Force 4-Bytes Floating point single (4-byte) Force value

Error/Exception Response

Length Value/DescriptionError Code 1-Byte 0xCCException Code 1-Byte 0x01 or 0x03

3.6.9.2[3.5.10.2] Dual Axis ILC Status Request

Request

Length Value/DescriptionFunction Code 1-Byte 0x4C

30

Page 35: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

Response

Length Value/DescriptionFunction Code 1-Byte 0x4CStatus 1-Byte Bit 0 – ILC Fault (Inc. DCA Fault) (0=OK, 1=FAULT)

Bit 1 – DCA Fault (0=OK, 1=FAULT)Bit 2 – Not Used (Always 0)Bit 3 – Not Used (Always 0)Bit 4..7 - Broadcast Communication Counter (0..15)

Axial Load Cell Force 4-Bytes Floating point single (4-byte) Force valueLateral Load Cell Force 4-Bytes Floating point single (4-byte) Force value

Error/Exception Response

Length Value/DescriptionError Code 1-Byte 0xCCException Code 1-Byte 0x01 or 0x03

3.6.10[3.5.11] Code 80 (0x50) Set ADC Scan-rate

Code 80 is for use with the M1M3 Electromechanical or Pneumatic ILC’s. It is used to read or set the scan-rate of the ILC ADC converter. A single byte value is used to define the scan-rate code. A request sent with scan-rate code value of 0xFF simply returns the current code without setting a new one.

This command operates only for unicast communications and in any ILC mode.

31

Page 36: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

Request

Length Value/DescriptionFunction Code 1-Byte 0x50Scan-rate Code 1-Byte 0xFF = No change – Respond with current Scan-rate code

0 = 50 (Scan-rate in samples per second)1 = 602 = 1003 = 1204 = 2005 = 2406 = 3007 = 4008 = 4809 = 60010 = 120011 = 240012 = 4800

Response

Length Value/DescriptionFunction Code 1-Byte 0x50Scan-rate Code 1-Byte 0 = 50 (Scan-rate in samples per second)

1 = 602 = 1003 = 1204 = 2005 = 2406 = 3007 = 4008 = 4809 = 60010 = 120011 = 240012 = 4800

Error/Exception Response

Length Value/DescriptionError Code 1-Byte 0xD0Exception Code 1-Byte 0x01 or 0x03

3.6.11[3.5.12] Code 81 (0x51) Set ADC Channel Offset & Sensitivity

Code 81 is for use with the M1M3 Electromechanical or Pneumatic ILC’s. It is used to set the offset and load cell sensitivity values of a sensor attached to one of the four ILC analog input channels. These values are programmed to the ILC EEPROM calibration memory and need only be set once.

32

Page 37: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

This command operates only for unicast communications and in any ILC mode.

The ILC must be reset using command 107 or re-powered, for the programmed offset and sensitivity to take effect.

Request

Length Value/DescriptionFunction Code 1-Byte 0x51Sensor channel (n) 1-Byte 1-4Sensor n Offset 4-Bytes Float32 Offset valueSensor n Sensitivity 4-Bytes Float32 Load Cell Sensitivity value

Response

Length Value/DescriptionFunction Code 1-Byte 0x51

Error/Exception Response

Length Value/DescriptionError Code 1-Byte 0xD1Exception Code 1-Byte 0x01 or 0x03

3.6.12[3.5.13] Code 82 (0x52) Read DAC values

Code 82 is intended for use in test and debug. It is used to read the values of DAC outputs commanded by the Pneumatic ILC compensator math.

33

Page 38: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

This command operates only for unicast communications and in any ILC mode.

Request

Length Value/DescriptionFunction Code 1-Byte 0x52

Response

Length Value/DescriptionFunction Code 1-Byte 0x52DAC 1 – Axial Push 2-Bytes 0-65535DAC 2 – Axial Pull 2-Bytes 0-65535DAC 3 – Lateral Push 2-Bytes 0-65535DAC 4 – Lateral Pull 2-Bytes 0-65535

Error/Exception Response

Length Value/DescriptionError Code 1-Byte 0xD2Exception Code 1-Byte 0x01 or 0x03

3.6.13[3.5.14] Code 88 (0x58) Thermal Demand Command

Code 88 is intended for use with M1M3 Thermal ILCs. It can be used either in conjunction with a broadcast command or to address an individual ILC.

The “Thermal Demand” contains data for the Heater PWM value and the Fan RPM value. The thermal demand data is two bytes wide. The first byte is the heater PWM value with range 0 to 255, representing

34

Page 39: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

0 to 100% PWM mark-space ratio. The second byte is the Fan RPM value with range is 0 to 255, representing 0 to 2550 RPM.

This command operates for both unicast and broadcast communications and in “Enabled” ILC mode only.

3.6.13.1[3.5.14.1] Code 88 (0x58) as Broadcast Command

When code 88 is broadcast, it provides demand values to a network of ninety-six Thermal ILC’s. This function code may be used only when the server address used by the command is the exceptional function broadcast address code 250 as described in the “Server Addressing” section of this document.

The code 88 broadcast consists of an array of 96 * 2-bytes (1-byte for heater PWM and 1-byte for Fan RPM per Thermal ILC) intended for ILCs with server addresses 1 thru 96. To retrieve its demand values, each ILC indexes the array contained in the broadcast message by using its own server address.

This broadcast command frame also includes a “Broadcast Communication Counter”. This is a 4-bit value in the range 0-15 that must be incremented by the client upon every broadcast. The counter value is returned in the ILC response to code 89 command described below, which is a unicast command which may be issued to each ILC following the code 88 broadcast. Using code 89 and the broadcast counter value in the ILC response, the client may verify that its previous broadcast was received by each ILC in the broadcast network.

This is a broadcast command. No response is provided by the ILC’s.

Request

Length Value/DescriptionFunction Code 1-Byte 0x58Broadcast Communication Counter

1-Bytes Broadcast Communication Counter (0-15)

Demand Values * 96 for M1M3 ILC Thermal ILC’s with Server Address 1 Thru 96

192-Bytes Array of 96 demand values containing:1st Byte - Heater PWM value - 0 to 255 = 0 to 100%2nd Byte - Fan RPM - 0 to 255 = 0 to 2550 RPM in 10 RPM increments

3.6.13.2[3.5.14.2] Code 88 (0x58) as Unicast Command

Code 88 can also be used in conjunction with the unicast address of Thermal ILC to send individual thermal demands. There is only a single heater PWM and fan RPM value contained in the command and the ILC responds in the same manner as after receiving code 89.

35

Page 40: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

The only intent of this implementation is as a mechanism to allow resending thermal demand commands to ILCs that missed the broadcast command at the beginning of the communications cycle.

The response to this command from the ILC includes status, measured differential temperature, measured absolute temperature and the measured Fan RPM. Four bits in the status byte provide fault information.

The status byte contains four status bits and a four-bit broadcast communication counter which increments (0 thru 15) for each thermal broadcast (code 88) received and processed. The status bits indicate the following:

ILC system faultAny minor or major ILC system fault is indicated.

Heater DisabledThe ILC disables heater function if either the heater or fan circuit breaker are tripped, or the fan speed of rotation is below 600 RPM.

Heater Circuit BreakerIndicates heater circuit breaker has tripped.

Fan Circuit BreakerIndicates fan circuit breaker has tripped.

Request

Length Value/DescriptionFunction Code 1-Byte 0x58Heater PWM 1-Byte Heater PWM value - 0 to 255 = 0 to 100%

Fan RPM 1-Byte Fan RPM - 0 to 255 = 0 to 2550 RPM in 10 RPM increments

Response

Length Value/DescriptionFunction Code 1-Byte 0x58Status 1-Byte Bit 0 – ILC Fault (0=OK, 1=FAULT)

Bit 1 – Heater Disabled

36

Page 41: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

Bit 2 – Breaker 1 – Heater (0=CLOSED, 1=OPEN)Bit 3 – Breaker 2 – Fan (0=CLOSED, 1=OPEN)Bit 4..7 - Broadcast Communication Counter (0..15)

Differential Temperature 4-Bytes Float32 – Differential temperature (Celcius)Fan RPM 1-Byte Measured Fan RPM - 0 to 255 = 0 to 2550 RPM in 10

RPM incrementsAbsolute Temperature 4-Bytes Float32 – Absolute temperature (Celcius)

Error/Exception Response

Length Value/DescriptionError Code 1-Byte 0xD8Exception Code 1-Byte 0x01 or 0x03

3.6.14[3.5.15] Code 89 (0x59) Thermal Status Request

Code 89 is intended for use with the M1M3 Thermal ILC’s. It is specifically used to request Heater, Fan & Status data for the Fan-Coil units. This request is intended to be an efficient method to be used with every thermal ILC following a code 88 Thermal Demand Broadcast to retrieve the differential temperature, fan speed, absolute temperature and verify communication integrity and ILC status.

The response to this command from the ILC includes status, measured differential temperature, absolute temperature and the measured Fan RPM.

The status byte contains four status bits and a four-bit broadcast communication counter which increments (0 thru 15) for each thermal broadcast (code 88) received and processed. The status bits indicate the following:

ILC system faultIndicates any minor or major ILC system fault.

Heater DisabledThe ILC disables heater function if either the heater or fan circuit breaker are tripped, or the fan speed of rotation is below 600 RPM.

Heater Circuit BreakerIndicates heater circuit breaker has tripped.

Fan Circuit BreakerIndicates fan circuit breaker has tripped.

This command operates only for unicast communications and in “Disabled” or “Enabled” ILC modes.

37

Page 42: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

Request

Length Value/DescriptionFunction Code 1-Byte 0x59

Response

Length Value/DescriptionFunction Code 1-Byte 0x59Status 1-Byte Bit 0 – ILC Fault (0=OK, 1=FAULT)

Bit 1 – Heater DisabledBit 2 – Breaker 1 – Heater (0=CLOSED, 1=OPEN)Bit 3 – Breaker 2 – Fan (0=CLOSED, 1=OPEN)Bit 4..7 - Broadcast Communication Counter (0..15)

Differential Temperature 4-Bytes Float32 – Differential temperature (Celcsius)Fan RPM 1-Byte Measured Fan RPM - 0 to 255 = 0 to 2550 RPM in 10

RPM incrementsAbsolute Temperature 4-Bytes Float32 – Absolute temperature (Celcsius)

Error/Exception Response

Length Value/DescriptionError Code 1-Byte 0xD9Exception Code 1-Byte 0x01 or 0x03

3.6.15[3.5.16] Code 107 (0x6B) Reset

Code 107 is used to reset the ILC. Following the request, the ILC performs a reset and then responds with the response frame.

This command operates only for unicast communications and in any ILC mode.

38

Page 43: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

Request

Length Value/DescriptionFunction Code 1-Byte 0x6B

Response

Length Value/DescriptionFunction Code 1-Byte 0x6B

Error/Exception Response

Length Value/DescriptionError Code 1-Byte 0xEBException Code 1-Byte 0x01 or 0x03

3.6.16[3.5.17] Code 110 (0x6E) Read Calibration Data

Code 110 is for use with the M1M3 Electromechanical or Pneumatic ILC’s. It is used to respond to the client with calibration data read from the ILC EEPROM.

There are two copies of calibration data (Main & Backup), which are maintained to be exact copies. The data from both copies is contained within the response.

This command operates only for unicast communications and in any ILC mode.

39

Page 44: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

Request

Length Value/DescriptionFunction Code 1-Byte 0x6E

Response

Index Length Value/DescriptionFunction Code 0 1-Byte 0x6EMain ADC Calibration K1 1 4-Bytes Float32 Main ADC Calibration K2 5 4-Bytes Float32 Main ADC Calibration K3 9 4-Bytes Float32 Main ADC Calibration K4 13 4-Bytes Float32 Main Sensor 1 Offset 17 4-Bytes Float32 Main Sensor 2 Offset 21 4-Bytes Float32 Main Sensor 3 Offset 25 4-Bytes Float32 Main Sensor 4 Offset 29 4-Bytes Float32 Main Sensor 1 Sensitivity 33 4-Bytes Float32 Main Sensor 2 Sensitivity 37 4-Bytes Float32 Main Sensor 3 Sensitivity 41 4-Bytes Float32 Main Sensor 4 Sensitivity 45 4-Bytes Float32 Backup ADC Calibration K1 49 4-Bytes Float32 Backup ADC Calibration K2 53 4-Bytes Float32 Backup ADC Calibration K3 57 4-Bytes Float32 Backup ADC Calibration K4 61 4-Bytes Float32 Backup Sensor 1 Offset 65 4-Bytes Float32 Backup Sensor 2 Offset 69 4-Bytes Float32 Backup Sensor 3 Offset 73 4-Bytes Float32 Backup Sensor 4 Offset 77 4-Bytes Float32 Backup Sensor 1 Sensitivity 81 4-Bytes Float32 Backup Sensor 2 Sensitivity 85 4-Bytes Float32

40

Page 45: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

Backup Sensor 3 Sensitivity 89 4-Bytes Float32 Backup Sensor 4 Sensitivity 93 4-Bytes Float32

Error/Exception Response

Length Value/DescriptionError Code 1-Byte 0xEEException Code 1-Byte 0x01 or 0x03

3.6.17[3.5.18] Code 119 (0x77) Read Mezzanine Board Pressure Values (psi)

Code 119 is intended for use in test and debug. It is used to read the values of the pressure sensors included in the in the mezzanine boards of either the Pneumatic or Hardpoint Monitoring ILC’s

This command operates only for unicast communications and in any ILC mode.

3.6.17.1[3.5.18.1] Pneumatic ILC - DCA Mezzanine Request & response

Request

Length Value/DescriptionFunction Code 1-Byte 0x77

41

Page 46: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

Response

Length Value/DescriptionFunction Code 1-Byte 0x77Cylinder Pressure 1 – Axial Push 4-Bytes Float32 value (psi) for pressure sensor 1 –PUSH side of

AXIAL cylinder.Cylinder Pressure 2 – Axial Pull 4-Bytes Float32 value (psi) for pressure sensor 2 – PULL side of

AXIAL cylinder.Cylinder Pressure 3 – Lateral Pull 4-Bytes Float32 value (psi) for pressure sensor 3 – PULL side of

LATERAL cylinder.Cylinder Pressure 4 – Lateral Push

4-Bytes Float32 value (psi) for pressure sensor 4 – PUSH side of LATERAL cylinder.

Error/Exception Response

Length Value/DescriptionError Code 1-Byte 0XF7Exception Code 1-Byte 0x01 or 0x03

3.6.17.2[3.5.18.2] Hardpoint Monitoring ILC - DCP Mezzanine Request & Response

Request

Length Value/DescriptionFunction Code 1-Byte 0x77

42

Page 47: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

Response

Length Value/DescriptionFunction Code 1-Byte 0x77Cylinder Pressure 1 – 4-Bytes Float32 value (psi) for pressure sensor 1 –

Cylinder Pressure 2 – 4-Bytes Float32 value (psi) for pressure sensor 2 –

Cylinder Pressure 3 – 4-Bytes Float32 value (psi) for pressure sensor 3 –

Cylinder Pressure 4 – 4-Bytes Float32 value (psi) for pressure sensor 4 –

Error/Exception Response

Length Value/DescriptionError Code 1-Byte 0XF7Exception Code 1-Byte 0x01 or 0x03

3.6.18[3.5.19] Code 120 (0x78) Report Mezzanine Board ID

The MODBUS request Report Mezzanine Board ID is used to report the Pneumatic ILC’s DCA mezzanine board or the Hardpoint Monitoring ILC’s DCP mezzanine board unique identifier, firmware type code and version.

This command is a unicast command and will respond in any ILC mode.

If the identifier of the mezzanine board is unknown (due to failure of communication between ILC and mezzanine board or other error), an exception response is transmitted, indicating “server device failure” (exception code 04).

3.6.18.1[3.5.19.1] Pneumatic ILC - DCA Mezzanine Request & response

43

Page 48: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

Request

Length Value/DescriptionFunction Code 1-Byte 0x78

Response

Length Value/DescriptionFunction Code 1-Byte 0x78DCA Unique ID 6-Bytes Unique identifier Firmware Type Code 1-Byte 51 = DCA Bootloader

52 = DCA ApplicationFirmware Version (Major) 1-Byte Major version code (0 – 255)Firmware Version (Minor) 1-byte Minor version code (0 – 255)

Error/Exception Response

Length Value/DescriptionError Code 1-Byte 0xF0Exception Code 1-Byte 0x01 or 0x04

3.6.18.2[3.5.19.2] Hardpoint Monitoring ILC - DCP Mezzanine Request & Response

Request

Length Value/DescriptionFunction Code 1-Byte 0x78

Response

Length Value/DescriptionFunction Code 1-Byte 0x78DCA Unique ID 6-Bytes Unique identifier Firmware Type Code 1-Byte 53 = DCP Bootloader

54 = DCP ApplicationFirmware Version (Major) 1-Byte Major version code (0 – 255)Firmware Version (Minor) 1-byte Minor version code (0 – 255)

Error/Exception Response

Length Value/DescriptionError Code 1-Byte 0xF0

44

Page 49: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

Exception Code 1-Byte 0x01 or 0x04

3.6.19[3.5.20] Code 121 (0x79) Report Mezzanine Board Status

The MODBUS request Report Mezzanine Board Status is used to report the status of the ILC’s mezzanine board status flags for either the DCA board (Pneumatic ILC) or DPC board (Hardpoint Monitoring ILC). This command may be routinely read during operations to monitor the operational status.

This command is a unicast command and will respond in any ILC mode.

If the status is unknown (due to failure of communication between ILC and mezzanine board or other error), an exception response is transmitted, indicating “server device failure” (exception code 04).

This command responds with a sixteen-bit word with individual bits indicating specific states. The following tables show the function of each bit of the status word for both the DCA and DCP mezzanine boards.

3.6.19.1[3.5.20.1] Pneumatic ILC - DCA Mezzanine Board Status Bits

Name Bit Name Value/DescriptionDCA Status 0 Outputs Enabled 0 = Outputs Off, 1 = Outputs On

1 Power Fail 0 = Ok, 1 = Power fail2 Current Amp A 0 = Ok, 1 = Disabled (fault)3 Current Amp B 0 = Ok, 1 = Disabled (fault)4 UID Device 0 = Ok, 1 = UID device CRC fail5 Reserved 06 Main Calibration 0 = Ok, 1 = Fault7 Backup Calibration 0 = Ok, 1 = Fault8 Event Trap 0 = Ok, 1 = Event trap occurred9..11 Reserved 012 No Application 0 = Ok, 1 = DCA app not programmed13 Application Error 0 = Ok, 1 = DCA app CRC error14 Reserved 015 Bootloader Active 0 = DCA Application, 1 = DCA bootloader

3.6.19.2[3.5.20.2] Hardpoint Monitoring ILC - DCP Mezzanine Board Status Bits

Name Bit Name Value/DescriptionDCA Status 0 S1A 1 Interface 0 = S1A Interface Ok, 1 = S1A Interface Fault

1 S1A 1 LVDT 0 = LVDT Ok, 1 = LVDT Fault2 S1A 2 Interface 0 = S1A Interface Ok, 1 = S1A Interface Fault3 S1A 2 LVDT 0 = LVDT Ok, 1 = LVDT Fault4 UID Device 0 = Ok, 1 = UID device CRC fail5 Reserved 06 Reserved 07 Reserved 08 Event Trap 0 = Ok, 1 = Event trap occurred9 Reserved 0

45

Page 50: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

10 DCP RS-422 Chip 0 = DCP RS-422 Ok, 1 = DCP RS-422 Fault11 Reserved 012 No Application 0 = Ok, 1 = DCP app not programmed13 Application Error 0 = Ok, 1 = DCP app CRC error14 Reserved 015 Bootloader Active 0 = DCP Application, 1 = DCP bootloader

3.6.19.3[3.5.20.3] Pneumatic ILC - DCA Mezzanine Request & response

Request

Length Value/DescriptionFunction Code 1-Byte 0x79

Response

Length Value/DescriptionFunction Code 1-Byte 0x79Mezzanine Status 2-Bytes Status word 16-bits (See status word description above)

Error/Exception Response

Length Value/DescriptionError Code 1-Byte 0xF1Exception Code 1-Byte 0x01 or 0x04

3.6.19.4[3.5.20.4] Hardpoint Monitoring ILC - DCP Mezzanine Request & Response

46

Page 51: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

Request

Length Value/DescriptionFunction Code 1-Byte 0x79

Response

Length Value/DescriptionFunction Code 1-Byte 0x79Mezzanine Status 2-Bytes Status word 16-bits (See status word description above)

Error/Exception Response

Length Value/DescriptionError Code 1-Byte 0xF1Exception Code 1-Byte 0x01 or 0x04

3.6.20[3.5.21] Code 122 (0x7A) Read DCP Mezzanine Board LVDT Instruments (Volts)

Code 122 is used to read the values of two Alliance Sensors S1A LVDT instruments read via the serial port of the DCP mezzanine board of the Hardpoint Monitoring ILC.

The S1A LVDT interface modules communicate on a common RS-485 bus connected to the DCP mezzanine board serial port. Each of the two S1A module has its own unique address which must be configured as address 0 and 1 respectively.

This command operates only for unicast communications and in enabled ILC mode only.

Request

Length Value/DescriptionFunction Code 1-Byte 0x7A

47

Page 52: jira.lsstcorp.org€¦  · Web viewThe ILC firmware is optimized to provide minimum latency for Modbus RTU requests from the M1M3 controller, employing both a four-byte receive buffer

ILC Communications Protocol for M1M3 Support System LTS-646 Revision 6 01/20/2019

Response

Length Value/DescriptionFunction Code 1-Byte 0x7ALVDT Instrument (Address 0) 4-Bytes Float32 value (psi) for LVDT instrument 1.

LVDT Instrument (Address 1) 4-Bytes Float32 value (psi) for LVDT instrument 2.

Error/Exception Response

Length Value/DescriptionError Code 1-Byte 0XF7Exception Code 1-Byte 0x01 or 0x04

4 Bibliography

Modbus.org. (V1.02). MODBUS over Serial Line Specification and Implementation Guide. Retrieved from Modbus.org: http://modbus.org/docs/Modbus_over_serial_line_V1_02.pdf

Modbus.org. (V1.1b3). Modbus Application Protocol Specification. Retrieved from Modbus.org: http://www.modbus.org/docs/Modbus_Application_Protocol_V1_1b3.pdf

48


Recommended