基于Modbus协议实现PLC与智能仪表的通讯

来源:网络  作者:网络转载   2019-09-22 阅读:200
摘 要:随着工业自动化技术的不断发展,Modbus协议现已不仅仅局限于应用在PLC/上位机之间的通讯上,许多智能仪表厂商也纷纷采用该协议作为自己产品的通讯协议。施耐德公司在其编程软件Concept2.2+补丁程序Service Release2中增加了一条功能强大的通讯指令XXMIT。笔者结合实例对该指令的Modbus Master使用方法做一些介绍,以供广大过程技术人员参考。关键字:Modbus协议; PLC; XXMIT指令; 智能仪表1 引言  Modbus 协议是法国施耐德公司推出的一个全开放的“主从式(Master/Slave)”通讯协议,其本意在于实现上位机(主设备)对PLC(从设备)内部存储区域的“直接”读写操作,无需用户对PLC进行通讯编程。随着工业自动化技术的不断发展,Modbus协议现已不仅仅局限于应用在PLC/上位机之间的通讯上,许多智能仪表厂商也纷纷采用该协议作为自己产品的通讯协议。与此同时,PLC也由以前单纯的I/O控制发展成为集控制、数据采集、通讯为一身,在越来越多的自动化工程中,PLC需要取代上位机,作为“主设备”来完成与智能仪表或其它支持该协议的PLC的通讯。针对这一情况,施耐德公司在其编程软件Concept2.2+补丁程序Service Release2中增加了一条功能强大的通讯指令XXMIT。通过该指令,用户可以将施耐德Modicon系列PLC上的原Modbus Slave通讯口作为Modbus Master口或标准串口来使用,大大扩展了Modicon系列PLC的通讯功能。本文将结合实例对该指令的Modbus Master使用方法做一些介绍,以供广大过程技术人员参考。2 XXMIT指令基本参数介绍  2.1 基本参数概述[align=center]基本参数列表[/align]  2.2 重要参数说明  2.2.1 Command参数  该参数的16个为位用于设置通讯口的不同工作方式  Bit1-Bit4: 使用Modem时需设定的相关参数  Bit5: 是否使用XON/XOFF流控制。设为1时表示使用XON/XOFF流控制  Bit6: 是否使用RTS/CTS握手信号。设为1时表示允许使用RTS/CTS信号  Bit7: 是否清除“Back Space”字符。设为1时表示在“Simple ASCII Input”和“Terminated  ASCII Input”模式下,清除MsgIn中的“Back Space”字符  Bit8: 是否接管通讯口FIFO缓冲区。设为1时表示XXMIT指令接管通讯口FIFO缓冲区的控制  Bit9: 是否启用Modbus模式。设为1时表示通讯口工作在Modbus Master模式下  Bit10: 是否启用标准串口模式。设我1时表示通讯口工作在标准串口模式下  注:Bit9,Bit10不能同时设为1  Bit11: 是否启用“Simple ASCII Input”模式,设为1时表示启用  Bit12: 是否启用“Terminated ASCII Input”模式,设为1时表示启用  Bit13: 不用  Bit14: 是否启用RS485模式。设为1时表示启用。只有在使用Modicon Momentum系列PLC时,该位才设为1  Bit15: 是否启用RTS/CTS Modem控制。设为1时表示启用  Bit16: 不用  2.2.2 Msgout参数  该参数中存放需发送的字符或数据。通常在Concept中用一个WORD型数组来给该参数赋值。当通讯口工作在Modbus Master模式下时,需按Modbus RTU的格式来给该参数赋值,但不含CRC校验值,具体的格式见下表  2.2.3 Port参数  只要使用Modicon Momentum系列PLC时,该参数才被设为2,否则该参数的值都被设定为1,表示用Port1进行通讯。3 实例  下面的例子为笔者在西宁寺沟口水电厂机组监控项目中,用Modicon Compact PLC与MP6000智能功率仪表通讯的程序,基此来对XXMIT指令的使用做更进一步的说明。  3.1 工程要求  通过PLC从MP6000智能仪表中读取机组当前的有功功率、无功功率等数据。  3.2 硬件情况:  PLC: 施耐德Modicon Compact系列PLC,CPU型号为TSX PC-E984-265  智能仪表:MP6000功率表  通讯协议:Modbus协议  3.3 软件情况:  PLC编程软件:Concept2.2+Service Release2  编程方式:ST文本编程  MP6000的数据区情况:把MP6000仪表中从第一个地址开始的64个数据读出来  PLC的数据区:从MP6000读出的数据写入PLC 40031开始的64个寄存器中  3.4 程序:  VAR  XXMIT_MB : XXMIT;  SET_CMD : SET_BIT;  END_VAR  SET_CMD (IN := 1,(* BOOL*)  NO :=9 (* UINT*)); (*把Command参数的bit9置1,让通讯口工作在Modbus Master模式下*)  XXMIT_CMD:=SET_CMD.RES;  XXMIT_MSGOUT[1]:=3; (***MODBUS功能码 ***)  XXMIT_MSGOUT[2]:=64; (***需从MP6000中读取的寄存器的数量 ***)  XXMIT_MSGOUT[3]:=5; (***MP6000的地址***)  XXMIT_MSGOUT[4]:=1; (***MP6000中数据的起始地址***)  XXMIT_MSGOUT[5]:=31; (***将读取的数据写入PLC从40031开始的64个寄存器中 ***)  XXMIT_MB (Start :=1, (* BOOL *)  Command :=XXMIT_CMD , (* WORD *)  MsgOut :=XXMIT_MSGOUT , (* ANY *)  MsgLen :=5 , (* INT *)  Port :=1 , (* BYTE *)  Baudrate :=9600 , (* INT *)  Databits :=8 , (* BYTE *)  Stopbits :=1 , (* BYTE *)  Parity :=2 , (* BYTE *)  RespTout :=1000 , (* INT *)  RetryLmt :=20 , (* INT *)  StartDly :=0, (* INT *)  EndDly :=0 (* INT *));参考文献:  1、 宋德玉.可编程控制器原理及应用系统设计.北京:冶金工业出版社,1999  2、 曾繁泰等.可编程器件应用导论.北京:清华大学出版社,2001
标签: 协议
打赏

免责声明:
本站部份内容系网友自发上传与转载,不代表本网赞同其观点;
如涉及内容、版权等问题,请在30日内联系,我们将在第一时间删除内容!

购物指南

支付方式

商家合作

关于我们

微信扫一扫

(c)2008-2018 DESTOON B2B SYSTEM All Rights Reserved
免责声明:以上信息由相关企业或个人自行免费发布,其真实性、准确性及合法性未证实。请谨慎采用,风险自负。本网对此不承担任何法律责任。

在线咨询

在线咨询:

QQ交流群

微信公众号