CN105278437A - 基于S7-300/400 PLC的Modbus RTU/ASCII协议实现方法 - Google Patents

基于S7-300/400 PLC的Modbus RTU/ASCII协议实现方法 Download PDF

Info

Publication number
CN105278437A
CN105278437A CN201410268280.4A CN201410268280A CN105278437A CN 105278437 A CN105278437 A CN 105278437A CN 201410268280 A CN201410268280 A CN 201410268280A CN 105278437 A CN105278437 A CN 105278437A
Authority
CN
China
Prior art keywords
communication module
data
ascii
serial communication
register
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201410268280.4A
Other languages
English (en)
Inventor
袁翔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Baosight Software Co Ltd
Original Assignee
Shanghai Baosight Software Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Baosight Software Co Ltd filed Critical Shanghai Baosight Software Co Ltd
Priority to CN201410268280.4A priority Critical patent/CN105278437A/zh
Publication of CN105278437A publication Critical patent/CN105278437A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Communication Control (AREA)

Abstract

本发明提供了一种基于S7-300/400PLC的Modbus?RTU/ASCII协议实现方法,其采用ASCII驱动发送、接收和处理符合Modbus协议规范的数据报文,从而在S7-300/400PLC平台中的串行通讯模块上实现Modbus通讯,包括步骤:步骤1:对基本通讯参数进行配置;步骤2:通讯报文数据的处理;步骤3:报文的发送和接收。本发明简单、灵活、可靠,且硬件成本较低,通用性很强,能够广泛应用于工业自动化领域中PLC与各类智能仪表和设备的Modbus?RTU/ASCII通讯。

Description

