兴泰科技 · 技术支持中心
首页/经验库

现场经验库

共 16 条 · 来自一线调试的纠错记录与编程规范,持续补充

共 16 条

纠错记录

1. 指令条数 ≠ 步数

用户纠正:"4322不是程序步数,是指令条数"。

  • 步号是 PLC 指令在内存中的执行地址(每条指令占多步)
  • 指令条数是实际梯形图逻辑的行数
  • 两者不同,不要混淆

2. ADPRW 通道编码

H0001 和 H0201 都是串口2站号1。

  • H0101 = 串口1站号1
  • H0201 = 串口2站号1
  • H0401~H0A01 = 网口 Socket1~7
  • 高字节=通道,低字节=站号

Modbus RTU 主站梯形图编写规范

一、通讯参数设置(上电 M8002)

通讯口通讯格式寄存器重试间隔超时
串口1D8120D8132D8130D8129
串口2D8400D8406D8410D8409

D8120/D8400 格式值(常用):

波特率数据位校验停止位D8120值
96008无1H0C081
192008偶1H0D081

二、ADPRW 指令格式

ADPRW  站号  功能码  起始地址  数量  数据首地址
  • 站号:串口1用 H01xx(xx=站号),串口2用 K1/K2(默认)
  • 功能码:K3=读保持寄存器(03H),K6=写单个(06H),K16=写多个(10H)
  • 完成标志:M8029(所有通道通用)

三、两种写法:轮询 vs 触发

写法A:轮询循环(推荐,多站/多操作连续通讯)

用 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

写法B:触发式(单站/按需通讯)

外部按钮或条件触发一次通讯,适合只和一个从站通讯、不需要轮询的场景:

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                            // 完成灯

两种写法选择:

  • 轮询:多站多操作,自动循环,推荐
  • 触发:单站按需读,X0按一次发一次,完成后自动复位

ST 写法(参考)

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 用 MOV(EN, 值, 目标) 函数调用
  • ADPRW 第一参数是使能 EN
  • 常量直接写数字 0/1/3/6,不写 K0/K3
  • 十六进制用 H0101,不支持 16# 前缀

四、注意事项

  1. 轮询/触发根据需求选:多站用轮询循环,单站按需用触发式
  2. 完成标志用 M8029,不是 M8400(M8400 是串口2专用,M8029 通用)
  3. 站号写法:串口2直接 K1/K2,串口1必须 H0101/H0102
  4. 功能码用 K3/K6,不用 H0300/H0600
  5. X 输入汇总:MOV K2X000 D0(X0~X7 8位到D0低字节)
  6. 数据合并:WOR D1 D0 D3(或操作合并数据)
  7. 重试 D8406/D8132 设 K1,间隔 D8410/D8130 设 K10

XingTai PLC Studio 梯形图编写注意

续行格式

  • 软件梯形图检查要求多操作数指令一行写全:ADPRW H0101 K3 K0 K1 D1
  • 不要分成多行续行(会报"缺少第X个操作数续行")
  • GX Works2 CSV 格式才需要多行续行

D 寄存器范围

  • Int16:-32768 ~ 32767
  • D104=50000 会报 too large,最大 32767

虚拟 PLC 限制

  • 不仿真脉冲指令(PLSY/DDRVI/DDRVA),D8140 始终为 0
  • step_virtual_plc 推进扫描,虚拟时钟不走,T 定时器不计时
  • set_virtual_inputs 必须显式设每个 index,空数组不清空

以太网配置(XT3U-C 系列带以太网口)

一、IP 配置寄存器

寄存器内容示例 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~D7017DNS服务器K114 K114 K114 K114

修改后需重启 PLC 生效。

二、通道模式寄存器

通道选项/模式D本地端口D远端IP高字D远端IP低字D远端端口D
1D7031D7042D7043D7044D7045
2D7032D7046D7047D7048D7049
3D7033D7050D7051D7052D7053
4D7034D7054D7055D7056D7057
5D7035D7058D7059D7060D7061
6D7036D7062D7063D7064D7065
7D7037D7066D7067D7068D7069

通道0为编程口,不可改。

三、模式取值(写入 D7031~D7037)

值模式角色用途
0关闭-禁用通道
1编程口TCP Server工程下载/维护
2Modbus主站TCP ClientPLC主动连接设备,填远端IP/端口
3Modbus从站TCP Server被上位机/SCADA访问,本地端口5000
4上位机协议TCP ServerHMI接入,本地端口6551
9UDP搜索UDP设备发现/广播

四、IP 打包规则

  • IP 两个16位寄存器:高字=a.b,低字=c.d
  • 例:192.168.1.50 → 高字 0xC0A8,低字 0x0132
  • 程序里用 MOV K192 D7043 / MOV K168 D7044 分两段写

五、ADPRW 以太网通讯

以太网通道用 ADPRW,第一个操作数编码:

  • H0401~H0A01 = 网口 Socket1~7,站号1
  • 例:H0401 = 通道1(网口)站1
  • 和串口写法一样,只是通道编码不同

六、配置流程

  1. 用兴泰软件"以太网设置"图形界面配置 IP 和通道
  2. 点"生成ST代码"自动生成 MOV 初始化代码
  3. 复制到 GX Works2 ST 中
  4. 下载 PLC,重启生效
  5. 软件自动配的寄存器是 D7002~D7069 系列

七、实战经验(2026-09-13 验证)

本机IP:D7002~D7005 四段分开写(K192 K168 K1 K88) 远端IP:D7043=高字(H0C0A8=192.168),D7044=低字(H017B=1.123),D7045=端口

  • 注意:远端IP不是四段分开写!是两个16位打包寄存器
  • 192.168.1.123 → H0C0A8 + H017B
  • 192.168.3.172 → H0C0A8 + H03AC
  • K49320 超D寄存器范围(最大32767),必须用H常量

ADPRW 数据区只能用M点:

  • ADPRW H0401 K1 K0 K8 M0 读线圈直接读到M0~M7
  • ADPRW H0401 K15 K0 K8 M0 写M0~M7到从站线圈
  • 不能用D寄存器(D位操作.8以上报错)
  • 读写用同一组M点即可,不需要分开:轮询先读从站→M点,再写M点→从站,M点自动反映从站状态

功能码:

  • K1=读线圈(01H),K15=写多线圈(0FH)
  • K3=读保持寄存器(03H),K16=写多寄存器(10H)
  • K6=写单寄存器(06H)
i 经验笔记仅供参考,具体接线与参数请结合机型手册;拿不准的地方联系技术支持:(电话/微信)。