ApusTAI支持 DCBUS、XGUS、Modbus RTU 和FX2N等多种 PLC 协议。同一路串口选择一种协议,将控件绑定到对应设备变量地址即可通信。
1. DCBUS
在工程设置中选择 DCBUS,配置如下所示。

- 帧头:2 字节,可自定义,图中为
0xAA55。 - 站号:1 字节,图中为
0,主板发送的站号应与屏幕一致。 - 启用 CRC:开启后使用 CRC16 校验;关闭时校验字段为
CC CC。帧头不参与校验。 - 自动上传:开启后,操作控件修改变量时,将变量值上传给主板。
- 写命令应答:开启后,主板写入成功时,屏幕返回应答。
CRC16 计算函数如下,计算范围为站号至数据末尾,校验结果低字节先发送。
c 复制代码#include <stdint.h>
uint16_t crc16_modbus(const uint8_t *buffer, uint32_t n)
{
uint16_t crc = 0xFFFF;
uint32_t i;
uint8_t j;
for (i = 0; i < n; i++)
{
crc ^= buffer[i];
for (j = 0; j < 8; j++)
{
if (crc & 0x0001)
crc = (crc >> 1) ^ 0xA001;
else
crc >>= 1;
}
}
return crc;
}
读写请求的帧格式如下:
| 帧头 | 站号 | 长度 | 功能码 | 地址 | 数据 | 校验 |
|---|---|---|---|---|---|---|
| 2 字节 | 1 字节 | 1 字节 | 1 字节 | 2 字节 | N 字节 | 2 字节 |
0xAA55 |
0x00~0xFF |
功能码至校验的字节数 | 0xF1写/0xF2读 |
LW 变量地址 | 写入值或读取数量 | CRC16 / CC CC |
地址和单字数据均高字节在前。屏幕本机寄存器分为 LW 和 RW,本节 DCBUS 报文读写 LW。
LW / RW 寄存器
寄存器地址采用十六进制,每个寄存器占 2 字节。
| 寄存器范围 | 用途 | 说明 |
|---|---|---|
LW0000~LW0FFF |
系统寄存器区 | 按系统功能定义使用 |
LW1000~LWFFFF |
用户变量区 | 运行内存,掉电不保存 |
RW0000~RW7FFF |
用户参数存储区 | 容量 64 KB,掉电保存 |
重点: 用户变量从 LW1000(0x1000) 开始使用。LW1000 以下为系统寄存器,不能当作普通变量使用,以免与系统功能冲突。
RW 保存与擦写次数
RW 写入成功后自动保存,无需额外发送保存命令。Flash 单扇区擦写寿命按 10 万次估算;系统采用双区轮换和增量写入,RW 写入次数不等于 Flash 擦写次数。
RW 适合保存设置参数。频繁变化的数据建议使用 LW,需要掉电保存时再写入 RW。
1.1 写变量(0xF1)
以下示例使用帧头 AA 55、站号 0,关闭 CRC。向 LW1000 写入数值 100:
主板发送:AA 55 00 07 F1 10 00 00 64 CC CC
屏幕应答:AA 55 00 03 F1 CC CC
00 为站号,07 为长度,F1 为写命令,10 00 为地址,00 64 为数值 100。写应答需开启“写命令应答”。
1.2 读变量(0xF2)
读取 LW1000 的 1 个字,假设当前值为 100:
主板发送:AA 55 00 06 F2 10 00 01 CC CC
屏幕返回:AA 55 00 08 F2 10 00 01 00 64 CC CC
01 为读取 1 个字,每字 2 字节;单次读取范围为 1~124 个字。
1.3 变量自动上传(0xF2)
开启“自动上传”后,在屏幕上将 LW1000 修改为 100,上传报文如下:
屏幕上传:AA 55 00 08 F2 10 00 01 00 64 CC CC
上述示例开启 CRC 后,站号仍为 0,报文如下:
写入:AA 55 00 07 F1 10 00 00 64 62 49
写应答:AA 55 00 03 F1 B0 B4
读取:AA 55 00 06 F2 10 00 01 7A A6
读应答 / 自动上传:AA 55 00 08 F2 10 00 01 00 64 4D 31
2. XGUS
在工程设置中选择 XGUS,配置如下所示。

- 帧头:2 字节,可自定义,图中为
0xA55A。 - 启用 CRC:图中关闭;开启后增加 2 字节 CRC,校验从命令字算到数据末尾。
- 自动上传:开启后,将控件修改后的变量值上传给主板。
- 写命令应答:开启后,写入成功时返回应答。
- XGUS 模式:选择与主板匹配的模式,图中为
XGUS-I。
XGUS 帧中不含站号,0x82 为写变量,0x83 为读变量。关闭 CRC 时不附加校验字段。
3. Modbus RTU
屏幕支持 Modbus RTU,可设置为主机或从机。
3.1 主机模式(ModbusMaster)
屏幕作为主机,主动读写外部设备,配置如下所示。

