LPMS-INC1 User Manual
- 1 Introduction
- 1.1 Key Features
- 1.2 Applications
- 2 Reference System and Output Data
- 2.1 Coordinates
- 2.2 Output Data
- 2.2.1 Accelerometer output convention
- 2.2.2 Euler output convention
- 2.2.3 Temperature output
- 3 Communication
- 3.1 Communication Modes
- 3.2 LPBUS Protocol
- 3.2.1 GET Commands
- 3.2.2 SET Commands
- 3.3 LPBUS Packet Format
- 3.3.1 Example
- 3.3.2 Data Format in a Packet Data Field
- 3.3.3 Sensor Measurement Data
- 3.4 LPBUS Example Communication
- 3.4.1 Goto Command Mode
- 3.4.2 Goto Steaming Mode
- 3.4.3 Save Sensor Parameters
- 3.4.4 Read Sensor Status
- 3.4.5 Set UART / RS232 Baudrate
- 3.5 CANOpen Protocols
- 3.5.1 NMT Network Management
- 3.5.1.1 1. Switching NMT States
- 3.5.1.2 2. Heartbeat Message Protocol
- 3.5.2 OD (Object Dictionary)
- 3.5.2.1 Communication Specific Parameter
- 3.5.2.2 TPDO communication parameter
- 3.5.2.3 TPDO mapping parameter
- 3.5.2.4 Manufacturer Specific Parameters
- 3.5.3 SDO Download/Upload
- 3.5.3.1 1. Set Node ID (Node_ID = 01h ~ 7Fh, default = 01h)
- 3.5.3.2 2. Read Node ID
- 3.5.3.3 3. Set CAN Baudrate (Default: 500Kbps)
- 3.5.3.4 4. Read CAN Baudrate
- 3.5.3.5 5. Set PDO Transmission Interval
- 3.5.3.6 6. Read PDO Transmission Interval
- 3.5.3.7 7. Set Heartbeat Interval
- 3.5.3.8 8. Read Heartbeat Interval
- 3.5.3.9 9. Set PDO Mapping Data
- 3.5.3.10 10. Read PDO Mapping Data
- 3.5.3.11 11. Set Number of PDO Mapped Objects
- 3.5.3.12 12. Read Number of PDO Mapped Objects
- 3.5.3.13 13. Save Settings to Flash
- 3.5.3.14 14. Restore Factory Settings
- 3.5.4 PDO Transmission Protocol
- 3.5.5 TPDO Modification Procedure
- 3.5.1 NMT Network Management
- 3.6 ASCII Output
- 4 Appendix
- 4.1 Firmware Function / Command List Sumary
- 4.1.1 Register Value Save and Reset Commands
- 4.1.2 Mode Switching Commands
- 4.1.3 Sensor Status Command
- 4.1.4 Get Data Commands
- 4.1.5 Device Info Commands
- 4.1.6 Data Transmission Commands
- 4.1.7 IMU ID Settings Commands
- 4.1.8 Stream Frequency Commands
- 4.1.9 Deg/Rad Output Commands
- 4.1.10 UART / RS232 Settings Commands
- 4.2 Firmware Function / Command List Details
- 4.2.1 Acknowledged and Not-acknowledged Identifiers
- 4.2.2 Register Value Save and Reset Command
- 4.2.3 Mode Switching Commands
- 4.2.4 Sensor Status Command
- 4.2.5 Get Data Commands
- 4.2.6 Device Info Commands
- 4.2.7 Data Transmission Commands
- 4.2.8 IMU ID Setting Command
- 4.2.9 Stream Frequency Commands
- 4.2.10 Deg/Rad Output Commands
- 4.2.11 UART / RS232 Settings Command
- 4.1 Firmware Function / Command List Sumary
Introduction
LPMS-INC1 is a high-precision, high-stability dual-axis inclinometer based on MEMS sensors. It offers a measurement range of ±90°, a resolution of less than 0.001°, and an accuracy of up to 0.011°. The operating temperature range is -20 to 85 °C. By integrating and processing data from its built-in accelerometer, and applying filtering and calibration algorithms, the device digitally outputs various data including raw acceleration, calibrated acceleration, tilt angles, and temperature.
Communication Options: To suit different applications, LPMS-INC1 provides four communication interfaces: RS232, CAN, RS485, or TTL.
Key Features
High-precision, high-stability dual-axis inclinometer based on MEMS sensors
Measurement range: ±90°
Resolution: <0.001° (IEEE 32-bit single-precision floating-point format)
Accuracy: 0.011°
Operating temperature range: -20 to 85 °C
Supply voltage: 5 to 36 V
Real-time output: raw acceleration data, calibrated acceleration data, tilt angle data, temperature data, up to 500Hz output frequency
Communication interfaces: RS232, CAN, RS485, or TTL
Applications
Construction machinery
Energy and power systems
Bridge and building structures
Reference System and Output Data
Coordinates
The coordinate system for LPMS-INC1 is defined as follows:
Output Data
Accelerometer output convention
LPMS-INC1 outputs both raw and calibrated accelerometer data. A positive acceleration output will be produced when the sensor is accelerated at the same direction of the positive axes. When the sensor is at rest with Z axis pointing upwards, the calibrated output of the accelerometer is expected to be [0 0 +1g] indicating the acceleration due to the force of gravity.
Euler output convention
Euler output is in degrees. Euler X and Y represents angle between X/Y axis and horizontal. LPMS-INC1 does not output yaw angle.
Range of euler output is as follow:
X Angle: -90° ~ +90°
Y Angle: -90° ~ +90°
Z Angle: -
Temperature output
LPMS-INC1 also outputs temperature data measured by the internal accelerometer chip.
Communication
LPMS-INC1 offers four types of communication interfaces:
USB + RS232
USB + CAN
USB + RS485
USB + TTL
Sensor data is streamed to both USB and RS232/CAN/RS485/TTL terminals simultaneously. Communication protocol for different terminals are summarized as below:
Terminal | Protocol |
USB | LPBUS Protocol |
CAN | CANOpen |
RS232/RS485/TTL | LPBUS Protocol/ASCII |
Communication Modes
There are two communication modes, Streaming Mode and Command mode in LPMS-INC1 sensors. By default, the sensor will start in Streaming Mode on power up (Except for RS485 communication, it starts at Command mode). In Streaming Mode, the sensor will continuously stream out sensor data via USB and RS232/CAN/RS485/TTL terminals simultaneously. Streaming frequency for both USB and RS232/CAN/RS485/TTL terminals is determined by the data streaming rate settings (default at 100Hz). The sensor will stop data streaming in Command Mode. User can change the sensor internal parameters in both Streaming and Command mode, but it is highly recommended to put the sensor in Command Mode before making any parameter changes. The state diagram of the sensor modes is summarized in the figure below:
NOTE: User must issue a Save Parameters command to retain any parameter changes to the sensor before next power cycle.
LPBUS Protocol
LPBUS is a communication protocol based on the industry standard MODBUS protocol. It is the default communication format used by LPMS sensors. An LPBUS communication packet has two basic command types, GET and SET, that are sent from a host (PC, mobile data logging unit etc.) to a client (LPMS sensor). Later in this manual we will show a description of all supported commands to the sensor, their types and transported data.
GET Commands
Data from the client is read using GET requests. A GET request usually contains no data. The answer from the client to a GET request contains the requested data.
SET Commands
Data registers of the client are written using SET requests. A SET command from the host contains the data to be set. The answer from the client is either ACK (acknowledged) for a successful write, or NACK (not acknowledged) for a failure to set the register occurred.
LPBUS Packet Format
Each packet sent during the communication is based on the following structure:
Flag Name | Start | Sensor ID | Command No. | Data length | Data field | LRC | End |
Bytes | 1 | 2 | 2 | 2 | n | 2 | 2 |
Start: 1 byte. data packet start flag, which is fixed to 3Ah.
Sensor ID: 2 bytes transmitted at LSB. It contains ID of the sensor to be communicated with. The default value of this ID is 01h. The host sends out a GET / SET request to a specific LPMS sensor by using this ID, and the client answers to request also with the same ID. This ID can be adjusted by sending a SET command to the sensor firmware.
Command No.: 2 bytes transmitted at LSB. It contains command number information to be performed by the data transmission.
Data length: 2 bytes transmitted at LSB, It contains the length information of packet data field.
Data field: n bytes transmitted at LSB, where n is not a fixed number which depends on the command types. It contains all the data needed to be transmitted under a specific command.
LRC: 2 bytes transmitted at LSB. It contains the packet checksum information. To ensure the integrity of the transmitted data the LRC checksum is used. It is calculated in the following way:
LRC = sum(Sensor ID, Command no., Data length, and Data field).
The calculated LRC is usually compared with the LRC transmitted from the remote device. If the two LRCs are not equal, and error is reported.End: 2 bytes transmitted at LSB, which is fixed to 0D0Ah.
Example
LPBus packet from sensor (hex):
3A 01 00 09 00 10 00 37 92 00 00 00 70 93 3E 00 40 7B BE 00 38 70 3F 84 04 0D 0A
Flag Name | Start | Sensor ID | Command No. | Data length | Data field | LRC | End |
Bytes | 1 | 2 | 2 | 2 | n | 2 | 2 |
Hex | 3A | 01 00 | 09 00 | 10 00 | 37 92 00 00 00 70 93 3E 00 40 7B BE 00 38 70 3F | 84 04 | 0D 0A |
Checksum LRC calculation
Calculated Checksum LRC (hex) | = 01 + 00 + 09 + 00 + 10 + 00 + 37 + 92 + 00 + 00 + 00 + 70 + 93 + 3E + 00 + 40 + 7B + BE + 00 + 38 + 70 + 3F |
| = 0x0484 |
LRC from sensor is transmitted at LSB, hence 84 04
Data Format in a Packet Data Field
Generally, data is sent in little-endian format, low order byte first, high order byte last. Data in the data fields of a packet can be encoded in several ways, depending on the type of information to be transmitted. In the following we list the most common data types. Other command-specific data types are explained in the command reference.
Identifier | Description |
Int32 | 32-bit signed integer value |
UInt32 | 32-bit unsigned integer value |
Int16 | 16-bit signed integer value |
UInt16 | 16-bit unsigned integer value |
Int8 | 8-bit signed integer value |
UInt8 | 8-bit unsigned integer value |
Float32 | 32-bit float value |
Vector3f | 3 element 32-bit float vector |
Vector3i16 | 3 element 16-bit signed integer vector |
Vector4f | 4 element 32-bit float vector |
Vector4i16 | 4 element 16-bit signed integer vector |
Matrix3x3f | 3x3 element 32-bit float value matrix |
Sensor Measurement Data
Inclinometer data
There are two precision modes for sensor data: 32-bit float or 16-bit integer. Users can switch between these modes based on the requested data sampling rate and volume. While sensor is in streaming operational mode, LPBUS transports measurement data in the data field of a packet in the following orders shown in the charts below for the cases of 32-bit float and 16-bit integer precision modes. The order of the sensor data chunks depends on which sensor data is enabled.
NOTE: Timestamp data is always 32-bit unsigned integer in both data precision modes.
Order | Identifier | Description | Unit |
1 | UInt32 | Timestamp | multiply by factor 0.002 to convert to seconds |
2 | Vector3f | Raw accelerometer | g |
3 | Vector3f | Calibrated accelerometer | g |
4 | Vector3f | Euler | deg (default) or rad |
5 | Float32 | Temperature | °C |
In 16-bit data precision mode values are transmitted to the host with a multiplication factor applied to increase precision:
Order | Format | Sensor data | Scale factor |
1 | UInt32 | Timestamp | 500 |
2 | Vector3i16 | Raw accelerometer (g) | 1000 |
3 | Vector3i16 | Calibrated accelerometer (g) | 1000 |
4 | Vector3i16 | Euler(degree or rad) | deg: 100 rad:10000 |
5 | Int16 | Temperature (°C) | 100 |
Example inclinometer Data parsing (32bit)
LPBus packet from sensor (hex):
3A 01 00 09 00 2C 00 F0 7C 00 00 6F 12 03 BB 6A 03 1D BC 2B 87 7E 3F 4A CD 03 BB 7A 0F 1D BC 03 86 7E 3F 1B 59 ED BD 39 6B 0D BF 00 00 00 00 50 68 B7 41 51 0F 0D 0A
Description | Received Data (Hex) | Raw Data (Hex) | Converted Value | Multiplier | Actual Value | Unit |
|---|---|---|---|---|---|---|
Packet Header | 3A | - | - | - | - | - |
Sensor ID | 01 00 | 0001 | 1 | - | - | - |
Command Code | 09 00 | 0009 | 9 | - | - | - |
Data Length | 2C 00 | 002C | 44 | - | 44 | bytes |
Timestamp | F0 7C 00 00 | 00007CF0 | 31984 | 0.002 | 63.968 | sec. |
Raw Accelerometer Data X | 6F 12 03 BB | BB03126F | -0.002 | - | -0.002 | g |
Raw Accelerometer Data Y | 6A 03 1D BC | BC1D036A | -0.0095833 | - | -0.0095833 | g |
Raw Accelerometer Data Z | 2B 87 7E 3F | 3F7E872B | 0.99425 | - | 0.99425 | g |
Calibrated Accelerometer X | 4A CD 03 BB | BB03CD4A | -0.0020111 | - | -0.0020111 | g |
Calibrated Accelerometer Y | 7A 0F 1D BC | BC1D0F7A | -0.0095862 | - | -0.0095862 | g |
Calibrated Accelerometer Z | 03 86 7E 3F | 3F7E8603 | 0.9942324 | - | 0.9942324 | g |
Tilt Angle X | 1B 59 ED BD | BDED591B | -0.1158926 | - | -0.1158926 | deg. |
Tilt Angle Y | 39 6B 0D BF | BF0D6B39 | -0.5524173 | - | -0.5524173 | deg. |
Tilt Angle Z | 00 00 00 00 | 00000000 | 0.0 | - | 0.0 | deg. |
Temperature Data | 50 68 B7 41 | 41B76850 | 22.92593 | - | 22.92593 | °C |
LRC Checksum | 51 0F | 0F51 | - | - | - | - |