netbox

更新时间:2023-03-20 19:04:07 阅读: 评论:0

四方协议-小兔子的外形

netbox
2023年3月20日发(作者:寂寞红)

其实很早就想写写关于Modbus的开发历程,但牵扯项目较多,不同语言版

本较多,头绪繁杂,一时不知从何写起。最近的医疗项目的通信部分,重新调整

为Modbus协议,并且内容几乎涵盖了Modbus的方方面面(Rtu/Tcp,Slave/Client

相关开发),所以更坚定了写Modbus信心,今天忙里偷闲,以时间为序,以项

目为纲,把Modbus相关开发经历一一道来。

一、焦炉四大车通信系统(2002~2005)

硬件平台:西门子PLC200

操作系统:Win2000/XP

1、主PLC与PC机的通信

最早主PLC与PC机通信,采用自定义的协议,主PLC中做了一个类似木

马的程序来响应PC机下发的读写V变量区的指令。这样就完成了PLC的读写

操作。

后来西门子PLC的开发软件进行了升级,提供了ModbusRtuSlave库,这

样只要上位机实现ModbusRtuClient就可以直接读写PLC变量区了,之后用VB

开发了Modbus相应的组件,这样很长一段内,该系统PC与主PLC就采用了

Modbus的通信。

前两年开发组态软件,所以西门子PPI协议顺礼成章也就知道了,当然PC

与西门子采用PPI协议是最棒的,因为PLC中不需要写一行代码,也无需占用

程序和变量空间。所以之后Modbus被放弃了,转而采用了PPI通信协议。

2、主PLC与从PLC的通信(无线电台通信)

刚开始主PLC与从PLC采用自定义协议,最早在首钢做实验的时候,只有

四个从站,并且个数是唯一确定的,所以自定义协议用的很好,效率也很高;但

是项目推广后,在其它现场有7个从站的,也有8个,9个的,不确定,并且从

站要分组,此外通信传递内容也更多了,不光位置信息、推焦电流、推焦、平煤

信号、连锁信号都要传递,最后选择了Modbus协议。

但是使用Modbus有几个问题,第一西门子提供的ModbusSlave不支持广播

命令,第二只提供了ModbusSlave程序,从PLC没有什么问题,但是主PLC却

没有ModbusClient程序。

对第一个问题,没有办法,不支持就算了,只要一个个来写。(注:后来的

某一天,西门子MicroWIN开发环境突然出bug了,竟然川军的功效与作用 看到了部分的西门子

ModbusSlave源码,我在此基础上实现了可支持广播的ModbusSlave代码)。

对第二个问题,只好老老实实的用西门子PLC语句表命令开发Modbus

Client,只要实现3号和16号命令就可以了,还好,ModbusClient本身协议不

难,难在PLC的运行机制和PC程序不同,PLC是大循环扫描的,等待数据返

回时,不能直接等待,否则运行看门狗会超时,总之克服重重困难,终于开发出

稳定可靠的ModbusClient程序,直到现在,现场的PLC通信仍采用该方式。

附记:有人会问,为什么没有采用PPI协议,PLC本身就支持主和从协议啊?

但太让人遗憾的是,PPI协议通信节奏太快,目前还没有无线电台(普通工业用)

可以正常实现PPI协议通信。

该焦炉四大机车相关介绍,可以参见我以前写的文章:

/tech/example/detail_?id=4055

相关专利

/C10B/2003/

我开发的Modbus控件介绍

/yefanqiu/archive/2005中国梦是什么意思 /11/20/

我开发的PPI控件介绍

/yefanqiu/archive/2005/11/18/

二、ABPLC扩展模块ProSoftMVI56通信模块(2005年11月)

在做济钢四车项目的时候,由于PLC采用的是ABRsLogix5000系列的

PLC,上面的端口不支持自由口编程,无法读取我们定位标尺的数据,所以购买

了与其合作的ProSoft公司专门生产第三方模块。ProSoft生产的模块有很多

种,由于没有经验,很不幸,我们选择的是MVI56的模块,而这个模块却是全

部自由编程,不含有任何默认协议。

该模块典型的就是一个嵌入式系统,相当一个带三个串口的386的电脑,

操作系统为小型的DOS系统(TINYDOS),用C++为其开发程序。

在开发完我们的红外定位标尺的读取程序后,顺便也开发一个ModbusRtu

Client的程序,这样AB的PLC可以直接和Modbus的设备进行通信了。

/yefanqiu/archive/2005/11/20/

三、隧道广告影像系统(2004~2006)

隧道广告影像系统的通信系统,采用12个通信子站(NetBoxII),刚开始

并没有任何Modbus协议,直到有一天,客户提出要控制节目播放的次序、次数

和播放时间,最后决定在地铁隧道里,添加一个西门子PLC200系统,由于设备

早已安装完成,不可能为PLC布一个五六百米的通信线路,只好利用原通信线

