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

雷诺尔综合服务商    

雷诺尔低压软启动,雷诺尔低压变频器,防爆电器,马达保护器,EPS应急电源

新闻分类
  • 暂无分类
联系方式
  • 联系人:吴经理
  • 电话:18576370666
站内搜索
 
首页 > 新闻中心 > 西门子200PLC中做自由口通讯!
新闻中心
西门子200PLC中做自由口通讯!
发布时间:2026-02-01        浏览次数:3        返回列表

西门子 S7-200 PLC 中实现自由口通讯(Freeport),核心是通过 PLC 的串口(PORT0/PORT1)自定义通讯协议,与变频器、触摸屏、传感器等第三方设备完成数据交互。以下是完整的实操方案,包含通讯参数配置、程序编写、调试方法和典型案例,适配 S7-200(CPU224/226)的编程软件 STEP 7-Micro/WIN,代码可直接复制使用。

一、自由口通讯核心前提

1. 硬件与软件基础

  • PLC 型号:需带串口的 S7-200(如 CPU224 CN、CPU226 CN,PORT0 为 RS485,PORT1 可选);

  • 编程软件:STEP 7-Micro/WIN V4.0 SP9(兼容所有 S7-200 型号);

  • 通讯接线:RS485 串口(3 脚 = TXD/RXD+,8 脚 = TXD/RXD-),与从站设备的 RS485 端子交叉 / 直连(依设备而定),需接 120Ω 终端电阻(远距离通讯时)。

2. 核心参数(需与从站一致)

自由口通讯需统一波特率、数据位、停止位、奇偶校验,工业常用配置:

参数常用值说明
波特率9600/19200 bps优先 9600(兼容性好)
数据位8 位几乎所有设备通用
停止位1 位匹配多数工业设备
奇偶校验无(None)避免校验错误导致通讯失败

二、自由口通讯编程步骤(以发送 + 接收为例)

1. 关键指令说明

S7-200 自由口通讯依赖特殊寄存器(SM)库指令,核心指令 / 寄存器如下:

指令 / 寄存器功能
XMT(发送)启动自由口数据发送,指定发送缓冲区和长度
RCV(接收)启动自由口数据接收,指定接收缓冲区和触发条件
SMB30(PORT0)配置 PORT0 的通讯模式(自由口 / PP)、波特率、数据位、校验等
SMB86(PORT0 接收)接收状态字节(0 = 空闲,2 = 接收完成,5 = 接收溢出)
SMB130(PORT1)同 SMB30,适配 PORT1
SM3.0(PORT0 发送)发送完成中断标志(需绑定中断程序)

2. 完整程序(PORT0,9600bps,无校验,8N1)

以下程序实现:PLC 主动发送 1 组数据(如 01 03 00 00 00 01 84 0A),并接收从站回复的数据,存储到 V 区。

步骤 1:配置自由口通讯参数

ladder

// 程序段1:初始化自由口参数(SMB30配置PORT0)
LD     SM0.1          // 首次扫描触发初始化
MOVB   16#09, SMB30   // 16#09 = 自由口模式 + 9600bps + 8位数据 + 1位停止 + 无校验
// 16#09拆解:二进制00001001 → 高4位0000=9600bps,低4位1001=8位数据+1停止+无校验
ENI                   // 启用全局中断(接收/发送完成需中断)
步骤 2:触发数据发送(XMT 指令)

ladder

// 程序段2:手动触发发送(I0.0为发送按钮)
LD     I0.0
EU                    // 上升沿触发(避免重复发送)
MOVB   8, VB100       // 发送数据长度=8字节
MOVB   16#01, VB101   // 发送缓冲区起始地址VB101,数据:01 03 00 00 00 01 84 0A
MOVB   16#03, VB102
MOVB   16#00, VB103
MOVB   16#00, VB104
MOVB   16#00, VB105
MOVB   16#01, VB106
MOVB   16#84, VB107
MOVB   16#0A, VB108
XMT    VB100, 0       // 启动PORT0发送,发送缓冲区VB100(长度+数据)
步骤 3:接收从站回复(RCV 指令)

ladder

