论文部分内容阅读
摘要:在系统集成过程中,经常用到组态软件之间的通信问题,广泛应用的OPC通信技术虽然操作简单,只需配置软件系统,不用写专门的代码就可实现服务器与客户端的通信,但其对计算机硬件配置较高,占用内存资源多,通信速度慢,在许多场合WINSOCK通信技术对这些问题可迎刃而解,本文阐述了WINSOCK技术概况以及具体的使用方法。
关键词:iFIX;MCGS;WINSOCK;通信
中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)12-2pppp-0c
Application of Communications in Coal Mine Based on WINSOCK
WANG Ying
(Anhui Hengyuan Coal Industry and Electricity Power Co.Ltd,huaibei 235156,China)
Abstract:In the systems integration process, communications is frequently used between the software configuration, OPC Although simple operation, configuration software system only, not to write special code to be available to the server and client communications, but its Computer hardware configuration higher and occupancy memory resources, communication is slow; on many occasions, these problems can be resolved by WINSOCK communications technology, this paper describes WINSOCK technical and specific use.
Key words:iFIX;MCGS;WINSOCK;communications
iFIX是美国Intellution公司开发的运行于NT/2000/2003的新一代大型组态软件。它以iCORE为核心,完全基于开放组件技术的自动化软件。iFIX是当今世界工业控制领域最为流行的上位机控制软件之一,其功能强大、运行稳定,在煤炭系统得到了广泛应用。
MCGS是一款国内开发的组态软件,该软件简单易学、成本低廉在煤矿控制监测系统中的应用也非常广泛。
现有一套以MCGS组态软件设计的井下皮带集中控制系统,在调度室我们用iFIX将该系统集成到一个综合自动化平台下,实现井下皮带集中控制系统的远程实时监测。在系统集成过程中,根据现场条件我们采用了基于WINSOCK的网络通信,从而实现iFIX作为客户端访问MCGS的服务器端的通信问题。
1 问题的提出
在工业控制领域,现在被广泛接受的是采用OPC技术来实现信息系统的集成,OPC(OLE for Process Control-用于过程控制的OLE)规范是世界领先的自动化厂商与美国微软公司合作制定的一项工业标准,它定义了客户机程序与服务器程序进行实时数据交换的方法,这使得系统硬件开发商只要提供带有OPC接口的服务器,任何支持OPC接口的客户程序都可以对该设备进行存取,而无须重新开发驱动程序。iFIX和MCGS软件都支持OPC接口,而且支持远程OPC访问,即iFIX与MCGS通过OPC接口实现通信。在具体应用中,我们以MCGS端为OPC SERVER,以iFIX为OPC CLIENT,实现了iFIX通过OPC远程访问MCGS服务器,但由于MCGS控制系统设计较早,工控机本身配置低,装入OPC SERVER后通过远程访问时频频造成计算机死机重起,严重影响了皮带控制系统的使用,在此我们提出了用基于WINSOCK的网络技术来代替两者之间的OPC通信。
2 WINSOCK技术
Winsock提供了访问 TCP 和 UDP 网络服务的方便途径。Microsoft Access、Visual Basic、Visual C 或 Visual FoxPro 的开发人员都可使用它。为编写客户或服务器应用程序,不必了解 TCP 的细节或调用低级的 Winsock APIs。通过设置控件的属性并调用其方法就可轻易连接到一台远程机器上去,并且还可双向交换数据。在本系统中我们采用了Visual Basic作为通信的开发平台,用VB的Winsock控件来实现网络通信。
2.1 TCP 基础
数据传输协议允许创建和维护与远程计算机的连接。连接两台计算机就可彼此进行数据传输。
如果创建客户应用程序,就必须知道服务器计算机名或者 IP 地址(RemoteHost 属性),还要知道进行“侦听”的端口(RemotePort 属性),然后调用 Connect 方法。
如果创建服务器应用程序,就应设置一个收听端口(LocalPort 属性)并调用 Listen 方法。当客户计算机需要连接时就会发生 ConnectionRequest 事件。为了完成连接,可调用 ConnectionRequest 事件内的 Accept 方法。
建立连接后,任何一方计算机都可以收发数据。为了发送数据,可调用 SendData 方法。当接收数据时会发生 DataArrival 事件。调用 DataArrival 事件内的 GetData 方法就可获取数据。
2.2 UDP 基础
用户数据文报协议 (UDP) 是一个无连接协议。跟 TCP 的操作不同,计算机并不建立连接。另外UDP应用程序可以是客户机,也可以是服务器。
为了传输数据,首先要设置客户计算机的 LocalPort 属性。然后,服务器计算机只需将 RemoteHost 设置为客户计算机的 Internet 地址,并将 RemotePort 属性设置为跟客户计算机的 LocalPort 属性相同的端口,并调用 SendData 方法来着手发送信息。于是,客户计算机使用 DataArrival 事件内的 GetData 方法来获取已发送的信息。
2.2 通信协议的选择
在使用 WinSock 控件时,首先需要考虑使用什么协议。可以使用的协议包括 TCP 和 UDP。两种协议之间的重要区别在于它们的连接状态:
TCP 协议控件是基于连接的协议,可以将它同电话系统相比。在开始数据传输之前,用户必须先建立连接。
UDP 协议是一种无连接协议,两台计算机之间的传输类似于传递邮件:消息从一台计算机发送到另一台计算机,但是两者之间没有明确的连接。另外,单次传输的最大数据量取决于具体的网络。
在收发数据时,MCGS服务器端每隔5S向iFIX客户端发送一次数据,在收发数据前不需要客户端确认,因服务器端计算机性能较差,为避免耗费计算机过多资源,我们采用UDP通信协议。
2.3 协议的设置
在设计时,可以按如下方式设置应用程序使用的协议:在“属性”窗口中单击“协议”,然后选择 sckUDPProtocol。也可以使用程序代码来设置 Protocol 属性,如下所示:
Winsock1.Protocol = sckUDPProtocol
3 MCGS服务器端设计
用VB编写程序每隔5秒读取一次MCGS实时数据库的数据,通过Winsock向客户端发送数据;首先初始化通信端口,设定远程客户端计算机的IP地址和端口、本机开放的端口。代码如下:
With Winsock1
.RemoteHost = "192.168.0.10" ’将RemoteHost的值修改为计算机的名字或IP
.RemotePort = 4004’连接的端口号
.Bind 4005
End With
本设计中服务器端只负责向外发送数据,并不接收客户端的返回数据,故只需要调用Winsock控件的SendData 方法向外发送实时数据,代码如下:
For Ri=1 To objRe.RecordCount
DatObj.GetValueFromName Trim(McgsName(Ri)), RValue(Ri)
strData = RValue(Ri)
Winsock1.SendData strData
Next Ri
4 iFIX客户端设计
在iFIX客户端,同样需要初始化通信端口,设定服务器计算机的IP和端口、本机开放的端口,代码如下:
With Winsock2
.RemoteHost = "192.168.0.11" .RemotePort = 4005.Bind 4004
End With
用Winsock的DataArrival事件接收服务器发来的数据,本系统客户端只接收服务器发来的数据,并不向服务器发送数据,接收数据的同时将数据写入iFIX的实时数据库,代码如下:
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim strData As String
Winsock1.GetData strData
RValue(r) = strData
If r >= objRe.RecordCount Then
For Ri = 1 To objRe.RecordCount
Set TargetVar = WrkSpcApp.System.FindObject("Fix32.SERVER."
关键词:iFIX;MCGS;WINSOCK;通信
中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)12-2pppp-0c
Application of Communications in Coal Mine Based on WINSOCK
WANG Ying
(Anhui Hengyuan Coal Industry and Electricity Power Co.Ltd,huaibei 235156,China)
Abstract:In the systems integration process, communications is frequently used between the software configuration, OPC Although simple operation, configuration software system only, not to write special code to be available to the server and client communications, but its Computer hardware configuration higher and occupancy memory resources, communication is slow; on many occasions, these problems can be resolved by WINSOCK communications technology, this paper describes WINSOCK technical and specific use.
Key words:iFIX;MCGS;WINSOCK;communications
iFIX是美国Intellution公司开发的运行于NT/2000/2003的新一代大型组态软件。它以iCORE为核心,完全基于开放组件技术的自动化软件。iFIX是当今世界工业控制领域最为流行的上位机控制软件之一,其功能强大、运行稳定,在煤炭系统得到了广泛应用。
MCGS是一款国内开发的组态软件,该软件简单易学、成本低廉在煤矿控制监测系统中的应用也非常广泛。
现有一套以MCGS组态软件设计的井下皮带集中控制系统,在调度室我们用iFIX将该系统集成到一个综合自动化平台下,实现井下皮带集中控制系统的远程实时监测。在系统集成过程中,根据现场条件我们采用了基于WINSOCK的网络通信,从而实现iFIX作为客户端访问MCGS的服务器端的通信问题。
1 问题的提出
在工业控制领域,现在被广泛接受的是采用OPC技术来实现信息系统的集成,OPC(OLE for Process Control-用于过程控制的OLE)规范是世界领先的自动化厂商与美国微软公司合作制定的一项工业标准,它定义了客户机程序与服务器程序进行实时数据交换的方法,这使得系统硬件开发商只要提供带有OPC接口的服务器,任何支持OPC接口的客户程序都可以对该设备进行存取,而无须重新开发驱动程序。iFIX和MCGS软件都支持OPC接口,而且支持远程OPC访问,即iFIX与MCGS通过OPC接口实现通信。在具体应用中,我们以MCGS端为OPC SERVER,以iFIX为OPC CLIENT,实现了iFIX通过OPC远程访问MCGS服务器,但由于MCGS控制系统设计较早,工控机本身配置低,装入OPC SERVER后通过远程访问时频频造成计算机死机重起,严重影响了皮带控制系统的使用,在此我们提出了用基于WINSOCK的网络技术来代替两者之间的OPC通信。
2 WINSOCK技术
Winsock提供了访问 TCP 和 UDP 网络服务的方便途径。Microsoft Access、Visual Basic、Visual C 或 Visual FoxPro 的开发人员都可使用它。为编写客户或服务器应用程序,不必了解 TCP 的细节或调用低级的 Winsock APIs。通过设置控件的属性并调用其方法就可轻易连接到一台远程机器上去,并且还可双向交换数据。在本系统中我们采用了Visual Basic作为通信的开发平台,用VB的Winsock控件来实现网络通信。
2.1 TCP 基础
数据传输协议允许创建和维护与远程计算机的连接。连接两台计算机就可彼此进行数据传输。
如果创建客户应用程序,就必须知道服务器计算机名或者 IP 地址(RemoteHost 属性),还要知道进行“侦听”的端口(RemotePort 属性),然后调用 Connect 方法。
如果创建服务器应用程序,就应设置一个收听端口(LocalPort 属性)并调用 Listen 方法。当客户计算机需要连接时就会发生 ConnectionRequest 事件。为了完成连接,可调用 ConnectionRequest 事件内的 Accept 方法。
建立连接后,任何一方计算机都可以收发数据。为了发送数据,可调用 SendData 方法。当接收数据时会发生 DataArrival 事件。调用 DataArrival 事件内的 GetData 方法就可获取数据。
2.2 UDP 基础
用户数据文报协议 (UDP) 是一个无连接协议。跟 TCP 的操作不同,计算机并不建立连接。另外UDP应用程序可以是客户机,也可以是服务器。
为了传输数据,首先要设置客户计算机的 LocalPort 属性。然后,服务器计算机只需将 RemoteHost 设置为客户计算机的 Internet 地址,并将 RemotePort 属性设置为跟客户计算机的 LocalPort 属性相同的端口,并调用 SendData 方法来着手发送信息。于是,客户计算机使用 DataArrival 事件内的 GetData 方法来获取已发送的信息。
2.2 通信协议的选择
在使用 WinSock 控件时,首先需要考虑使用什么协议。可以使用的协议包括 TCP 和 UDP。两种协议之间的重要区别在于它们的连接状态:
TCP 协议控件是基于连接的协议,可以将它同电话系统相比。在开始数据传输之前,用户必须先建立连接。
UDP 协议是一种无连接协议,两台计算机之间的传输类似于传递邮件:消息从一台计算机发送到另一台计算机,但是两者之间没有明确的连接。另外,单次传输的最大数据量取决于具体的网络。
在收发数据时,MCGS服务器端每隔5S向iFIX客户端发送一次数据,在收发数据前不需要客户端确认,因服务器端计算机性能较差,为避免耗费计算机过多资源,我们采用UDP通信协议。
2.3 协议的设置
在设计时,可以按如下方式设置应用程序使用的协议:在“属性”窗口中单击“协议”,然后选择 sckUDPProtocol。也可以使用程序代码来设置 Protocol 属性,如下所示:
Winsock1.Protocol = sckUDPProtocol
3 MCGS服务器端设计
用VB编写程序每隔5秒读取一次MCGS实时数据库的数据,通过Winsock向客户端发送数据;首先初始化通信端口,设定远程客户端计算机的IP地址和端口、本机开放的端口。代码如下:
With Winsock1
.RemoteHost = "192.168.0.10" ’将RemoteHost的值修改为计算机的名字或IP
.RemotePort = 4004’连接的端口号
.Bind 4005
End With
本设计中服务器端只负责向外发送数据,并不接收客户端的返回数据,故只需要调用Winsock控件的SendData 方法向外发送实时数据,代码如下:
For Ri=1 To objRe.RecordCount
DatObj.GetValueFromName Trim(McgsName(Ri)), RValue(Ri)
strData = RValue(Ri)
Winsock1.SendData strData
Next Ri
4 iFIX客户端设计
在iFIX客户端,同样需要初始化通信端口,设定服务器计算机的IP和端口、本机开放的端口,代码如下:
With Winsock2
.RemoteHost = "192.168.0.11" .RemotePort = 4005.Bind 4004
End With
用Winsock的DataArrival事件接收服务器发来的数据,本系统客户端只接收服务器发来的数据,并不向服务器发送数据,接收数据的同时将数据写入iFIX的实时数据库,代码如下:
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim strData As String
Winsock1.GetData strData
RValue(r) = strData
If r >= objRe.RecordCount Then
For Ri = 1 To objRe.RecordCount
Set TargetVar = WrkSpcApp.System.FindObject("Fix32.SERVER."