一、基础概念
S7-200 Port0(DB9 编程口)、Port1(部分 CPU224XP/226 才有第二个 485 口)支持自由口 Free Port:脱离 PPI 协议,自定义串口协议(Modbus RTU、自定义上位机、仪表、变频器、单片机 485 都能用)。核心寄存器:SMB30(Port0) / SMB130(Port1),用来配置串口波特率、数据位、校验、停止位。
SMB30 格式(Port0)
表格
| bit7 bit6 | bit5 bit4 bit3 | bit2 | bit1 bit0 |
|---|---|---|---|
| 00=960001=1920010=3840011=57600 | 000=8 数据位001=7 数据位 | 0 = 无校验1 = 偶校验 | 00=1 停止位01=2 停止位 |
示例:9600,8,N,1 → SMB30=2#0000000019200,8,E,1 → SMB30=2#01000100
二、自由口启用条件
PLC 必须处于 RUN 运行模式;STOP 模式强制切换回 PPI,自由口失效。
SMB30 写入对应参数,自动切换为自由口;STOP 或清零 SMB30 恢复 PPI。
通讯两条核心指令:
XMT:发送缓冲区数据(TX)
RCV:接收外部数据存入缓冲区(RX)
三、发送指令 XMT
1. 发送缓冲区格式(VB 起始)
VBn:缓冲区总字节长度(不含自身)VBn+1 ~ VBn+length:要发送的报文内容
例:VB100=3,VB101=01,VB102=03,VB103=06代表发送 01 03 06 三条字节,总长 3。
2. XMT 指令格式
XMT VB100, 0
VB100:缓冲区首地址
0 = Port0;1=Port1
3. 发送完成中断标志
Port0 发送完成中断事件:9Port1 发送完成中断事件:26SM4.5=Port0 发送空闲;SM4.6=Port1 发送空闲
四、接收指令 RCV(重点)
1. 接收缓冲区格式(VB 起始)
VBn:接收有效字节长度VBn+1 ~ VBn+n:收到的数据
2. RCV 关键控制寄存器(Port0)
SMB86:接收状态字节(判断是否接收完成 / 报错)
SMB87:接收控制位(启用结束符、超时、起始条件)
SMB88:自定义起始字符
SMB89:自定义结束字符
SMW90:空闲超时时间(ms)
SMW92:字符间隔超时(ms)
常用配置 SMB87=2#10010100:允许接收、检测结束字符、忽略空闲检测。
3. 接收完成中断
Port0 接收完成中断:23Port1 接收完成中断:24
五、标准通用模板(Port0,Modbus RTU 类自定义协议)
功能:上电初始化自由口 9600 8N1,收到完整报文触发中断,回复应答。
1. 主程序 OB1
ladder
LD SM0.1 //首次扫描 MOVB 16#00, SMB30 //Port0 9600,8,N,1 MOVB 16#94, SMB87 //开启接收,检测结束符 MOVB 16#0D, SMB89 //结束符0D(回车) ATCH INT_0, 23 //绑定接收完成中断23 ENI //全局开中断 LD I0.0 //触发发送 EU XMT VB100, 0 //发送缓冲区VB100
缓冲区定义:VB100=4VB101,VB102,VB103,VB104 = 自定义发送报文
2. 接收中断子程序 INT_0(收到数据自动执行)
ladder
LD SM0.0 //VB200是接收缓冲区首地址 //VB200 = 收到字节长度,VB201开始是数据 //此处添加报文解析逻辑:校验、截取数据、运算 //重新开启下一次接收,持续监听 RCV VB200, 0
3. 上电启动接收(必须)
在 SM0.1 首次扫描末尾添加:RCV VB200, 0上电后持续等待外部设备下发数据。
六、两种常用接收触发模式
模式 1:按结束字符接收(仪表、串口上位机最常用)
SMB87=16#94,SMB89 设报文尾(0D、0A、0x03 等),收到结束符自动触发中断。
模式 2:空闲时间接收(Modbus RTU 推荐)
Modbus 规定帧间隔 > 3.5 字符判定一帧结束:SMB87=16#80(开启空闲超时)SMW90=5 // 空闲 5ms 判定帧结束,无需结束符
七、自由口通讯常见故障
STOP 模式收不到发不出自由口仅 RUN 有效,下载程序后切 RUN。
能发不能收
未执行 RCV 启动接收;
SMB87 配置错误,未开启接收;
485 A/B 线反接(Port0 3 脚 A、8 脚 B)。
乱码SMB30 波特率、校验和外设不一致;接地不良干扰。
中断不触发未 ENI 全局开中断、ATCH 绑定事件错误。
无法同时触摸屏 PPI + 自由口Port0 同一时间只能一种协议;想同时监控 + 通讯,用 CPU224XP/226 的 Port1 做自由口,Port0 留给触摸屏 PPI。
八、Port1 双口补充(CPU224XP/226)
SMB130 配置 Port1 串口参数
XMT xxx, 1 / RCV xxx,1
发送中断 26,接收中断 24适合场景:Port0 接触摸屏,Port1 自由口连变频器 / 仪表,互不冲突。
九、简易收发示例(文本上位机串口调试助手)
参数:9600 8N1,结束符 0D
PLC 上电自动监听串口;
串口助手发送:
1234\r(末尾回车 0D);PLC 接收中断读取 VB201~VB204 数据;
I0.0 按下发送预设字符串给上位机。





