Modbus的开发历程有HoldStart._第1页
Modbus的开发历程有HoldStart._第2页
Modbus的开发历程有HoldStart._第3页
Modbus的开发历程有HoldStart._第4页
Modbus的开发历程有HoldStart._第5页
免费预览已结束,剩余5页可下载查看

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、道来。其实很早就想写写关于Modbus的开发历程,但牵扯项目较多,不同语言版 本较多,头绪繁杂,一时不知从何写起。最近的医疗项目的通信部分,重新调整 为Modbus协议,并且内容几乎涵盖了 Modbus的方方面面(Rtu/Tcp, Slave/Client 相关开发),所以更坚定了写 Modbus信心,今天忙里偷闲,以时间为序,以项 目为纲,把Modbus相关开发经历硬件平台:西门子 P LC200操作系统:Win2000/X P1、主PLC与PC机的通信最早主PLC与PC机通信,采用自定义的协议,主 PLC中做了一个类似木 马的程序来响应PC机下发的读写V变量区的指令。这样就完成了 PLC的

2、读写操作。后来西门子PLC的开发软件进行了升级,提供了 Modbus Rtu Slave库,这 样只要上位机实现 Modbus Rtu Client就可以直接读写PLC变量区了,之后用VB 开发了 Modbus相应的组件,这样很长一段内,该系统 PC与主PLC就采用了 Modbus的通信。前两年开发组态软件,所以西门子 PPI协议顺礼成章也就知道了,当然 PC 与西门子采用PPI协议是最棒的,因为PLC中不需要写一行代码,也无需占用 程序和变量空间。所以之后 Modbus被放弃了,转而采用了 PPI通信协议。2、主PLC与从PLC的通信(无线电台通信)刚开始主PLC与从PLC采用自定义协议,最

3、早在首钢做实验的时候,只有 四个从站,并且个数是唯一确定的,所以自定义协议用的很好,效率也很高;但是项目推广后,在其它现场有7个从站的,也有8个,9个的,不确定,并且从 站要分组,此外通信传递内容也更多了,不光位置信息、推焦电流、推焦、平煤 信号、连锁信号都要传递,最后选择了 Modbus协议。但是使用Modbus有几个问题,第一西门子提供的Modbus Slave不支持广播 命令,第二只提供了 Modbus Slave程序,从PLC没有什么问题,但是主PLC却 没有 Modbus Client 程序。对第一个问题,没有办法,不支持就算了,只要一个个来写。(注:后来的某一天,西门子MicroW

4、IN开发环境突然出bug 了,竟然看到了部分的西门子 Modbus Slave源码,我在此基础上实现了可支持广播的 Modbus Slave代码)。对第二个问题,只好老老实实的用西门子PLC语句表命令开发ModbusClient,只要实现3号和16号命令就可以了,还好,Modbus Client本身协议不 难,难在PLC的运行机制和PC程序不同,PLC是大循环扫描的,等待数据返 回时,不能直接等待,否则运行看门狗会超时,总之克服重重困难,终于开发出 稳定可靠的Modbus Client程序,直到现在,现场的 PLC通信仍采用该方式。附记:有人会问,为什么没有采用PPI协议,PLC本身就支持主和

5、从协议啊? 但太让人遗憾的是,PPI协议通信节奏太快,目前还没有无线电台(普通工业用) 可以正常实现PPI协议通信。该焦炉四大机车相关介绍,可以参见我以前写的文章:htt p:/www.g ongkon ple/detail_1.as p?id=4055相关专利"htt p: /我开发的Modbus控件介绍htt p: /blog.csd n.n et/yefa nqiu/archive/2005/11/20/533315.as px我开发的PPI控件介绍htt p: /blog.csd n.n et/yefa nqiu/archive/2005/11/18/532256.as px

6、二、AB PLC扩展模块ProSoft MVI56通信模块(2005年11月)在做济钢四车项目的时候,由于 PLC采用的是AB RsLogix5000 系列的 PLC,上面的端口不支持自由口编程,无法读取我们定位标尺的数据,所以购买 了与其合作的ProSoft公司专门生产第三方模块。ProSoft生产的模块有很多 种,由于没有经验,很不幸,我们选择的是 MVI56的模块,而这个模块却是全 部自由编程,不含有任何默认协议。该模块典型的就是一个嵌入式系统,相当一个带三个串口的386的电脑,操作系统为小型的DOS系统(TINY DOS ),用C + +为其开发程序。在开发完我们的红外定位标尺的读取程

7、序后,顺便也开发一个Modbus Rtu Client的程序,这样AB的PLC可以直接和Modbus的设备进行通信了。htt p:/blog.csd n.n et/yefa nqiu/archive/2005/11/20/533440.as px三、隧道广告影像系统(20042006)光柱光柱子站I子站I光歼(Tcr/ip)隧道广告影像系统的通信系统,采用12个通信子站(NetBoxll),刚开始并没有任何Modbus协议,直到有一天,客户提出要控制节目播放的次序、次数 和播放时间,最后决定在地铁隧道里,添加一个西门子PLC200系统,由于设备早已安装完成,不可能为PLC布一个五六百米的通信线

8、路,只好利用原通信线 路,而最上层的通信为 TCP, NetBoxII下一层才是485总线,所以NetBoxll当 仁不让的成了通信桥的设备。但是,问题来了,上位机 PC如何通过TCP与基于485的PLC进行通信?最后,决定西门子PLC中安装Modbus Rtu Slave程序,实现一个标准 Modbus 设备,NetBoxll实现 Modbus Tcp到Modbus Rtu的协议转换。也就是说,在 NetBoxII 中实现 Modbus Tcp Slave和 Modbus Rtu Client代码。这样用BC3.0,DOS平台下实现了 Modbus Tcp/Rtu协议转换功能,实现了 上位机

