加入收藏 在线留言 联系我们
关注微信
手机扫一扫 立刻联系商家
全国服务热线15267534595

SIEMENS广西省防城港市西门子(授权)一级代理商-西门子变频器总分销商

更新时间
2025-01-19 09:10:00
价格
请来电询价
变频器
西门子一级代理
伺服电机
西门子一级总代理
西门子代理商
西门子华南一级总代理
联系电话
18126392341
联系手机
15267534595
联系人
梁涛
立即询价

详细介绍

之前看到有人提出一个问题:

现有一套完整设备,触摸屏+6只传感器,屏和传感器用RS485总线通信,采用ModbusRtu协议,但没有屏的程序。这种情况,在不改变屏和传感器的条件下,实现用一个PLC也能采集到6只传感器的数据。刚好有点空,以此为引,测试一个简单的逻辑。


一,实现构想

S7-200 Smart本体具有一个RS485接口,ModbusRTU的指令库,也可以通过自由口协议进行编程。PLC的串口能发送和接收指令,如果把PLC串口接到总线上,打开端口,不发送数据,接收线路上的消息,对信息进行甄别,如果接收到来自传感器的信息,通过消息数据串的协议格式,将有效数据提取出来。


二,硬件和软件的搭建

首先,硬件上是支持的。通过双绞线把PLC的RS485接口接到已经存在总线上就可以了,主要的工作在于软件怎么实现。


思路,Modbus-RTU消息帧起始和结束,是通过空闲线时间来分辨的,3.5个字符的空闲时间。假设通信格式为:起始位1,数据位8,校验位1,停止位1,传输一个字符需11位,3.5个字符,总的位数等于3.5*11=38.5,在9.6k的波特率下,空闲时间约38.5/9600=4.0104167毫秒。刚好S7-200Smart有两个定时器指令BITIM和CITIM,可以用来做毫秒级的时间间隔处理。自由口打开,接收字符,采用中断8,即每接收一个字符就中断一次。


PLC上电运行时,进行一次BITIM,打开接收端口,

1,接收到第一个字符

2,中断

A,执行CITIM计算时间间隔,并重新执行BITIM记录时间,并如果大于4秒(空闲线检测),进入B,如果小于4毫秒,表示正在接收消息,若接收标志位1,进入C,若接收标志为0,表示信息错误,进入I;

B,时间间隔大于4秒,上一步中接收的字符是第一个字符,接收标志位置1;

C,把SMB2(接收到的字符)存放到缓冲区第一个字符,缓冲区数据个数自增1;

D,如果数据个数=预设的数据长度,认为消息已经接收完成,判定接收完成,进入E,如果小于,表示信息没有接收完,进入I;

E,比较通信指令,一般Modbus-RTU读寄存器指令为03H,如果接收到的第二个字符是03h,下一步进行CRC校验计算,核对校验字符;

F,CRC校验计算,核对校验字符;

G,核对成功,提取数据。否则进入H;

H,复位接收标志位;

I,中断返回。

3,回到第1步,继续接收字符。


三,编程测试

测试条件根据现有条件布置,手上刚好有两台S7-200Smart,一台作为Modbus-RTU服务器,使用Modbus从站指令库。通信格式1位起始位,8位数据位,偶校验,停止位默认1位,波特率9600,设备地址3;电脑作为客户端,读取服务器(从站)的数据,测试时,只读了一个字的数据。


1,用串口测试工具commix测试。OK

图片


2,用Modbus scan测试。OK

图片


程序:主程序

图片

中断程序

图片

图片

子程序 CRC校验

图片

图片



相关产品

联系方式

  • 电  话:18126392341
  • 联系人:梁涛
  • 手  机:15267534595
  • 微  信:15267534595