- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
虚拟设备实现Modbus串行链路及Modbus-TCPIP互连
虚拟设备实现Modbus串行链路及Modbus/TCPIP互连【摘要】Modbus作为第一个用于工业现场的总线协议,应用极其广泛,他包括基于串口的Modbus协议和基于以太网的Modbus/TCPIP协议。文章描述了通过虚拟设备实现了这两种通讯方式的互联并给出了实现细节,提出了虚拟技术具有广泛的应用领域。
【关键词】虚拟串口;TDI驱动;Modbus
Virtual device make the connection between Modbus serial port and Modbus/TCPIP
Wang yu ning,fuliang
(SIASUN ROBOT AUTOMATION CO,LTD. Liaoning 110168)
Abstract:Modbus is applied widely as the first bus treaty used in industry.It includes Modbus treaty based on serial port and Modbus/TCP treaty based on ethernet network. The essay realizes the connection of the two kinds of communication and give the realization in details, put forward that the technology of virtual will be used widely
Key words:virtual serial port;TDI drive;Modbus
引言
近年来,工业现场总线与工业以太网发展迅速,他们之间的之间的竞争也十分激烈。Modbus/TCP以太网协议由Schneider公司发布,是将Modbus现场总线协议与以太网TCP/IP协议结合而成,使得信息从一个网络传输到另一个网络而不需改变通讯协议成为了可能。IANA委员会给施耐德电气公司分配了已为大家熟知的TCP 502端口,以专为Modbus协议保留,可见,Modbus/TCPIP协议现在已经成为Internet标准。
虚拟技术就是把物理资源转变为逻辑上可以管理的资源,以打破物理结构之间的壁垒,Modbus/TCPIP以太网协议是以网卡为对外接口,Modbus现场总线协议是以串口与外界通讯,由于硬件的限制,双方是无法通讯的。但通过虚拟技术,使得他们之间的通讯成为了可能,他的好处是不需要通过添加网关这样的硬件。本文通过生成一个虚拟串口设备实现他们之间的互联。
1、虚拟设备实现互连原理
虚拟设备是如何实现Modbus串行链路与Modbus/TCPIP互联的呢,它采用的是“欺上瞒下”的手段,对上层应用程序,注册成一个标准的串口设备,那么只要用户打开这个虚拟设备,就可以发送所有操作串口的API过来,在收到这些请求之后,因为并非去操作真实串口设备,所以对大部分请求直接返回成功即可。但其中有些请求却是需要去处理的,如创建、读写这些请求,以及串口操作控制码中的超时设置等。通过I/O的写请求包获取到应用程序发往串口的数据,虚拟设备做的工作就是把数据发往真实的网卡。它的实现是通过先打开协议驱动设备(如TCP/IP协议驱动,也称为TDI传输器),通过TDI驱动接口构建I/O请求包(IRP)然后发给协议驱动,协议驱动负责为发送的网络数据添加协议头(如TCP/IP协议的TCP头、IP头),最后把封装好的IP包传给NIC设备驱动进行发送。Modbus协议的网络端在收到数据后进行解析,最终获得Modbus串口端发送的数据。在处理读请求时与写请求类似,获得网络数据后,把数据拷入串口读请求包中后返回。另外,对于Modbus这种主从协议需要处理超时,如在网络上移除从站后,在规定时间内没有从站应答返回,主站应取消对其的读请求,让读请求以失败返回。所以在处理超时请求时,保存这个超时时间,在读请求中启动定时器,在时间到时进行读操作,如果没有数据到来则失败返回。
2、程序实现
(1)在正式创建虚拟设备之前,需要准备一些工具,就像应用程序使用开发包SDK一样,内核编程使用”Windows Drive Kit”,简称WDK。WDK自带所有需要的头文件、库、C/C++语言及汇编语言的编译器与连接器。另外需安装一个虚拟机,因为在本机上直接加载一个内核模块是非常不明智的。如果模块中有错误,很容易导致操作系统蓝屏,这是工作文件可能还没有保存,导致代码丢失。
(2)首先要解决的是Modbus串行应用程序如何与虚拟串口设备交互的问题,先通过IoCreateDevice函数创建一个设备,每个驱
文档评论(0)