S7-1200与欧姆龙智能仪表Modbus通信案例

描述

来源:跟我学PLC吧

一、 导读

Modbus 通信是一种应用广泛的通信协议 ,在变频器、智能仪表或是其他的一些智能设备上应用的一种通用通信协议,本文以S7-1200系列PLC作为Modbus主站,以欧姆龙E5EZ的智能温控仪表作为从站为例,使用SCL编程语言编写S7-1200实现对欧姆龙智能温控仪表的当前温度值的读取和修改设定温度值。

二、硬件选择与仪表通信参数设置

(1)硬件选配

在本案例中S7-1200PLC选择CPU型号为 CPU1214C,RS485通信接口,选择通信板CB1241 ,欧姆龙智能仪表为欧姆龙E5EZ型仪表。PLC通信信号板与欧姆龙智能仪表的接线如下图所示:

S7-1200

(2)仪表通信参数设置 仪表通信参数主如下图所示,主要包括通信协议选择,站号设置,波特率,数据位,校验位等。

S7-1200

ü通信协议选择Modbus通信协议,在仪表上选择Mod。

ü通信单元号(站号),这里设置为01

ü通信波特率设置,这里设置9.6,表示9600bps

ü数据位,这里设置为8位数据位

ü停止位,这里设置为1个停止位

ü奇偶校验,这里设为EVEN(偶校验)

三、通信程序编写

(1)地址的计算

根据欧姆龙E5EZ仪表的通信说明书中关于Modbus通信数据的查询表,可查找到PV值的数据地址为0404H,大小为32位,设定温度值的地址为0106H,大小同位32位地址,如下标所示:

S7-1200

根据S7-1200Modbus通信指令上对地址的规定采用的是Modbus寄存器地址,所以经过换算后地址PV值的地址Modbus寄存器地址为十进制数的41029,设定温度值的Modbus寄存器地址为十进制数的40263。

注:Modbus寄存器地址主要有4种类型,分别为0XXXX类型,表示对线圈的读写,1XXXX类型,表示对输入离散量的读取,3XXXX,表示对输入寄存器读取(对应Modbus功能码为04),4XXXX表示对保持性寄存器的读写操作(对应功能码为06,03,16)。 计算方法,把对应的十六进制的数据地址换算为十进制数后,再加上1,最后在等到的结果前面添加一个数字4,表示对应类型。

(2)新建通信数据块DB1000

新建一个数据块DB1000,在该数据块中定义通信相关的变量,并给对应的变量赋值通信相关的数值,如下图所示:

S7-1200

其中,变量CommunicationData的定义结构按通信指令“Modbus_Master”指令管脚进行定义,可根据通信数据调试多少来修改定性的数组元素的数量。

(3)新建通信程序块FB1000

新建一个FB块并对该FB块命名为”仪表通信程序”,该块的编程语言选择SCL编程语言,在该FB块的接口区中建立如下图所示的接口区变量。

S7-1200

启用通信连接和调用通信端口初始化操作程序

S7-1200

S7-1200

调用Mast指令完成数据交换和改变需要发送数据的程序

S7-1200

在OB块中调用该通信程序,并为该通信程序的接口分配对应的实参。

S7-1200

四、结语

该案例中需要注意:

(1)修改修改初始指令中的模式,在首次扫描位接通时,把4传送给“Modbus_Comm_Load_DB.MODE”变量中。

(2)若CommunicationData变量数值的元素是从0开始时,那么在通信程序的FB块的接口区中定义的常量StartValue的值应设置为0。

(3)若通信的条数增加时,可修改CommunicationData变量数值的元素的数量,并对元素中的变量定义相关的数据,然后在DataCount中指定通信的数据条数,无需对通信程序进行调整。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分