以PLC为通信主站的Modbus控制网络的设计与实现
- 格式:doc
- 大小:23.50 KB
- 文档页数:6
MODBUS通讯协议及编程ModBus通讯协议分为RTU协议和ASCII协议,我公司的多种仪表都采用ModBus RTU 通讯协议,如:YD2000智能电力监测仪、巡检表、数显表、光柱数显表等。
下面就ModBu s RTU协议简要介绍如下:一、通讯协议(一)、通讯传送方式:通讯传送分为独立的信息头,和发送的编码数据。
以下的通讯传送方式定义也与MO DBUS RTU通讯规约相兼容:初始结构= ≥4字节的时间地址码 = 1 字节功能码 = 1 字节数据区 = N 字节错误校检 = 16位CRC码结束结构= ≥4字节的时间地址码:地址码为通讯传送的第一个字节。
这个字节表明由用户设定地址码的从机将接收由主机发送来的信息。
并且每个从机都有具有唯一的地址码,并且响应回送均以各自的地址码开始。
主机发送的地址码表明将发送到的从机地址,而从机发送的地址码表明回送的从机地址。
功能码:通讯传送的第二个字节。
ModBus通讯规约定义功能号为1到127。
本仪表只利用其中的一部分功能码。
作为主机请求发送,通过功能码告诉从机执行什么动作。
作为从机响应,从机发送的功能码与从主机发送来的功能码一样,并表明从机已响应主机进行操作。
如果从机发送的功能码的最高位为1(比如功能码大与此同时127),则表明从机没有响应操作或发送出错。
数据区:数据区是根据不同的功能码而不同。
数据区可以是实际数值、设置点、主机发送给从机或从机发送给主机的地址。
CRC码:二字节的错误检测码。
(二)、通讯规约:当通讯命令发送至仪器时,符合相应地址码的设备接通讯命令,并除去地址码,读取信息,如果没有出错,则执行相应的任务;然后把执行结果返送给发送者。
返送的信息中包括地址码、执行动作的功能码、执行动作后结果的数据以及错误校验码。
如果出错就不发送任何信息。
1.信息帧结构地址码:地址码是信息帧的第一字节(8位),从0到255。
这个字节表明由用户设置地址的从机将接收由主机发送来的信息。
MODBUS通讯协议及编程【一】一、Modbus 协议简介Modbus 协议是应用于电子控制器上的一种通用语言。
通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。
它已经成为一通用工业标准。
有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。
此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。
它描述了一控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。
它制定了消息域格局和内容的公共格式。
当在一Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。
如果需要回应,控制器将生成反馈信息并用Modbus协议发出。
在其它网络上,包含了Modbus协议的消息转换为在此网络上使用的帧或包结构。
这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。
1、在Modbus网络上转输标准的Modbus口是使用一RS-232C兼容串行接口,它定义了连接口的针脚、电缆、信号位、传输波特率、奇偶校验。
控制器能直接或经由Modem组网。
控制器通信使用主—从技术,即仅一设备(主设备)能初始化传输(查询)。
其它设备(从设备)根据主设备查询提供的数据作出相应反应。
典型的主设备:主机和可编程仪表。
典型的从设备:可编程控制器。
主设备可单独和从设备通信,也能以广播方式和所有从设备通信。
如果单独通信,从设备返回一消息作为回应,如果是以广播方式查询的,则不作任何回应。
Modbus协议建立了主设备查询的格式:设备(或广播)地址、功能代码、所有要发送的数据、一错误检测域。
从设备回应消息也由Modbus协议构成,包括确认要行动的域、任何要返回的数据、和一错误检测域。
如果在消息接收过程中发生一错误,或从设备不能执行其命令,从设备将建立一错误消息并把它作为回应发送出去。
2、在其它类型网络上转输在其它网络上,控制器使用对等技术通信,故任何控制都能初始和其它控制器的通信。
s7 1200做modbus通信实验设备:s7 1200PLC一台;cm1241 通信卡一块;modbus主站设备一台(此实验使用PC 端modbuscan 32模拟主站)实验过程:一、硬件组态及设置;硬件组态为s7 1200cpu和cm1241通信卡,如下图所示:cm 1241要设置的为端口组态,具体设置需根据现场设备而定,此次试验采用9600 8n1的通信方式,接线采用485接线。
S7 1200 需要设置IP和时钟存储器设置IP:设置时钟存储器:二、做从站时软件编写:1)、创建通信数据块:创建数据块后,进入属性去掉“优化的块访问”。
然后在数据块中创建存储区域。
2)、调用“MB_COMM_LOAD”初始化通讯端口:各引脚参数如下图:“MB_COMM_LOAD”只需要调用一次,所以可以将其放置于OB100,此处使用PLC时钟存储器的FristScan来使之只在第一个周期调用。
3)、调用“MB_SLAVE”:“MB_SLAVE”上个引脚说明如下图所示:Modbus内部点位如下图所示:三、做主站时软件编写:S7 1200做主站时硬件配置和从站时相比无需更改,仅需在软件部分做修改即可。
1)、创建通信数据块:添加modbusMaster数据区域2)、调用“MB_COMM_LOAD”初始化通讯端口:此处配置与做从站时配置一致,仅需注意MB_DB管脚处要与使用的背景数据块对应。
3)、调用MB_MASTER:MB_MASTER各引脚说明如下图所示:Modbus各个模式及通信地址如下图所示:四、实验测试:1)、s7 1200从站时通信测试:将上面的2个程序段下载入PLC就可以进行modbus通信测试了;测试结果如下:功能码01:功能码02:功能码04:PLC内数据:可见通信正常,所有数据读写也正常。
2)、s7 1200做主站时通信测试:首先使用读取模式;PC端使用ModbusSlave模拟从站,首先把所有q点置1;PLC内部数据如下图:只留第一个为1;PLC内部数据:接着测试读取寄存器,此处随意修改几个数值:PLC内部读取的数值如下图:最后测试s7 1200发送数据给从站;首先修改PLC里的数据:使用Modbus Slave 读取的数据如下图所示:从上面试验可以看出s7 1200 做主站时各功能码下读取数据正常,写入数据也正常,所有功能均正常工作。
实例讲解PLC实现modbus通讯1. 硬件设置程序中的 Modbus 通讯是在两个 S7-200 CPU 的 0 号通讯口间进行的(最好每个CPU 都有两个通讯口)。
在主站侧也可以用相应库文件'MBUS_CTRL_P1' 和'MBUS_MSG_P1'通过1号通讯口通信。
通讯口1 用 Micro/WIN 与 PG 或 PC 建立连接,两个 CPU 的通讯口 0 通过Profibus 缆进行连接(电缆的针脚连接为3,3,8,8 -> 见图 01)。
另外,需要确定逻辑地M相连。
2. 参数匹配对于MODBUS 通讯,主站侧需要程序库'MBUS_CTRL' 和'MBUS_MSG',从站侧需要程序库 'MBUS_INIT' and 'MBUS_SLAVE'。
在 Micro/WIN 中您需要为主站和从站新建一个项目,程序与参数设置见图.02。
必须要保证主站与从站的“Baud”和“Parity” 的参数设置要一致,并且程序块'MBUS_MSG' 中的'Slave' 地址要与程序块'MBUS_INIT' 中的 'Addr' 所设置的一致 (见图. 02)。
在Micro/WIN“系统块”中设置的通讯口0 的波特率与MODBUS 协议无关 ('Mode' = '1')。
下面的表格列出了程序块各个参数选项及其含义。
主站MBUS_CTRLMBUS_MSG从站MBUS_INITMBUS_SLAVE3. 库的存储地址项目完成后必须要在 Micro/WIN 中定义库的存储地址,当定义完存储区后, 要保证在任何情况下不能再被其它程序所使用(主站侧: 'DataPtr' + 'Count' 从站侧:'HoldStart' + 'MaxHold')。
与西门⼦PLC实现Modbus-RTU通信实例⼀、准备⼯具及材料1.台式电脑⼀台,笔记本电脑⼀台;2.西门⼦200smart PLC⼀台,3.多功能电表DW9L-RC38或DS9L或DS7L⼀台,温控表TE系列⼀台,4.仪表说明书及通讯协议,5.9针接⼝通讯线⼀根,6.USB转RS485转换器⼀台,7.电源线,⽹线、⽹络交换机等。
⼆、软件安装软件名称:STEP 7-MicroWIN SMART,可从西门⼦⽹站下载。
三、梯形图编程1.主要编程思路PLC使⽤⾃带的RS485接⼝与仪表进⾏通信连接,PLC作为主站,仪表为从站,使⽤标准Modbus-RTU通讯协议。
调⽤编程软件⾃带的Modbus协议库,实现与仪表的数据通信。
2.MBUS_CTRL 和 MBUS_MSG 指令介绍本⽰例使⽤单个主站及 MBUS_CTRL 和 MBUS_MSG 指令。
同⼀理念对使⽤第⼆个主站及 MB_CTRL2 和 MB_MSG2 指令的⽰例同样适⽤。
3.电⼒仪表通信协议:4.梯形图编程(1)设置PLC型号(2)设置库存储器的地址分配(系统已分配VB0~VB285⽤于modbus通信使⽤,我们就从VB286开始)(3)编辑符号表(4)编辑状态图表(5)编制第⼀、⼆段:置位标志位及通讯初始化:波特率Baud=9600,Parity=0⽆校验,Port=0集成CPU内RS485⼝,Timeout从站响应超时50ms。
Done初始化完成返回"TURE",Error输出错误结果。
(6)程序3-4:当MBUS_CTRL初始化完成后,M0.0 从关闭变为接通时,延时T33=10mS时间后,置位第⼀条 MBUS_MSG 指令的启⽤标志 (M2.0)=1。
(7)程序5:读第⼀台从机设备,地址1,型号DW9L或DS9L或DS7L。
当第⼀个启⽤标志 (M2.0) 接通后,调⽤ MBUS_MSG 指令。
只需为启⽤该指令的第⼀次扫描设置 First 参数。
基于PLC的Modbus通信协议的实现————————————————————————————————作者: ————————————————————————————————日期:摘要:介绍了三菱FX2N系列PLC 在无协议通信方式下与基于DS18b20 型数字温度传感器的STA-D 温度采集模块以Modbus 协议通信,实现即时读取温度, 并给出了相关程序。
随着3C 技术迅速发展, 网络集成信息自动化正迅速应用到现场设备、控制中, 现场总线控制系统正逐步取代传统的集散控制系统,其中Modbus现场总线协议在基于PLC 的控制系统中得到了越来越广泛的应用. 在本系统中,以PLC为主机、温度采集模块为从机, 完成对生产过程的自动控制、工业流程及工艺参数的显示、修改, 根据PLC 的无协议通信功能, 用Modbus现场总线协议实现主机与从机的通讯。
本文基于某监控系统的设计,实现了三菱FX2N 系列PLC在无协议通信方式下与DS18b20型数字温度传感器的采集模块以Mo dbus 协议通信,在电炉熔化工作过程中,对电炉、电容、冷却水等100多点的温度实现巡检。
1系统硬件组成温度监控部分系统的硬件由DS18b20型数字温度传感器、采集模块、FX2N 系列PLC、FX2N-485-BD、HITECH 触摸屏组成,其结构如图1 所示。
图1 系统硬件组成DS18b20 是世界上首个支持单线总线接口( 1w ire bus interface)的数字化温度传感器, 单总线接口便于构建分布式的温度测控网络,数字化的输出提高了信号传输的可靠性,而且使外围电路大为简化。
DS18b20 具有很高的适应性和性价比, 其测温范围为-55~125 ℃, 测温精度为±0. 5℃, 测温距离最大为200m , 测温方式使用3线制,本系统使用的传感器排序方式为指定排序。
DS18b20 内部主要有3 个数字部件: 1个温度传感器、1个64 位的激光刻蚀ROM、9 字节高速暂存器ScratchpadRAM和3字节EERAM. ROM 上64 位数据是传感器的序列号。
1、硬件组态:S7-200PLC CPU 224XP、S7-200PLC CPU 226、维控触屏LEVI 777T、S7-200PLC之间通讯用RS485通讯电缆、S7-200PLC与维控触屏通讯用RS485通讯电缆、编程用USB/PPI电缆。
主从站设定:CPU 224XP主站,CPU 226为从站。
2、通讯端口及设定:主站CPU 224XP PORT0用于Modbus通讯、PORT1用于连接编程电缆。
从站CPU 226 PORT0用于Modbus通讯、PORT1用于连接维控触摸屏COM1(PPI 协议)。
各端子对应接线如下图。
3、实验内容:①主站读从站输入点信号、V存贮区变量;②主站控制从站输出点、写入从站整数变量及浮点数变量并在触摸屏(与从站相连)上显示;③从站读取主站发送数据并处理。
4、CPU226从站通讯初始化编程如下所示。
从站地址规定为6,端口PORT0通讯波特率9600,无校验、无延迟,允许存取所有的I、Q(MaxIQ=128)、和AI(MaxAI=32)数值,保持寄存器的存贮空间为VB3000开始的1000个字。
5、为从站程序块指定库存贮区,注意:程序中不可使用库存储区占用的地址。
6、在维控触屏中下载用于监控Modbus通讯结果的画面程序,如下图。
其中包括从站本机输入点I0.0~I0.7的状态、输出点Q0.0~Q0.7(受主上控制),以及从站Modbus通讯保持寄存器VB3000~VB3013内容、整数VW3000、浮点数VD3000和VD3008内容等。
7、准备好主站通讯程序。
为主站程序块指定库存贮区,注意:程序中不可使用库存储区占用的地址。
程序如下所示(上电初始化程序实际应用时要放在网络1),其中主站输入点I1.0用于触发数据传送,VB3000用于存贮读从站输入点数据,VB5000用于存贮要写入从站控制输出点的数据,VB6000用于存贮要写入从站V存贮区的数据,VB7000用于存贮由从站读取的V存贮区数据(用于验证写从站结果)。
作者简介:邓卫平(1983~),男,湖北荆门人,中国地质大学(武汉)机械与电子信息学院硕士研究生,研究方向为通信与信息系统。
基于Modbus 协议的PLC 通信控制模块的实现邓卫平(中国地质大学机械与电子信息学院,湖北武汉430074)摘要:Modbus 协议是应用于电子控制器的一种通用协议。
该协议已经成为我国工业自动化网络协议规范的国家标准之一。
介绍了Modbus 通信协议的基本特点,对在Modbus 协议下PLC 的通信控制系统实现作了详细阐述。
关键词:Modbus 协议;PLC ;通信中图分类号:TP393.09文献标识码:A文章编号:1672-7800(2008)11-0114-020引言在工业控制领域中,Modbus 协议是应用于控制器上的一种通用语言。
通过此协议,控制器相互之间、控制器经由网络和其它设备之间都可以通信。
许多工业设备(包括PLC 、变频器、触摸屏、智能仪表等),都使用Modbus 协议作为它们之间的通信标准。
该协议规定:网络中只允许存在一个主站,其他设备均为从站。
PLC 在工业自动化控制领域中占有很大的比例,本文就针对西门子S7-200系列的PLC 在该协议下通信控制模块的设计作详细的介绍。
1协议基本原理1.1协议概述Modbus 协议的通讯采用应答方式,由主机发起请求,从机执行请求并且应答。
在R485等允许多个站点的网络中,至多只能有一个从站响应主站的请求。
基于Modbus 协议的通信通常支持两种传输模式:美国标准信息交换码(ASCII 码)模式和远程终端单元(RTU )模式。
用户可根据需要选择适当的传输模式,但在同一个Modbus 网络上必须采用相同的传输模式。
1.1.1ASCII 模式当控制器在Modbus 网络上以ASCII 模式通信时,ASCII 代码系统采用十六进制ASCII 字符,每字节包含1个起始位、7个数据位(最小的有效位开始依次发送)、1个奇偶校验位(无校验则无此位)、1个停止位(有校验时)或2个停止位(无校验时)。
西门子300400PLC与组态王实现ModbusTCP通信配置案例
西门子300/400PLC用兴达易控PLC转以太网模块CHNet-S7300MD实现以太网通信
1.新建工程并打开工程,右击“IOServer应用组”,选择“添加新 IOServer 应用组”。
•
2. 在弹出的对话框中,填入“应用名称”,点击“确定”。
3. 选择“设备”,在右边空白区域,点击鼠标右键,选择“新建”。
4.在“设备名称”处输入一个名称,点击“下一步”。
5. “采集驱动”选择“S7_TCP”;“链路类型”选择“以太网”,点击“下一步”。
6.“链路逻辑名”默认即可,点击“下一步”。
7.“设备系列”选择“S7-300(TCP)”,“设备地址”的格式为:BCNet-S7MPI 的 IP 地址:0:2,这里BCNet-S7MPI 的 IP 地址为192.168.1.188,点击“下一步”。
8. 其他参数默认,直至完成。
PLC的MODBUS通信实例随着工业时代的发展,工业自动化控制已进入网络时代,工业控制器连网也为网络管理提供了方便。
MODBUS通信就是工业控制器的网络协议中的一种。
关键词: MOBUS通信协议,RS485,奥越信CPU,程序设计一、MODBUS 简介MODBUS是由Modicon(现为施耐德电气公司的一个品牌)在1979年发明的,是全球第一个真正用于工业现场的总线协议。
当现代的控制领域持续不断的产生和应用诸如现场总线和网状网络等先进概念的时候,MODBUS的简单性以及它的便于在许多通讯媒介上实施应用的特点一直使它受到最广泛的支持,并且成为全球应用最广泛的工业协议。
通过此协议,控制器经由网络(例如以太网)和其它设备之间可以通信,此协议支持传统的RS-232、RS-422、RS-485和以太网设备。
许多工业设备,包括PLC、DCS、变频器、智能仪表等都在使用MODBUS协议作为他们之间的通讯标准,它可应用于各种数据采集和过程监控。
二、MODBUS协议库1、使用MOBUS协议的部分要求A、初始化MODBUS从站协议占用Port0 作为MODBUS从站协议通信,MODBUS从站协议只支持端口0通信,所以选择奥越信的双通信的CPU,可以把Port1作为编程通信口,以便于调试;如果只有单通信口的话,可把CPU打到STOP模式在编程。
B、MODBUS从站协议指令的变量要求799字节的V区域,该区域的起始地址由用户指定,保留给MODBUS使用,程序中不可以使用库存储区占用的地址。
C、可参照S7-200编程手册中了解MODBUS指令的设置与编写。
2、MODBUS协议允许在各种网络体系结构内进行简单通信。
如图所示:A、每种设备(PLC、HMI、控制面板、驱动程序、动作控制、输入/输出设备)都能使用MODBUS协议来启动远程操作。
B、在基于串行链路和以太网络的MODBUS上可以进行相同通信。
C、一些网关允许在几种使用MODBUS协议的总线或网络之间进行通信。
以PLC为通信主站的Modbus控制网络的设计与实现作者:潘迪夫习可来源:《现代电子技术》2010年第05期摘要:为实现以PLC为控制中心的架车式称重调簧系统,提出以PLC作为Modbus通信主站、配合多数量、多种类的通信从站的网络建立的方法,并采用S7-200 PLC、计算机和两种智能传感器,构建一个以PLC为通信主站的Modbus控制网络,对主站、从站的配置和程序设计进行了详细的说明。
实践结果表明,此网络系统数据传输可靠准确,系统实时性与稳定性均能满足机车称重调簧系统应用的要求。
关键词:Modbus协议;PLC;通信主站;控制网络中图分类号:TP368文献标识码:A文章编号:1004-373X(2010)05-142-03Design and Implementation of Modbus Control System Based on PLC as Master StationPAN Difu,XI Ke(School of Traffic&Transportation Engineering,Central SouthUniversity,Changsha,410075,China)Abstract:To realize the PLC control system of locomotive body test-rig for weighting and spring adjusting,it puts forward the method of constructing communication,which is composed of PLC Modbus master station and multiple various Modbus slave stations.At the same time,with one S7-200 PLC,one computer and two kinds of intelligent sensors,it is built that a typical control system taking PLC as Modbus master station,and then illuminated in detail the configuration and software design master station and slavers.The practice indicates that the Modbus communication,where PLC is used as the master station,can transmit data accurately and reliably,its real-time performance and stability reaches the requirement of industrial automation.Keywords:Modbus protocol;PLC;master station;control system0 引言随着微电子及控制技术的不断发展,PLC功能不断完善,已经逐渐成为一种智能型、综合型的控制器,以PLC为控制器构成的数据采集和控制系统,广泛应用到了工业自动化系统中。
同时,由于Modbus协议具有开放性好、诊错能力强、数据传输速率高、成本低、易实现等优点,被越来越多的设备厂家的产品所支持。
采用这些控制设备、传感器、智能仪表,可快速构建基于Modbus工业控制网络系统,成本低、性能高、简单实用。
文献[1]介绍了一种采用工控机作为Modbus通信主站,PLC作为通信从站的通讯网络的构建方法,并应用到了实际的工业自动化系统中,效果良好。
文献[2]则采用PLC作为Modbus通信的主站来控制变频器从站,同样充分利用了PLC控制的诸多优点。
本文综合两种方法,设计并实现了以PLC作为Modbus通信主站、计算机和多种传感器作为通讯从站的控制网络。
1 系统构成架车式称重调簧系统具有机车架车、称重、调簧三个主要功能,其中,前两项可由PLC控制中心独立完成,在有计算机参与控制的情况下,可以实现调簧的功能。
鉴于Modbus的诸多优点,本系统采用基于Modbus的通信网络,网络组成硬件主要包括:1台西门子S7-200 PLC,1台计算机,4台智能位移传感器,4台智能压力传感器。
其中,S7-200 PLC作为Modbus通信主站,主要完成数据提取、从站管理及控制输出等功能;计算机作为通信从站,只有在需要时才接入网络,完成对本网络的监控、维护及调整和设置参数的功能;传感器作为通信从站,完成对信息采集的功能。
网络采用总线连接,所采用的传感器是智能数字式传感器,均支持RS 485总线协议。
计算机通过扩展RS 485通讯卡连接到网络中。
系统组成框图如图1所示。
西门子S7-200 PLC作为Modbus通信主站[3],应用了Modbus公开通信协议中串行通信部分,其CUP采用自由端口进行通讯,实现的是RS 485协议半双工通信。
S7-200所支持的从站地址范围为0~247,其中0为广播地址。
本系统考虑的实际应用的要求,只采用了32个从站地址进行设计。
图1 通讯网络的硬件构成由于从站的类型多样,为便于管理和编程,可以对各个从站进行分类。
本系统可以把从站分为三类,其分类和地址编号如下:第一类:计算机通信从站。
由于计算机从站需要与主站进行数据交换,所以主站对其既有读取数据请求,也有发送数据请求,其地址号范围为31~32。
第二类:位移传感器从站。
主站对其只有读取数据请求,其地址号范围为1~15。
第三类:压力传感器从站。
主站对其只有读取数据请求,其地址号范围为16~30。
在应用RS 485网络时,考虑到本网络各站点之间的距离不是很长,连接线在100 m以内,为提高系统的抗干扰性,在网络的最后一台设备之后接入一个1 kΩ的终端电阻[2]。
2 S7-200 PLC作为通信主站的配置和程序设计S7-200的编程软件STEP7-Micro/WIN,带有西门子开发的Modbus RTU主站/从站指令,能够非常方便地实现Modbus通信主站的配置。
该指令库主要有两个功能块:Modbus RTU 主站初始化功能块和读写功能块,关于其具体参数设计可参考文献[3,4]。
作为Modbus通信主站,S7-200需要完成对各个从站,包括传感器、计算机、仪表的读写功能。
由于从站有多种类型,对不同的站地址的读写格式也不同。
本文按照从站的通信要求进行对其分类,并采用轮询各从站的方法:即一次对一个地址启动一条读取或者写入命令。
通信主站的程序设计内容包括:(1) 变量初始化以及自由通信端口的Modbus主站初始化。
这主要是对Modbus RTU主站初始化功能块进行配置。
(2) 搜索并储存有效的从站地址。
在不同的工况下,从站的数量以及种类都有可能不同,为了保证系统的扩展性和兼容性,通信之前必须对各个从站地址的有效性进行检查,保存有效的从站地址号。
(3) 轮流对各从站发送读取/写入数据申请。
其中关键的部分是检查各地址的有效性以及轮询各从站地址。
具体程序流程如图2所示。
图2 主站轮询从站的程序流程图3 计算机作为Modbus从站的设置及编程计算机作为Modbus从站,主要完成对各个传感器以及PLC的设置、监控和数据处理等功能。
这要求:计算机能随时作为从站接入Modbus系统进行通讯;在计算机进入通信网路以后,必须能与通信主站进行数据交换,且能接收其他从站返回的数据。
考虑到系统中主站的读取/写入数据申请命令和各个从站的数据响应的长度、内容以及时间间隔不同,计算机从站对串口数据的操作不能单独采用中断方式或者查询方式[5]:如果只采用前者,则无法定义数据中断的长度;如果采用后者,则无法及时回复主站对本从站的数据读取/写入命令。
所以,本系统把两种方式相结合起来,采用先中断后查询的方法对串口数据进行操作。
S7-200 Modbus主站通信指令具有如下特点:(1) 可自由设置从站响应超时的时间阈值;(2) 如果从站数据超时,S7-200将重新发送数据申请,共尝试三次。
根据S7-200这一特点,对串口数据可以进行如下处理:当串口接收到数据而发生中断时,等待此帧数据全部到达,等待时间的设置可以参照PLC主站的超时阈值设置。
一帧数据接收完之后,采用CRC校验来验证数据的有效性,然后根据数据内容的特点,分析数据来源和数据命令内容,并做出相应的数据处理。
其软件设计框图如图3所示。
计算机从站采用Visual Basic语言编程,部分程序及代码如下。
串口初始化程序如下:mPort=PortOfModbusMSComm1.Settings=″19200,e,8,1″MSComm1.InputLen=0MSComm1.RThreshold=1MSComm1.InputMode=comInputModeBinary串口数据处理程序如下:Private Declare Sub Sleep Lib ″kernel32″ (ByVal dwMilliseconds As Long)′为使用Sleep函数,需在程序中引入系统API函数Private Sub MSComm1_OnComm() ′收到一个字节触发一次中断Sleep TimeDelay ′延时一段时间,等待此帧数据读完,配合主站的超时时间ReceiveData.Buffer= MSComm1.Input ′提取串口数据Select case ReceiveData.Buffer(0)′通过判断从站地址,来判断主站的通信请求Case 0′主站的广播数据,无从站响应数据Call CheckCRC16(ReceiveData.Buffer) ′CRC校验Case 1 ′对从站1的数据读取/写入数据请求Call CheckAnswer(ReceiveData.Buffe)′检查从站是否有回复,并分离主站读取/写入命令和传感器回应命令Call CheckCRC16(ReceiveData.Request)′对主站申请命令进行CRC校验Call CheckCRC16(ReceiveData.Answer)′对从站响应命令进行CRC校验Case 2……Case IDofComputer ′PLC对计算机的数据请求命令Call CheckCRC16(ReceiveData.Buffer) ′CRC校验If ReceiveData.Buffer(0)=ReadSym then Call SentData(Read)′判断为读取命令,回应PLC的请求If ReceiveData.Buffer(0)=WriteSym then Call SentData(Write)′判断为写入命令,回应PLC的请求……End selectEnd Sub图3 串口数据处理程序流程图4 传感器的选择及配置传感器选型时,在考虑传感器的精度、线性度等性能指针的同时,还需考虑以下几个方面:传感器作为Modbus从站,其功能码能否与PLC作主站的功能码兼容;传感器是否兼容RS 485通信协议。