| 加入桌面 | 无图版 |
中国建筑电气网_供配电|智能建筑|能效管理|电气人才平台|电气节能开关|建筑电气|智能开关|b2b网站|b2b行业|b2b企业  
 
当前位置: 首页 » 资料 » 智能建筑 » 正文

Modbus/TCP协议在智能建筑集成管理系统中的应用

放大字体  缩小字体 发布日期:2015-08-22  来源:《电气&智能建筑》  作者:济南学智节能技术有限公司 江玮 王雷 等
摘 要 智能建筑集成管理系统是智能建筑的核心系统之一,文章设计了基于Modbus/TCP协议的楼宇自控子系统集成方案。将Modbus/TCP协议在Microsoft Visual Studio开发环境下运用C#语言进行了程序的设计,实现了客户端通过以太网远程获取Modbus/TCP Server发送的数据,该研究对集成Modbus协议的子系统具有一定的参考价值。
 
关键词 智能建筑集成管理系统 楼宇自控子系统 Modbus/TCP Microsoft Visual Studio C#语言
 
  1 前言
 
  目前,智能建筑领域广泛使用着不同厂家的和不同协议的产品,即使在同一建筑物的智能化系统中,各个子系统往往也采用不同厂家的产品或者是同一厂家的不同协议的产品。国际智能建筑业界提出了几种开放协议力求在通信协议上得到统一,但市场上占有主要市场份额的还是各厂家的专有协议,因此实现协议统一是比较困难的,而基于软件层次上的集成不失为一个可行的方法。
 
  集成软件通常采用客户端/服务端或浏览器/服务器的结构。软件各部分(如客户端和服务端)之间的通信有多种实现方法,如基于Modbus/TCP通信协议的消息传递的方法、基于中间件技术的方法等[1]。在信息化的今天,网络已成为人们获取各种信息的重要方式,工业领域也是如此。基于TCP的Modbus协议,由于它开放、简单、易于理解且性能稳定,已成为各大厂家竞相采用的工业以太网通讯标准之一。
 
  本文采用Microsoft Visual Studio作为开发工具,利用C#语言编程实现了Modbus/TCP通讯,远程实时采集Modbus/TCP Server发送的数据,为集成采用Modbus/TCP通讯协议的子系统功能提供了一种解决方案。
 
  2 Modbus/TCP协议
 
  Modbus/TCP协议是基于以太网技术和标准TCP/IP技术发展起来的,用于主从通讯的开放网络传输协议。Modbus/TCP协议是在不改变原有Modbus协议的基础上,将传输层协议移植到TCP/IP上,由此Modbus/TCP设备可以通过以太网和光纤网络进行连接和通信。Modbus/TCP属于Modbus-RTPS协议簇的一部分,与其它工业以太网相比,在其开放性、便利性和稳定性上具有优势。与RS-485接口相比,Modbus/TCP允许更多的地址,可以采用多主站架构,传送速率可以达到GB/s的水平。它的不足之处在于实时性方面表现欠佳,因此在实时性要求较高的场合,需要对物理层和链路层进行优化[2]。
 
  与Modbus RTU或ASC相比,Modbus/TCP虽然包括了从站地址、功能码和传输的数据,但是不需要校验控制码,因为Modbus/TCP的校验功能已经在TCP/IP协议和链路层的校验机制得到了保证。
 
  Modbus/TCP协议采用客户端/服务器(Client/Server)模型,规定了网络互联节点间请求/应答的通信方式。为了能够实现在以太网上的数据传输,其数据帧的格式须严格遵守协议所规定的ADU(Application Data Unit)格式[3],数据包格式如图1所示。
 
  MBAP(Modbus Application Protocol)帧头采用的是TCP/IP专用的报文头,以识别Modbus后续的数据单元,共有7个字节,分为4个标识符进行描述,具体如表1所示。
52-1
 
  由表1可以看出,MBAP中事务标识符用于事务处理配对,在响应中Modbus/TCP服务器复制请求的事务处理标识符;协议标识符用于系统内的多路复用,通过值0识别Modbus协议;长度用于描述后续数据的总字节数;单元标识符是为了实现系统内路由,实现Modbus/TCP网关与Modbus串行从站间的通信,Modbus/TCP客户机在请求中必须利用相同的值返回这个域。
52-2
 
  功能码规定了客户端和服务器端需要执行的相关操作,可以分为位操作和字操作两种。在Modbus协议的标准中,已经定义好了相应的功能和特定的功能码[3]。功能码的正确使用是实现Modbus通信的关键所在,表2中列出了部分功能与其所对应的功能码。数据域部分所需的数据域大小是与之前的功能码相关的,数据域一般是由后续数据的长度、所操作的寄存器的地址以及寄存器数量三部分构成的。
 
  另外,Modbus/TCP协议在进行数据通信时,服务器端口号应该设置为502,这是Modbus/TCP协议专有的端口号,Modbus/TCP是唯一一个能分配到互联网端口的工业以太网通信协议。
52-3
 
  3 数据采集、存储功能的实现
 
  在集成楼控子系统的开发中,采用Microsoft Visual Studio开发工具,利用C#语言编写Modbus/TCP Client,实现了Modbus/TCP通讯以及所需数据的采集。Microsoft Visual Studio包括了整个软件生命周期中所需要的大部分工具,如UML工具、代码管控工具、集成开发环境(IDE)等等,是目前流行的Windows平台应用程序的集成开发环境,编制的目标代码适用于微软支持的所有平台。
 
  3.1 数据采集功能编程实现
 
  采用面向对象的编程思想,利用C#编程实现Modbus/TCP协议的数据通讯功能,首先建立与Modbus/TCP Server的连接。
 
TcpClient tcpClient = new TcpClient();
  tcpClient.Connect(IPAddress.Parse(ip),port);
此处ip为建立连接的Server主机的IP地址,端口号port为502.
其次,需要完成MBAP报文头,对于事务标识符的处理,在程序中可以用一个变量记录该标识,占用两个字节,代码如下:
  private byte dataIndex = 0;  
  protected byte CurrentDataIndex
{
get { return this.dataIndex; }
}
  protected byte NextDataIndex()
{
return ++this.dataIndex;
}
 
 
 
[ 资料搜索 ]  [ 加入收藏 ]  [ 告诉好友 ]  [ 打印本文 ]  [ 关闭窗口 ]

 
0条 [查看全部]  相关评论

 
推荐图文
推荐资料
点击排行
 
更多
网站首页 | 电子期刊 | 关于我们 | 联系方式 | 使用协议 | 版权信息 | 网站地图 | | RSS订阅

北京网络警察报警平台

公共信息安全网络监察

经营性网站备案信息网

不良信息违法举报中心

购物车(0)    站内信(0)     新对话(0)