路,而最上层的通信为TCP,二年级好句摘抄 NetBoxII下一层才是485总线,所以NetBoxII当

仁不让的成了通信桥的设备。

但是,问题来了,上位机PC如何通过TCP与基于485的PLC进行通信?

最后,决定西门子PLC中安装ModbusRtuSlave程序,实现一个标准Modbus

设备,NetBoxII实现ModbusTcp到ModbusRtu的协议转换。也就是说,在

NetBoxII中实现ModbusTcpSlave和ModbusRtuClient代码。

这样用BC3.0,DOS平台下实现了ModbusTcp/Rtu协议转换功能,实现了

上位机PC与PLC的通信的要求。

隧道广告的相关介绍,可以参见我以前写的文章:

/yefanqiu/archive/2006/08/16/

四、嵌入式组态系统(2006年1月~至今)

开发组态系统,自然而然的要实现各种通信协议的驱动,所以Modbus协议

的开发不在话下。

分别用EVC和VC实现了ModbusRtu/AscII/Tcp的Client通信协议驱动。

嵌入式组态系统的相关介绍,可以参见我以前写的文章:

/yefanqiu/archive/2006/11/29/

/yefanqiu/archive/2006/11/19/

/yefanqiu/archive/2006/10/24/

五、LED影像系统(2006年12月~至今)

目前关于通信这块代码还没有做,不过已决定用C#开发ModbusRtuClient

程序和单片机开发的硬件设备进行通信(单片机中实现ModbusRtuSlave,这部

分有专门的硬件工程师实现),通过Modbus的通信实现LED大屏各种参数的

配置。

LED系统相关介绍

/yefanqiu/archive/2007/05/28/

六、医疗系统(2007年6月~至今)

目前这部分正在做,除红外通信板的ModbusRtuSlave用汇编实现外,其它

的都用C#语言实现。

七、ModbusRtu通信协议(3,16号命令)

1、读取保持寄存器(单个和多个,以字为最小单位)

发送命令帧:

设备地址功能码地址H地址L数据量H数据量LCRCHCRCL

Addr03HHoldStartDataNumCRC高位CRC低位

帧长度:8个字巴金的《家》 节

设备地址:1~247

功能码:3H

数据地址:0~65535具体范围与相关设备有关

数量:1~65535(2的16次)具体范围与相关设备有关

校验码:CRC16校验

返回命令帧:

设备地址功能码数据量数据1数据NCRCHCRCL

Addr13H返回数据的字节数NData(1~N)CRC高位CRC低位

帧长度:5+N个字节

设备地址:1~24充实的近义词 7

功能码:3H

数据量:实际的读取数据数量

数据:返回数据的意义

a=HoldStart

n=Data小米3路由器 Num-1

VWa(VB

a)

VWa(VB

a+1)

…VWa+n(VB

a+n)

VWa+n(VBa+n+1)

Data(1)Data(2)…Data(N-1)Data(N)

校验码:CRC16校验

命令有误:

1)没有任何返回

2)返回异议帧

设备地址功能码错普法手抄报内容 误信息CRCHCRCL

Addr183H一个字节的错误信息CRC高位CRC低位

2、设置保持寄存器(多个,以字为最小单位)

发送命令帧:

设备

地址

功能

地址H地址L

数据量

H

数据量

L

数据字

节数

具体

数据

CRCHCRCL

Addr010HHoldStartDataNumbytN1~bytNCRC高位CRC低位

帧长度:9+bytN个字节

设备地址:1~247

功能码:10H

数据地址:0~65535具体范围与相关设备有关

数量:1~122具体范围与相关设备有关

字节数:设置的字节个数bytN=DataNum2

数据:具体的字节数据

校验码:CRC16校验

返回命令帧:

设备地址功能码地址H地址L数据量H数据量LCRCHCRCL

Addr110HHoldStartDataNumCRC高位CRC低位

帧长度:8个字节

设备地址:1~247

功能码:10H

数据地址:0~65535具体范围与相关设备有关

数量:1~122具体范围与相关设备有关

校验码:CRC16校验

命令有误:

1)没有任何返回

2)返回异议帧

地址功能码错误信息CR韩信是怎么死的 CHCRCL

Addr190H一个字节的错误信息CRC高位CRC低位

八、一点总结

编写通信相关的程序,其实协议和开发语言并不重要,重要的是对通信双方

的通信设备的特点,性能要有充分了解,这样才能开发出可靠,高效的通信程序。

本文发布于:2023-03-20 19:04:07,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/zhishi/a/1679310247152287.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:netbox.doc

本文 PDF 下载地址:netbox.pdf

上一篇:清明踏青
下一篇:返回列表
标签:netbox
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 实用文体写作网旗下知识大全大全栏目是一个全百科类宝库! 优秀范文|法律文书|专利查询|