返回主站|会员中心|保存桌面

西门子PLC服务商    

PLC、变频器、电机,触摸屏,低压

联系方式
  • 联系人:方经理
  • 电话:13073017555
  • 邮件:gzws26@126.com
新闻分类
  • 暂无分类
首页 > 新闻中心 > 西门子200PLC中如何做自由口通讯!
新闻中心
西门子200PLC中如何做自由口通讯!
发布时间:2026-06-21        浏览次数:1        返回列表

一、基础概念

S7-200 Port0(DB9 编程口)、Port1(部分 CPU224XP/226 才有第二个 485 口)支持自由口 Free Port:脱离 PPI 协议,自定义串口协议(Modbus RTU、自定义上位机、仪表、变频器、单片机 485 都能用)。核心寄存器:SMB30(Port0) / SMB130(Port1),用来配置串口波特率、数据位、校验、停止位。

SMB30 格式(Port0)

表格

bit7 bit6bit5 bit4 bit3bit2bit1 bit0
00=960001=1920010=3840011=57600000=8 数据位001=7 数据位0 = 无校验1 = 偶校验00=1 停止位01=2 停止位

示例:9600,8,N,1 → SMB30=2#0000000019200,8,E,1 → SMB30=2#01000100

二、自由口启用条件

  1. PLC 必须处于 RUN 运行模式;STOP 模式强制切换回 PPI,自由口失效。

  2. SMB30 写入对应参数,自动切换为自由口;STOP 或清零 SMB30 恢复 PPI。

  3. 通讯两条核心指令:

    • 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 判定帧结束,无需结束符

七、自由口通讯常见故障

  1. STOP 模式收不到发不出自由口仅 RUN 有效,下载程序后切 RUN。

  2. 能发不能收

    • 未执行 RCV 启动接收;

    • SMB87 配置错误,未开启接收;

    • 485 A/B 线反接(Port0 3 脚 A、8 脚 B)。

  3. 乱码SMB30 波特率、校验和外设不一致;接地不良干扰。

  4. 中断不触发未 ENI 全局开中断、ATCH 绑定事件错误。

  5. 无法同时触摸屏 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

  1. PLC 上电自动监听串口;

  2. 串口助手发送:1234\r(末尾回车 0D);

  3. PLC 接收中断读取 VB201~VB204 数据;

  4. I0.0 按下发送预设字符串给上位机。

收缩
  • QQ咨询

  • 电话咨询

  • 13073017555
  • 添加微信客服