基于S7-300/400 PLC的Modbus RTU/ASCII协议实现方法
技术领域
本发明涉及ModbusRTU/ASCII协议,具体涉及在S7-300/400PLC平台上采用通用型串行通讯模块实现ModbusRTU/ASCII协议通讯的一种方法。
背景技术
Modbus是Modicon公司于1978年提出的一种用于电子控制器进行控制和通讯的通讯协议。现在Modbus已经是工业领域全球最流行的协议之一。此协议支持传统的RS-232、RS-422、RS-485和以太网设备。许多工业设备,包括PLC、DCS和智能仪表等都在使用Modbus协议作为他们之间的通讯标准。Modbus协议包括ASCII、RTU、TCP等。
现有技术中,采用了“专用串行通讯模板+Modbus硬件狗”的方式来实现S7-300/400PLC中的Modbus通讯。这种方案具有以下问题:1是价格昂贵;2是通用性较差,仅支持少数几种硬件通讯模块,且不同的通讯模式需要不同的硬件狗;3是功能不够完善,例如不支持ModbusASCII协议。
经检索,发现如下相关文献和传统方式。
相关文献:
申请号:200910247434.0,专利名称:支持modbus-rtu通讯的PLC系统以及通讯方法。该专利文献公开了支持modbus-rtu通讯的PLC系统以及通讯方法,该系统包括一台S7-300PLC和一台S7-200PLC,其中S7-300PLC通过S7-200PLC实现与modbus-rtu主站通讯。相应的通讯方法包括如下步骤:(1)S7-200PLC实时读取S7-300PLC数据;(2)S7-200PLC将实时数据传送给modbus-rtu主站。
技术要点比较:该专利文献采用1台S7-200PLC来实现S7-300PLC与modbus-rtu主站的通讯。本发明则只需增加通用型串行通讯模块即可,且既可以在S7-300PLC也可以在S7-400PLC中实现Modbus-Rtu/ASCII的主站和从站通讯。
传统方式:
在S7-300/400PLC中实现Modbus通讯的一般方法,是采用“串行通讯模板+Modbus硬件狗”的方式
技术要点比较:
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种采用“自定义软件模块+通用型串行通讯硬件模块”的方法在S7-300/400PLC中实现ModbusRUT/ASCII协议通讯。
根据本发明提供的一种基于S7-300/400PLC的ModbusRTU/ASCII协议实现方法,采用ASCII驱动发送、接收和处理符合Modbus协议规范的数据报文,从而在S7-300/400PLC平台中的串行通讯模块上实现Modbus通讯,具体包括如下步骤:
步骤1:对基本通讯参数进行配置:
通过集成在STEP7软件中的串行通讯模块参数化工具,根据通讯对象的要求对接收帧的结束方式、通讯速率、数据位、停止位、奇偶校验这些基本通讯参数进行相应设定;
步骤2:通讯报文数据的处理:
整条报文数据由站号、功能码、寄存器、校验码四个部分组成,对于不同的从节点修改其中的站号,对于不同的数据类型或读/写需求的修改其中的功能码,对于不同的数据地址修改其中的寄存器的数据,并根据站号、功能码、寄存器的数据内容计算校验码的数值;
步骤3:报文的发送和接收:
通过调用STEP7软件中提供的通讯功能,令不同的串行通讯模块调用相应的系统通讯功能块。
优选地,报文数据末尾的校验码是CRC16校验码或LRC校验码。
优选地,CRC16校验的计算法具体为:
步骤2.1:装入一个16位寄存器,所有数位均为1;
步骤2.2:该16位寄存器与开始8位字节进行异或运算,运算结果放入这个16位寄存器;
步骤2.3:把这个16位寄存器向右移一位;
步骤2.4:若向右移出的数位是1,则生成多项式1010000000000001和这个寄存器进行异或运算;若向右移出的数位是0,则返回步骤2.3;
步骤2.5:重复步骤2.3和步骤2.4,直至移出8位;
步骤2.6:该16位寄存器另外8位与该十六位寄存器进行异或运算;
步骤2.7:重复步骤2.3至2.6,直至该报文数据所有字节均与16位寄存器进行异或运算,并移位8次;
步骤2.8:这个16位寄存器的内容即2字节CRC错误校验,加到报文数据的最高有效位。
优选地,串行通讯模块与相应的系统通讯功能块的调用关系如下:
与现有技术相比,本发明具有如下的有益效果:
由于采用了上述技术方案,本发明的有益效果是这种方法简单、灵活、可靠,且硬件成本较低,通用性很强。本发明能够广泛应用于工业自动化领域中PLC与各类智能仪表和设备的ModbusRTU/ASCII通讯。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为ModbusMaster软件模块功能流程图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进。这些都属于本发明的保护范围。
在硬件方面,S7-300/400PLC中通用型串行通讯模块主要有以下几类:CP340(RS232C)/CP340(20Matty)/CP340(RS422/485)/CP341(RS232C)/CP341(20MaTTY)/CP341(RS422/485)/CP440/CP441-1/CP441-2。这些通用型串行通讯模块基本都支持一种通用型的串行消息收/发协议驱动——ASCII驱动。ASCII驱动可以发送和接收任何结构的数据,包括所有可打印的ASCII字符以及从00到FFH(带有8个数据位字符帧)或从00到7FH(带有7个数据位字符帧)的所有其它字符。因此本方案采用ASCII驱动发送、接收和处理符合Modbus协议规范的数据报文,从而能够在S7-300/400PLC平台中的大部分串行通讯模块上实现Modbus通讯的过程。
在软件方面,基于ASCII驱动编写通用的Modbus通讯软件模块,第一步是对基本的通讯参数进行配置:通过集成在STEP7软件中的串行通讯模块参数化工具(PTP软件包),根据通讯对象的要求对接收帧的结束方式、通讯速率、数据位、停止位、奇偶校验等基本通讯参数进行相应设定。第二步是通讯报文数据的处理:对于主节点来说,首先需要发送报文给从节点,再等待并接收从节点返回的报文;而对于从节点来说这个过程则相反,但是生成发送报文和处理接收报文的过程都是必不可少的。以ModbusRTU协议的发送报文为例,整条报文由“站号+功能码+寄存器+校验码”四个部分组成,对于不同的从节点需要修改其中的站号,对于不同的数据类型或读/写等需求需要修改其中的功能码,对于不同的数据地址需要修改其中的寄存器数据。报文数据处理中最关键的一点是报文结尾的校验码,需要根据“站号+功能码+寄存器”的数据内容计算校验码的数值。报文末尾的校验码是CRC16校验码(ModbusRTU)或LRC校验码(ModbusASCII)。
CRC16校验一般采用计算法或查表法实现,计算法的基本原理是:①装入一个16位寄存器,所有数位均为1;②该16位寄存器与开始8位字节进行"异或"运算。运算结果放入这个16位寄存器;③把这个16寄存器向右移一位;④若向右(标记位)移出的数位是1,则生成多项式1010000000000001和这个寄存器进行"异或"运算;若向右移出的数位是0,则返回③;⑤重复③和④,直至移出8位;⑥另外8位与该十六位寄存器进行"异或"运算;⑦重复③~⑥,直至该报文所有字节均与16位寄存器进行"异或"运算,并移位8次;⑧这个16位寄存器的内容即2字节CRC错误校验,被加到报文的最高有效位。最后一步就是报文的发送和接收了:通过调用STEP7软件中提供的通讯功能块就可以轻松实现了,不同的串行通讯模块需要调用相应的系统通讯功能块,如表1所示:
表1:串行通讯软件功能块列表
将上述的报文处理、发送和接收等各个环节融合和统一起来进行软件编程,就可以编写出较为实用和通用的软件模块。综合各类实际需求,本软件模块支持以下扩展功能:(1)支持常用的Modbus通讯功能码,包括1、2、3、4、5、6、15和16等功能码;(2)支持主节点(Master)和从节点(Slave)两种模式;(3)支持RTU和ASCII两种协议;(4)支持多种串行通讯硬件模块;(5)支持多站点、多报文轮询调度机制;(6)支持非标准模拟量数据高低字节存储顺序转换;(7)采用符合IEC61131-3标准的SCL语言编写程序,利于程序跨平台移植。
下面对本发明的优选的具体实施例进行描述。
实施例1:利用本发明在空压站PLC控制系统中采用S7-300PLC,通过通用型串行通讯模块CP341(RS422/485)与多台空压机进行ModbusRTU通讯,能够实现对空压站的实时监视和远程监控。
实施例2:利用本发明在门站PLC控制系统采用S7-400HPLC,通过在扩展机架上安装通用型串行通讯模块CP341(RS232C),与三台飞奥Explorer天然气流量计进行ModbusASCII协议通讯,能够实现瞬时/累积流量信号的实时采集。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变形或修改,这并不影响本发明的实质内容。

Claims (4)

1.一种基于S7-300/400PLC的ModbusRTU/ASCII协议实现方法,其特征在于,采用ASCII驱动发送、接收和处理符合Modbus协议规范的数据报文,从而在S7-300/400PLC平台中的串行通讯模块上实现Modbus通讯,具体包括如下步骤:
步骤1:对基本通讯参数进行配置:
通过集成在STEP7软件中的串行通讯模块参数化工具,根据通讯对象的要求对接收帧的结束方式、通讯速率、数据位、停止位、奇偶校验这些基本通讯参数进行相应设定;
步骤2:通讯报文数据的处理:
整条报文数据由站号、功能码、寄存器、校验码四个部分组成,对于不同的从节点修改其中的站号,对于不同的数据类型或读/写需求的修改其中的功能码,对于不同的数据地址修改其中的寄存器的数据,并根据站号、功能码、寄存器的数据内容计算校验码的数值;
步骤3:报文的发送和接收:
通过调用STEP7软件中提供的通讯功能,令不同的串行通讯模块调用相应的系统通讯功能块。
2.根据权利要求1所述的基于S7-300/400PLC的ModbusRTU/ASCII协议实现方法,其特征在于,报文数据末尾的校验码是CRC16校验码或LRC校验码。
3.根据权利要求2所述的基于S7-300/400PLC的ModbusRTU/ASCII协议实现方法,其特征在于,CRC16校验的计算法具体为:
步骤2.1:装入一个16位寄存器,所有数位均为1;
步骤2.2:该16位寄存器与开始8位字节进行异或运算,运算结果放入这个16位寄存器;
步骤2.3:把这个16位寄存器向右移一位;
步骤2.4:若向右移出的数位是1,则生成多项式1010000000000001和这个寄存器进行异或运算;若向右移出的数位是0,则返回步骤2.3;
步骤2.5:重复步骤2.3和步骤2.4,直至移出8位;
步骤2.6:该16位寄存器另外8位与该十六位寄存器进行异或运算;
步骤2.7:重复步骤2.3至2.6,直至该报文数据所有字节均与16位寄存器进行异或运算,并移位8次;
步骤2.8:这个16位寄存器的内容即2字节CRC错误校验,加到报文数据的最高有效位。
4.根据权利要求1所述的基于S7-300/400PLC的ModbusRTU/ASCII协议实现方法,其特征在于,串行通讯模块与相应的系统通讯功能块的调用关系如下:
串行通讯模块CP340对应于系统通讯模块的发送功能块FB3(P_SEND)和接收功能块FB2(P_RCV);
串行通讯模块CP341对应于系统通讯模块的发送功能块FB8(P_SND_RK)和接收功能块FB7(P_RCV_RK);
串行通讯模块CP440对应于系统通讯模块的发送功能块FB10(SEND_440)和接收功能块FB9(RECV_440);
串行通讯模块CP441对应于系统通讯模块的发送功能块SFB12(BSEND)和接收功能块SFB13(BRCV)。
CN201410268280.4A 2014-06-16 2014-06-16 基于S7-300/400 PLC的Modbus RTU/ASCII协议实现方法 Pending CN105278437A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410268280.4A CN105278437A (zh) 2014-06-16 2014-06-16 基于S7-300/400 PLC的Modbus RTU/ASCII协议实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410268280.4A CN105278437A (zh) 2014-06-16 2014-06-16 基于S7-300/400 PLC的Modbus RTU/ASCII协议实现方法

Publications (1)

Publication Number Publication Date
CN105278437A true CN105278437A (zh) 2016-01-27

Family

ID=55147634

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410268280.4A Pending CN105278437A (zh) 2014-06-16 2014-06-16 基于S7-300/400 PLC的Modbus RTU/ASCII协议实现方法

Country Status (1)

Country Link
CN (1) CN105278437A (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105847249A (zh) * 2016-03-22 2016-08-10 英赛克科技(北京)有限公司 一种用于Modbus网络的安全防护系统以及方法
CN106569440A (zh) * 2016-10-25 2017-04-19 宁波中车新能源科技有限公司 一种基于modbus‑rtu协议实现微处理器与触摸屏通讯的方法
CN108306865A (zh) * 2018-01-15 2018-07-20 厦门科灿信息技术有限公司 基于Netty框架的modbus粘包处理方法、装置
CN108628536A (zh) * 2018-05-28 2018-10-09 湖北工业大学 一种人机界面交互的stm32与串口触摸屏通讯模板
CN109189710A (zh) * 2018-07-18 2019-01-11 厦门市宇笙包装机械有限公司 一种多功能通信电路及其通信方法
CN109951366A (zh) * 2019-03-29 2019-06-28 浙江理工大学 一种Modbus RTU总线控制器及控制方法
CN111277547A (zh) * 2018-12-05 2020-06-12 陕西思科锐迪网络安全技术有限责任公司 一种监测西门子s7-plc设置内部时钟的方法
CN114043053A (zh) * 2021-11-22 2022-02-15 常州九圣焊割设备股份有限公司 一种等离子切割系统的控制方法和装置
CN114448947A (zh) * 2022-01-17 2022-05-06 武汉魅客科技有限公司 一种提升智能网关自动适配多报文格式的装置
CN114666312A (zh) * 2022-03-29 2022-06-24 西安热工研究院有限公司 称量仪通用数据采集方法、系统、设备及可读存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006006426A1 (ja) * 2004-07-09 2006-01-19 Kabushiki Kaisha Yaskawa Denki シリアルデータ変換装置およびプログラマブルコントローラの保守システム
CN101221550A (zh) * 2008-01-30 2008-07-16 许新朋 一种串行通讯的方法及芯片
CN102437952A (zh) * 2012-01-29 2012-05-02 山东黄金矿业(莱州)有限公司焦家金矿 多变种Modbus协议报文的管理方法
CN102797501A (zh) * 2012-08-07 2012-11-28 哈尔滨东方报警设备开发有限公司 一种无线便携式气体检测报警仪控制方法
CN103713593A (zh) * 2013-12-03 2014-04-09 国家电网公司 变电站电缆沟监控装置
CN103825870A (zh) * 2012-11-19 2014-05-28 苏州工业园区新宏博通讯科技有限公司 万能通信协议生成器的通信方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006006426A1 (ja) * 2004-07-09 2006-01-19 Kabushiki Kaisha Yaskawa Denki シリアルデータ変換装置およびプログラマブルコントローラの保守システム
CN101221550A (zh) * 2008-01-30 2008-07-16 许新朋 一种串行通讯的方法及芯片
CN102437952A (zh) * 2012-01-29 2012-05-02 山东黄金矿业(莱州)有限公司焦家金矿 多变种Modbus协议报文的管理方法
CN102797501A (zh) * 2012-08-07 2012-11-28 哈尔滨东方报警设备开发有限公司 一种无线便携式气体检测报警仪控制方法
CN103825870A (zh) * 2012-11-19 2014-05-28 苏州工业园区新宏博通讯科技有限公司 万能通信协议生成器的通信方法
CN103713593A (zh) * 2013-12-03 2014-04-09 国家电网公司 变电站电缆沟监控装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
THOMAS MORRIS,RAYFORD VAUGHN,YOGINDER DANDASS: "A Retrofit Network Intrusion Detection System for MODBUS RTU and", 《2012 45TH HAWAII INTERNATIONAL CONFERENCE ON SYSTEM SCIENCES》 *
西门子: "CP340/CP341基于ASCII驱动协议的多站点轮询", 《百度文库》 *
龚威: "《现代楼宇自动控制技术》", 31 January 2012, 清华大学出版社 *

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105847249A (zh) * 2016-03-22 2016-08-10 英赛克科技(北京)有限公司 一种用于Modbus网络的安全防护系统以及方法
CN106569440A (zh) * 2016-10-25 2017-04-19 宁波中车新能源科技有限公司 一种基于modbus‑rtu协议实现微处理器与触摸屏通讯的方法
CN108306865A (zh) * 2018-01-15 2018-07-20 厦门科灿信息技术有限公司 基于Netty框架的modbus粘包处理方法、装置
CN108306865B (zh) * 2018-01-15 2021-02-12 厦门科灿信息技术有限公司 基于Netty框架的modbus粘包处理方法、装置
CN108628536A (zh) * 2018-05-28 2018-10-09 湖北工业大学 一种人机界面交互的stm32与串口触摸屏通讯模板
CN109189710A (zh) * 2018-07-18 2019-01-11 厦门市宇笙包装机械有限公司 一种多功能通信电路及其通信方法
CN111277547A (zh) * 2018-12-05 2020-06-12 陕西思科锐迪网络安全技术有限责任公司 一种监测西门子s7-plc设置内部时钟的方法
CN109951366A (zh) * 2019-03-29 2019-06-28 浙江理工大学 一种Modbus RTU总线控制器及控制方法
CN114043053A (zh) * 2021-11-22 2022-02-15 常州九圣焊割设备股份有限公司 一种等离子切割系统的控制方法和装置
CN114043053B (zh) * 2021-11-22 2023-09-08 常州九圣焊割设备股份有限公司 一种等离子切割系统的控制方法和装置
CN114448947A (zh) * 2022-01-17 2022-05-06 武汉魅客科技有限公司 一种提升智能网关自动适配多报文格式的装置
CN114666312A (zh) * 2022-03-29 2022-06-24 西安热工研究院有限公司 称量仪通用数据采集方法、系统、设备及可读存储介质
CN114666312B (zh) * 2022-03-29 2024-03-01 西安热工研究院有限公司 称量仪通用数据采集方法、系统、设备及可读存储介质

Similar Documents

Publication Publication Date Title
CN105278437A (zh) 基于S7-300/400 PLC的Modbus RTU/ASCII协议实现方法
CN102478797B (zh) 一种可配置通讯协议的监控系统
US9283682B2 (en) Robot system having wireless acceleration sensor
CN112799992B (zh) 现场总线芯片架构
CN102761391B (zh) 一种油田物联网系统通信方法
CN108989358B (zh) 一种基于tcp/ip协议纺机运行数据获取方法
CN102081361B (zh) 一种硬件设备控制方法及其系统
KR20090054983A (ko) Plc 모듈 주소를 할당하기 위한 장치들, 시스템들, 및 방법들
CN106444657B (zh) 一种Modbus主站指令处理方法及主站控制器
CN103905410A (zh) 一种将自定义协议转换成Modbus协议的多路通讯协议转换器
CN102621921A (zh) 一种电能表编程器
CN100543680C (zh) 一种对电能表芯片程序进行下载更新的方法
CN101176289B (zh) 采用纠错的现场总线过程通信
CN105137842A (zh) 一种舞台自适应匹配装置
CN112732458A (zh) 一种采用协议栈的多协议数据整合系统及方法
CN103838587A (zh) 基于gprs的控制系统远程升级方法及装置
CN114253585B (zh) 机器人运行程序的远程更新方法、系统、装置及存储介质
CN107608679A (zh) 一种通过Socket高效烧写机顶盒数据的方法
CN111182031B (zh) Plc设备远程下载方法及系统
CN202551082U (zh) 一种基于fpga的千兆以太网现场总线通信装置
CN107479481B (zh) 库卡机器人灵活控制第三方伺服电机的方法、装置和系统
Salamea et al. Implementation of the Hamming code for the detection and correction of errors in a telerobotic system using an industrial communication protocol
CN115277756B (zh) 一种用于物联网终端设备的数据高效采集传输方法
CN110601908A (zh) 一种可编程多种组态通信的方法
CN116915895A (zh) 基于手机的Hart设备控制方法、装置、系统及设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20160127

RJ01 Rejection of invention patent application after publication