1. 指令条数 ≠ 步数
用户纠正:"4322不是程序步数,是指令条数"。
- 步号是 PLC 指令在内存中的执行地址(每条指令占多步)
- 指令条数是实际梯形图逻辑的行数
- 两者不同,不要混淆
共 16 条 · 来自一线调试的纠错记录与编程规范,持续补充
用户纠正:"4322不是程序步数,是指令条数"。
H0001 和 H0201 都是串口2站号1。
| 通讯口 | 通讯格式寄存器 | 重试 | 间隔 | 超时 |
|---|---|---|---|---|
| 串口1 | D8120 | D8132 | D8130 | D8129 |
| 串口2 | D8400 | D8406 | D8410 | D8409 |
D8120/D8400 格式值(常用):
| 波特率 | 数据位 | 校验 | 停止位 | D8120值 |
|---|---|---|---|---|
| 9600 | 8 | 无 | 1 | H0C081 |
| 19200 | 8 | 偶 | 1 | H0D081 |
ADPRW 站号 功能码 起始地址 数量 数据首地址
用 M0→M1→M2→M3→M0 循环,每个站/每个操作完成后自动切换,无需外部触发:
M0: ADPRW H0101 K3 K0 K1 D1 // 读站1保持寄存器0→D1
AND M8029 → RST M0, SET M1
M1: ADPRW H0102 K3 K0 K1 D2 // 读站2→D2
AND M8029 → RST M1, SET M2
M2: ADPRW H0101 K6 K1 K1 D3 // 写D3→站1寄存器1
AND M8029 → RST M2, SET M3
M3: ADPRW H0102 K6 K1 K1 D3 // 写D3→站2寄存器1
AND M8029 → RST M3, SET M0
外部按钮或条件触发一次通讯,适合只和一个从站通讯、不需要轮询的场景:
LD X000 AND M0 ANI M1 ANI M8029
SET M1 // 触发请求
LD M1
ADPRW H0101 K3 K0 K1 D1 // 读站1
LD M8029 AND M1
RST M1 // 完成自动复位
OUT Y001 // 完成灯
两种写法选择:
MOV(M8002, H0C081, D8120);
MOV(M8002, 10, D8130);
MOV(M8002, 0, D8132);
MOV(M8002, 0, D0);
IF (D0 = 0) THEN
ADPRW(M8000, H0101, 3, 0, 1, D1);
END_IF;
IF (D0 = 0) AND M8029 THEN
D0 := 1;
END_IF;
ST 注意:
MOV(EN, 值, 目标) 函数调用ADPRW H0101 K3 K0 K1 D1| 寄存器 | 内容 | 示例 192.168.1.100 |
|---|---|---|
| D7002~D7005 | 本机IP(4个段) | K192 K168 K1 K100 |
| D7006~D7009 | 子网掩码 | K255 K255 K255 K0 |
| D7010~D7013 | 默认网关 | K192 K168 K1 K1 |
| D7014~D7017 | DNS服务器 | K114 K114 K114 K114 |
修改后需重启 PLC 生效。
| 通道 | 选项/模式D | 本地端口D | 远端IP高字D | 远端IP低字D | 远端端口D |
|---|---|---|---|---|---|
| 1 | D7031 | D7042 | D7043 | D7044 | D7045 |
| 2 | D7032 | D7046 | D7047 | D7048 | D7049 |
| 3 | D7033 | D7050 | D7051 | D7052 | D7053 |
| 4 | D7034 | D7054 | D7055 | D7056 | D7057 |
| 5 | D7035 | D7058 | D7059 | D7060 | D7061 |
| 6 | D7036 | D7062 | D7063 | D7064 | D7065 |
| 7 | D7037 | D7066 | D7067 | D7068 | D7069 |
通道0为编程口,不可改。
| 值 | 模式 | 角色 | 用途 |
|---|---|---|---|
| 0 | 关闭 | - | 禁用通道 |
| 1 | 编程口 | TCP Server | 工程下载/维护 |
| 2 | Modbus主站 | TCP Client | PLC主动连接设备,填远端IP/端口 |
| 3 | Modbus从站 | TCP Server | 被上位机/SCADA访问,本地端口5000 |
| 4 | 上位机协议 | TCP Server | HMI接入,本地端口6551 |
| 9 | UDP搜索 | UDP | 设备发现/广播 |
以太网通道用 ADPRW,第一个操作数编码:
本机IP:D7002~D7005 四段分开写(K192 K168 K1 K88) 远端IP:D7043=高字(H0C0A8=192.168),D7044=低字(H017B=1.123),D7045=端口
ADPRW 数据区只能用M点:
ADPRW H0401 K1 K0 K8 M0 读线圈直接读到M0~M7ADPRW H0401 K15 K0 K8 M0 写M0~M7到从站线圈功能码: