CN105278437A - 基于S7-300/400 PLC的Modbus RTU/ASCII协议实现方法 - Google Patents
基于S7-300/400 PLC的Modbus RTU/ASCII协议实现方法 Download PDFInfo
- 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
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
技术领域
本发明涉及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)。
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)
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)
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 | 苏州工业园区新宏博通讯科技有限公司 | 万能通信协议生成器的通信方法 |
-
2014
- 2014-06-16 CN CN201410268280.4A patent/CN105278437A/zh active Pending
Patent Citations (6)
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)
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)
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 |