南京西门子PLC系列代理商
西门子S7-200系列PLC的MODBUS通信功能
MODBUS通信协议概述:
MODBUS协议是一个通用的协议,在很多智能设备上都支持这个通信协议,如变频器,智能温控仪表等都支持MODBUS通信协议。
MODBUS通信协议有具有串行链路上的MODBUS ASCAII通信和MODBUS RTU通信,也有基于TCP/IP上的 MODBUS TCP通信。这里我们主要介绍基于串行链路上的MODBUS RTU的通信。
MODBUS RTU的信息帧格式:
Start:起始码,表示的是一个信息帧的开头,MODBUS RTU通信,使用时间来作为信息帧的开头,主要是检测传输线上的空闲的时间,长度为3.5个字符时长,一个字符的长度跟数据位, 停止位、起始位、奇偶校验位,波特率有关。
Address:地址码(一个字节),表示的是从站的站号,从站站号有从站设备给定或是设置,如变频器,可以在变频器参数中设置变频器的站号。
Function:功能码(一个字节),描述对从站的读写操作,是对从站读取数据,还是写入数据到从站
Data:数据区(N个字节),数据区主要有两部分构成,一部分称为数据区的地址,一部分称为数据区的内容,如需要控制变频器的运行,则变频器的运行代码称为数据区内容,运行代码需要写入的地方称为数据区地址。
CRC:校验码(2字节),对从站号到数据区的数据进行CRC校验,可以参考前面一篇对于CRC校验程序设计的内容介绍。
End:结束码,与起始码一样,也是通过时间进行判断。
接下来,我们以西门子S7-200SMART系列的PLC与深圳的海普蒙特的变频器为例,来说明使用MODBUS的通信方式来控制变频器的运行,频率的修改,及读取一些参数的程序
首先,我们需要熟悉变频器说明书上所描述的通信的内容,从说明书上显示支持的功能码为03,06,和16这三种功能码(注意0X10表示的是16进制数10):
西门子PLC定时器定时时间太短?巧用计数器延长计时时间
在实际应用中,我们常会用到计时时长远超过S5定时器的定时时长的情况。比如,我们要求某一设备在满足运行条件后,持续运行8个小时。此时,单独用S5定时器很难实现这一控制要求。 实现上述控制要求的方法有多种,这里,介绍一种"利用计数器扩展定时时长"的方法,并简要引出S7中计数器的概念。 一、控制任务归纳 控制任务为:某一设备在满足运行条件后,持续运行8个小时 做以下假设: 1、假设该设备的各运行条件汇总为M10.0,且M10.0=1时,运行条件满足; 2、该设备的运行命令由Q2.0给出,即Q2.0=1时,设备运行; 3、为方便讨论,这里不考虑本设备故障、来自其他设备的连锁/互锁、及快/急停等各种信号的影响。 二、利用计数器扩展定时时长 1、计数器的相关概念 S7的系列CPU为计数器保留了一片存储区域。一个计数器包括一个16位的字和一个二进制的位。计数器的字用来存储当前的计数值,而计数器的触点状态反映在它的位上。如图1所示,为计数器的字。 图1 计数器的"字" 程序中,计数器的表示方法为:"C+计数器号",如C10表示10号计数器。 计数器的计数范围为:0-999。 仅当计数器的当前计数值为0时,计数器的触点状态位才为0;否则,其触点/线圈状态位1; 计数器分为加计数器、减计数器及加/减计数器,这里,我们用到了减计数器。 2、设计计数脉冲 我们可以首先设计一个"方波"信号,具体实现办法可参见《西门子S7 300仿真实验平台——编程实现矩形波、方波发生器》 这里,需要确定方波的周期。如图2所示。
图2 定时器及计数器的初始值的确定 如图3所示,为方波发生器,当M0.0=1时,定时器T1和T2周期性的工作,并在"#temp1"输出一个周期为288s的方波信号。
图3 方波发生器 3、实现延时时长为8h的"延时断"功能 有了图3所示的"方波发生器"后,我们只需利用减1计数器记录100个方波脉冲,即: 288s*100=28800s=8h 即可实现定时8小时的功能,如图4所示。
图4 时长为8h的"延时断"
|
南京西门子PLC系列代理商