9、PC与PLC的通信的要求。隧道广告的相关介绍,可以参见我以前写的文章:htt p:/blog.csd n.n et/yefa nqiu/archive/2006/08/16/1074382.as px四、嵌入式组态系统(2006年1月至今)文件编辑项目迥调试迦格式叨工具帮助QI)! J旦卫总I,一 :丨,-丨匚丰习丨扌、二订.釦£ !里备工具箱丽编程控制器(P1X) a 西门子HflNFIFf41 p莫迪康如MobuiTcpii1西门子FFI聽斛稠屛粗号vr30IOG/E屏算另辨率:&40X480緊止TCP/肓服务:禁止:工程黃源管理署二 U 数A;备_统蚕量备内部變S直Tc

10、nlj 曰甜报警5报警区1IKoomiCOM2过集的控制系统(DCS)回观场总线系址(FCS)i渦智肓掀表 IM H .无连接H odbuaT匚<1 ':莫jBM Modius&il J日基本蓿宜A1| N U"fodbaz dk州 rL'ijo-LK= jt -Q挺动洁貝M 200T-T-18 17:£4:-11(T)£W7-7-ie IT:烈:柏£1 采源 A 打开工程文件成功:D : ITOHEI组惑软件I憐入式组态EasyHJIlV开览时Froj ec讥血molp. . . EazyHBI 口一 liiS衲Mt化肛潮

11、2_. I>开发组态系统,自然而然的要实现各种通信协议的驱动,所以Modbus协议的开发不在话下。分别用EVC和VC实现了 Modbus Rtu/Ascll/Tcp的Client通信协议驱动。嵌入式组态系统的相关介绍,可以参见我以前写的文章:htt P: /blog.csd n.n et/yefa nqiu/archive/2006/11/29/1419479.as pxhtt p: /blog.csd n.n et/yefa nqiu/archive/2006/11/19/1396827.as pxhtt p: /blog.csd n.n et/yefa nqiu/archive/20

12、06/10/24/1348840.as px五、LED影像系统(2006年12月-至今)匸方区iDCr2003004005韵r文件 SiaCE)格贰Q)节目迦»敢谡S 帮勖7L, 士 I kS J - y' %3X:组件库1越组件-Jb=BT2O1n矩形詛ffi斥V|曰模板:节目-AI-U 1O.Jd 节目 CHew Act)b9 箱I Aetrtftl口 MetAR4CtUl£l«lC? MetaEllipsel.O1JI11 JIIJIJ iOMetaEllipzl名称: HetaEllipiel特效:速度:Z3 EasyLEDSEffiSSE室 Wl

13、. Q&)LiiiTF 举 ar <已选中S元,可以对国元进行放犬、缩卜移动等操作X:110, ¥12' 128, 8Tl_H'120X80目刖关于通信这块代码还没有做,不过已决疋用 C#开发Modbus Rtu Client 程序和单片机开发的硬件设备进行通信(单片机中实现 Modbus Rtu Slave,这部 分有专门的硬件工程师实现),通过 Modbus的通信实现LED大屏各种参数的配置。LED系统相关介绍htt P: /blog.csd n.n et/yefa nqiu/archive/2007/05/28/1627782.as px六、医疗系

14、统(2007年6月至今)目前这部分正在做,除红外通信板的Modbus Rtu Slave用汇编实现外,其它 的都用C#语言实现。七、Modbus Rtu通信协议(3,16号命令)帧长度: 设备地址: 功能码: 数据地址: 数 量: 校验码: 返回命令帧:1、读取保持寄存器(单个和多个,以字为最小单位) 发送命令帧:设备地址功能码地址H地址L数据量H 1数据量LCRC HCRC LAddrO3 HHoldStartDataNumCRC高位CRC低位8个字节1 2473H065535 具体范围与相关设备有关165535(2的16次)具体范围与相关设备有关CRC1校验设备地址功能码数据量数据11数据

15、NCRC HCRC LAddr13 H返回数据的字节数 NData (1 7)CRC 高位CRC低位1 2473H帧长度:5+ N个字节 设备地址: 功能码: 数 据量:实际的读取数据数量 数 据:返回数据的意义a= HoldStartn= DataNum 1VW a (VB a)VWa (VB a+1)VW a+n (VB a+n)VWa+n (VB a+n +1)Data (1)Data(2)Data(N-1)Data(N)校验码:CRC1校验命令有误:1)没有任何返回2)返回异议帧设备地址功能码错误信息CRC HCRC LAddr183 H一个字节的错误信息CRC高位CRC低位2、设置保持寄存器(多个,以字为最小单位) 发送命令帧:设备地址功能码地址H地址L数据量H数据量L数据字节数具体数据CRC HCRC LAddr010 HHoldStartDataNumbytN1 bytNCRC高位CRC低位帧长度: 设备地址: 功能码: 数据地址: 数 字 数 校9 + bytN个字节1 24710H065535具体范围与相关设备有关1122具体范围与相关设备有关量:数:设置的字节个数 bytN= DataNum x 2据:具体的字节数据码:CRC1校验返回命令帧:设备地址功能码地址H地址L数据量H数据量LCRC HCRC LAddr110

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论