// 程序段3:配置接收参数并启动接收
LD     SM0.0
MOVB   16#00, SMB87   // 接收控制字节:无起始符/结束符,超时1s,接收任意字符
MOVW   +1000, SMW90   // 接收超时时间=1000ms(1s)
MOVB   0, SMB89       // 无起始字符
MOVB   0, SMB94       // 无结束字符
RCV    VB200, 0       // 启动PORT0接收,接收缓冲区VB200
步骤 4:接收完成处理(中断 / 状态判断)

ladder

// 程序段4:接收完成判断(SMB86=2表示接收完成)
LD     SMB86
EU
MOVB   SMB88, VB300   // 存储接收字节数
MOVB   VB201, VB301   // 存储接收的第1个数据字节
MOVB   VB202, VB302   // 存储接收的第2个数据字节
// 可扩展:根据从站协议解析数据(如Modbus RTU回复)
步骤 5:发送完成中断(可选)

ladder

// 程序段5:绑定发送完成中断(PORT0发送完成触发INT0)
LD     SM0.1
ATCH    INT_0, 9      // 中断事件9=PORT0发送完成,绑定到中断程序INT0
ENI

// 中断程序INT0:发送完成后置位标志
INT_0:
LD     SM0.0
SET    M0.0           // M0.0=发送完成标志
RETI                  // 中断返回

三、典型应用案例:自由口通讯控制变频器

以控制台达 VFD 变频器为例(Modbus RTU 协议,自由口模拟),实现变频器启动、调速:

1. 通讯指令(控制变频器正转,频率 50Hz)

发送数据:01 06 00 01 00 01 08 0A(地址 01,写寄存器 0001,值 0001 = 正转);01 06 00 02 01 F4 39 CB(地址 01,写寄存器 0002,值 01F4=50Hz)。

2. 适配程序(替换上述发送数据段)

ladder

// 启动变频器正转(I0.1触发)
LD     I0.1
EU
MOVB   8, VB100
MOVB   16#01, VB101
MOVB   16#06, VB102
MOVB   16#00, VB103
MOVB   16#01, VB104
MOVB   16#00, VB105
MOVB   16#01, VB106
MOVB   16#08, VB107
MOVB   16#0A, VB108
XMT    VB100, 0

// 设置频率50Hz(I0.2触发)
LD     I0.2
EU
MOVB   8, VB100
MOVB   16#01, VB101
MOVB   16#06, VB102
MOVB   16#00, VB103
MOVB   16#02, VB104
MOVB   16#01, VB105
MOVB   16#F4, VB106
MOVB   16#39, VB107
MOVB   16#CB, VB108
XMT    VB100, 0

四、调试与排错要点

  1. 参数一致性:PLC 与从站的波特率、数据位、校验必须完全一致,否则无数据收发;

  2. 接线检查:RS485 的 3/8 脚是否接对(多数设备 3=+,8=-),终端电阻仅远距离(>100m)接;

  3. 中断启用:必须执行ENI指令启用全局中断,否则发送 / 接收完成中断无效;

  4. 缓冲区长度:发送长度(VB100)需与实际数据字节数一致,避免发送不全;

  5. 状态监控:通过 STEP 7-Micro/WIN 的 “状态表” 监控 SMB86(接收状态)、VB200(接收数据),判断是否通讯成功;

  6. 干扰处理:通讯线用屏蔽双绞线,远离动力线,单端接地,降低电磁干扰。

五、进阶优化:自由口通讯封装成子程序

将发送 / 接收逻辑封装为子程序,便于复用:

ladder

// 子程序:自由口发送(参数:发送长度IN1,发送缓冲区IN2,端口IN3)
SBR_0:
LD     SM0.0
XMT    IN2, IN3
RET

// 调用示例:发送8字节,缓冲区VB100,PORT0
LD     I0.0
EU
CALL   SBR_0, 8, VB100, 0

总结

  1. 西门子 S7-200 自由口通讯核心是配置 SMB30/SMB130 参数 + XMT/RCV 指令 + 中断(可选)

  2. 编程需确保通讯参数与从站一致,发送 / 接收缓冲区长度准确;

  3. 调试优先监控 SMB86(接收状态)、SM3.0(发送完成),快速定位通讯故障;

  4. 实际应用中可封装子程序,提升代码复用性,适配不同从站设备。

如果需要针对特定从站设备(如传感器、触摸屏) 定制自由口通讯程序,或补充 Modbus RTU 协议的完整解析逻辑,我可以进一步细化。

收缩
  • QQ咨询

  • 电话咨询

  • 18576370666
  • 添加微信客服