- 最多读取数:设置单次读取的最大数量。
- 读取间隔数:合并读取时,允许跨过的未使用地址数量。
- 写重试次数:设置写入失败后的重试次数。
- 超时时间:发送请求后等待从机应答的时间,单位 ms。
- 间隔时间:本次通信结束至下次请求的间隔,单位 ms。
- 写寄存器命令:自动模式下,单个寄存器用
0x06,多个寄存器用0x10;选择0x10时统一使用该命令。 - 离线读取优化:减少离线从机占用的通信时间。
- 与 PLC 画面同步:画面写入地址用于回写当前画面号;画面取自地址用于读取目标画面号。
- 从站:设置从站数目、站号和地址范围,普通从站站号为
1~247。 - 预设字节序:设置整数、浮点数的数据排列,与从机保持一致。
支持功能码:0x01、0x02、0x03、0x04、0x05、0x06、0x0F、0x10。
3.2 从机模式(ModbusSlave)
屏幕作为从机,接收主机的读写请求,配置如下所示。

- 从站站点:设置屏幕站号,与主机请求一致。
- 字符间隔:用于判断接收数据的帧间隔。
- 延时应答:收到请求后,延时指定时间再应答,单位 ms。
- 与 PLC 画面同步:画面写入地址记录当前画面号;画面取自地址指定目标画面号。
- 预设字节序:设置多字节数据的排列,与主机保持一致。
支持功能码:0x01、0x02、0x03、0x04、0x05、0x06、0x0F、0x10。0 区为线圈,1 区为离散输入,3 区为输入寄存器,4 区为保持寄存器;1 区和 3 区仅支持读取。
4. 三菱 FX2N
选择 FX2N 协议,配置如下所示。

- 最多读取数:设置单次读取的最大数量。
- 读取间隔数:设置合并读取时允许跨过的地址数量。
- 写重试次数:设置写入失败后的重试次数。
- 超时时间:等待 PLC 应答的时间,单位 ms。
- 间隔时间:两次通信之间的间隔,单位 ms。
- 模式:可选标准或扩展,按 PLC 支持的地址范围选择。
- 与 PLC 画面同步:画面写入地址回写当前画面号;画面取自地址读取目标画面号。
- 预设字节序:设置整数、浮点数的数据排列。
5. 三菱 FX3U
选择 FX3U 协议,配置如下所示。

- 最多读取数:设置单次读取的最大数量。
- 读取间隔数:设置合并读取时允许跨过的地址数量。
- 写重试次数:设置写入失败后的重试次数。
- 超时时间:等待 PLC 应答的时间,单位 ms。
- 间隔时间:两次通信之间的间隔,单位 ms。
- 模式:可选标准或扩展,图中为标准模式。
- 与 PLC 画面同步:画面写入地址回写当前画面号;画面取自地址读取目标画面号。
- 预设字节序:设置整数、浮点数的数据排列。
6. 台达 DELTA(DVP)
台达 DVP 使用 Modbus ASCII 通信和 LRC 校验,配置如下所示。

- 最多读取数:设置单次读取的最大数量。
- 读取间隔数:设置合并读取时允许跨过的地址数量。
- 写重试次数:设置写入失败后的重试次数。
- 超时时间:等待 PLC 应答的时间,单位 ms。
- 间隔时间:两次通信之间的间隔,单位 ms。
- 写寄存器命令:可选自动或
0x10。 - 离线读取优化:减少离线从机占用的通信时间。
- 与 PLC 画面同步:画面写入地址回写当前画面号;画面取自地址读取目标画面号。
- 从站:设置 PLC 数目、站号和地址范围。
- 预设字节序:设置整数、浮点数的数据排列。
7. 信捷 XINJE(XC)
信捷 XC 使用 Modbus RTU 通信和 CRC 校验,配置如下所示。

- 最多读取数:设置单次读取的最大数量。
- 读取间隔数:设置合并读取时允许跨过的地址数量。
- 写重试次数:设置写入失败后的重试次数。
- 超时时间:等待 PLC 应答的时间,单位 ms。
- 间隔时间:两次通信之间的间隔,单位 ms。
- 写寄存器命令:可选自动或
0x10。 - 离线读取优化:减少离线从机占用的通信时间。
- 与 PLC 画面同步:画面写入地址回写当前画面号;画面取自地址读取目标画面号。
- 从站:设置 PLC 数目、站号和 XC 系列地址范围。
- 预设字节序:设置整数、浮点数的数据排列。
8. 信捷 XINJE(XD)
信捷 XD 使用 Modbus RTU 通信和 CRC 校验,配置如下所示。

- 最多读取数:设置单次读取的最大数量。
- 读取间隔数:设置合并读取时允许跨过的地址数量。
- 写重试次数:设置写入失败后的重试次数。
- 超时时间:等待 PLC 应答的时间,单位 ms。
- 间隔时间:两次通信之间的间隔,单位 ms。
- 写寄存器命令:可选自动或
0x10。 - 离线读取优化:减少离线从机占用的通信时间。
- 与 PLC 画面同步:画面写入地址回写当前画面号;画面取自地址读取目标画面号。
- 从站:设置 PLC 数目、站号和 XD 系列地址范围。
- 预设字节序:设置整数、浮点数的数据排列。