3. MODBUS Communication
After enabling MODBUS communication and turning on the automatic data collection task for the target machine/group (see the Bivrost Gateway Manual 5.3.1.2. Task Settings and 5.4.1.2. Group Task Settings), the gateway stores the automatic data collection task results in the corresponding register addresses based on the MODBUS protocol. The MODBUS communication address is <Gateway IP>, and the port is 502. To use MODBUS communication, the machine tool must have a slave ID configured (see the Bivrost Gateway Manual 5.3.1.5. Advanced Settings); by default, the last segment of the IP address is used as the slave ID. For example, if the machine tool’s IP is 192.168.100.2, its default slave ID is 2. The slave ID cannot be set to 0 (0 is reserved for the gateway), and the slave IDs of all machine tools connected under the same gateway (default: the last segment of the IP) must be unique from one another; otherwise data identification errors will occur. Users can configure the MODBUS service by following the instructions in the Bivrost Gateway Manual 5.6.2. MODBUS Configuration.
3.1. Machine-Related Data
Section titled “3.1. Machine-Related Data”The MODBUS data addresses are as follows:
| Address | Name | Data Type | Unit | Remarks |
|---|---|---|---|---|
| 400010 | Connection status | UInt16 | - | 1-Connected;2-Disconnected;3-Error |
| 400011 | Alarm count | UInt16 | count | Current number of alarms |
| 400012 | CNC operating status | Int16 | - | Current operating status code, see Operating Status |
| 400020 | Raw program status value | Int16 | - | Raw program status code returned by the machine tool’s system; -1 if the machine tool’s system does not support it or the data is unavailable |
| 400021 | Raw operating mode value | Int16 | - | Raw mode code returned by the machine tool’s system; -1 if the machine tool’s system does not support it or the data is unavailable |
| 400040~400075 | Axis 1 to Axis 18 name | String(4) | - | Converted to a 4-byte array (2 register addresses) using the encoding set in the MODBUS configuration. |
| 400100 | Machining count | UInt32 | pieces | Machining count obtained from the machine tool’s system |
| 400102 | Spindle override | Float | % | Spindle speed override |
| 400104 | Actual spindle speed | Float | same as machine setting | |
| 400106 | Feed override | Float | % | Feed rate override |
| 400108 | Actual feed rate | Float | same as machine setting | |
| 400110~400115 | Spindle 1 to Spindle 3 load | Float | % | |
| 400120 | Rapid feed override | Float | % | |
| 400122 | Commanded feed rate | Float | same as machine setting | |
| 400124 | Commanded spindle speed | Float | same as machine setting | |
| 400172 | Cumulative power-on time 1 | Int32 | minutes | See 1.2.24. TimeData: Machine Time Data for how the time is calculated. If the value is -2147483648, it indicates the machine tool’s system model does not support this time data. |
| 400174 | Cumulative power-on time 2 | Int32 | milliseconds | |
| 400176 | Current power-on time 1 | Int32 | minutes | |
| 400178 | Current power-on time 2 | Int32 | milliseconds | |
| 400180 | Cumulative running time 1 | Int32 | minutes | |
| 400182 | Cumulative running time 2 | Int32 | milliseconds | |
| 400184 | Current running time 1 | Int32 | minutes | |
| 400186 | Current running time 2 | Int32 | milliseconds | |
| 400188 | Cumulative machining time 1 | Int32 | minutes | |
| 400190 | Cumulative machining time 2 | Int32 | milliseconds | |
| 400192 | Current machining time 1 | Int32 | minutes | |
| 400194 | Current machining time 2 | Int32 | milliseconds | |
| 400196 | Last cycle time 1 | Int32 | minutes | |
| 400198 | Last cycle time 2 | Int32 | milliseconds | |
| 400200 | Current cycle time 1 | Int32 | minutes | |
| 400202 | Current cycle time 2 | Int32 | milliseconds | |
| 400204 | Current cutting time 1 | Int32 | minutes | |
| 400206 | Current cutting time 2 | Int32 | milliseconds | |
| 400208 | Remaining cycle time 1 | Int32 | minutes | |
| 400210 | Remaining cycle time 2 | Int32 | milliseconds | |
| 400220 | Current tool number | String(16) | - | Converted to a 16-byte array (8 register addresses) using the encoding set in the MODBUS configuration. |
| 400228 | Running program name | String(32) | - | Name of the currently executing subprogram |
| 400244 | Main program name | String(32) | - | Name of the current main program |
| 400260 | Running program block sequence number | String(16) | - | Sequence number of the currently executing subprogram block |
| 400268 | Current program block | String(70) | - | Content of the currently running program block |
| 400498 | Current machining count | UInt32 | pieces | Machining count within the current monitoring period |
| 400500 | Cumulative machining count | UInt32 | pieces | |
| 400502 | Shutdown time | UInt32 | seconds | |
| 400504 | Emergency stop time | UInt32 | seconds | |
| 400506 | Standby time | UInt32 | seconds | |
| 400508 | Automatic running time | UInt32 | seconds | |
| 400510 | Setup time | UInt32 | seconds | |
| 400512 | Machine monitored utilization rate | Float | % | |
| 400520 | Cumulative shutdown time | UInt32 | seconds | |
| 400522 | Cumulative emergency stop time | UInt32 | seconds | |
| 400524 | Cumulative standby time | UInt32 | seconds | |
| 400526 | Cumulative automatic running time | UInt32 | seconds | |
| 400528 | Cumulative setup time | UInt32 | seconds | |
| 400546 | Last takt time | UInt32 | seconds | |
| 400600 | Program stack | String(128) | - | Converted to a 128-byte array (64 register addresses) using the encoding set in the MODBUS configuration. |
| 400664 | Current tool offset number | String(16) | - | |
| 400900 | Preset power | Float | % | Preset power of the laser cutting machine |
| 400902 | Actual power | Float | % | Actual power of the laser cutting machine |
| 401100~401135 | Axis 1 to Axis 18 load | Float | % | |
| 401136~401171 | Axis 1 to Axis 18 machine coordinate | Float | same as machine setting | |
| 401172~401207 | Axis 1 to Axis 18 relative coordinate | Float | same as machine setting | |
| 401208~401243 | Axis 1 to Axis 18 remaining distance | Float | same as machine setting | |
| 401244~401279 | Axis 1 to Axis 18 absolute coordinate | Float | same as machine setting | |
| 401400~401405 | Spindle 1 to Spindle 3 cumulative overload time | UInt32 | milliseconds | |
| 401410~401445 | Axis 1 to Axis 18 cumulative overload time | UInt32 | milliseconds | |
| 405000~406499 | Alarm 1 to Alarm 15 (each alarm occupies 100 register addresses; the start address of alarm n is 405000 + (n-1)×100) | String(200) | - | Includes alarm content, time, and level |
| 420000~429999 | PLC data bits 1 to 10000 | UInt16 | - | PLC task data and external PLC task data, with PLC task data first followed by external PLC task data, arranged in task order. 32-bit data, 64-bit data, and String-type data are converted to UInt16 using the method set in the MODBUS configuration. |
3.1.1. Multi-Channel Machine Data
Section titled “3.1.1. Multi-Channel Machine Data”The addresses above are the data addresses for channel 0 (the default channel). When a data collection task runs on a channel whose channel number is greater than 0 (the channel number is set with the taskChannel* parameters in the machine configuration, see 2.9.3. Machine Configuration Parameters), the channel-related data listed in the table below is written to a separate address area:
Channel data address = 430000 + 2000 × (channel number - 1) + (base address - 400000)
For example, the base address of the Axis 1 load is 401100, so its address is 431100 for channel 1 and 433100 for channel 2. Addresses 430000~449999 are reserved for channel-related data. Addresses not listed in the table below do not change with the channel number.
| Base Address | Name |
|---|---|
| 400040~400075 | Axis 1 to Axis 18 name |
| 400102 | Spindle override |
| 400104 | Actual spindle speed |
| 400106 | Feed override |
| 400108 | Actual feed rate |
| 400110~400115 | Spindle 1 to Spindle 3 load |
| 400120 | Rapid feed override |
| 400122 | Commanded feed rate |
| 400124 | Commanded spindle speed |
| 401100~401135 | Axis 1 to Axis 18 load |
| 401136~401171 | Axis 1 to Axis 18 machine coordinate |
| 401172~401207 | Axis 1 to Axis 18 relative coordinate |
| 401208~401243 | Axis 1 to Axis 18 remaining distance |
| 401244~401279 | Axis 1 to Axis 18 absolute coordinate |
| 401400~401405 | Spindle 1 to Spindle 3 cumulative overload time |
| 401410~401445 | Axis 1 to Axis 18 cumulative overload time |
3.2. Group-Related Data
Section titled “3.2. Group-Related Data”Group-related data is stored uniformly under slave ID 0. The data addresses are as follows:
| Address | Name | Data Type | Unit | Remarks |
|---|---|---|---|---|
| 400100 | Group 1 cumulative machining count | UInt32 | pieces | |
| 400102 | Current number of shut-down machines in Group 1 | Int16 | units | |
| 400103 | Current number of emergency-stopped machines in Group 1 | Int16 | units | |
| 400104 | Current number of standby machines in Group 1 | Int16 | units | |
| 400105 | Current number of automatically running machines in Group 1 | Int16 | units | |
| 400106 | Current number of machines in setup in Group 1 | Int16 | units | |
| 400110 | Group 1 shutdown time | UInt32 | seconds | |
| 400112 | Group 1 emergency stop time | UInt32 | seconds | |
| 400114 | Group 1 standby time | UInt32 | seconds | |
| 400116 | Group 1 automatic running time | UInt32 | seconds | |
| 400118 | Group 1 setup time | UInt32 | seconds | |
| 400120 | Group 1 monitored utilization rate | Float | % | |
| 400130 | Group 1 cumulative shutdown time | UInt32 | seconds | |
| 400132 | Group 1 cumulative emergency stop time | UInt32 | seconds | |
| 400134 | Group 1 cumulative standby time | UInt32 | seconds | |
| 400136 | Group 1 cumulative automatic running time | UInt32 | seconds | |
| 400138 | Group 1 cumulative setup time | UInt32 | seconds | |
| 400200~400299 | Group 2 (corresponding addresses are Group 1’s addresses + 100) | |||
| …… | ||||
| 401600~401699 | Group 16 (corresponding addresses are Group 1’s addresses + 1500) |

