分布式系统中通信的设计与实现是至关重要的环节,它的数据采集站可直接与现场带有标准 RS — 232C 接口的智能仪表、PLC和单片机等链接,并可通过扩展控制卡形成一个数据采集子网,以高速准确地获取数据。VB 的 MSCOMM 通信控件具有完善的串口数据发送和接受功能,利用它可以屏蔽对硬件的操作,简易快捷地进行串行通信编程。
WW.W_PLC※JS_C,OM-PL,C-技.术_网
一、实例分析
WWW.PLCJS.COM——可编程控制器技术门户
本文举分布式系统中两个节点间连接的实例,其中节点 A(IP地址192.168.0.1)作为服务器负责某一区域的数据采集与处理,程序内有一名为TCPServer的Winsock控件;节点B(IP地址192.168.0.2)是同级或上一级的某一节点,作为客户机,其程序内有一名为 TCPClient 的 Winsock 控件。WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
节点A 服务器核心程序如下:
WWW_PLC※JS_COM-PmLC-技.术_网
(1)初始化程序
WWW.PLCJS.COM——可编程控制器技术门户
tcpserver(0).RemoteHostIP = 192.168.0.2P.L.C.技.术.网——可编程控制器技术门户
tcpserver(0).LocalPort = 1001 'tcpserver(0)专用于侦听WW.W_PLCJS_COM-PLC-技.术_网
tcpserver(0).ListenWWcW_PLCJS_COM-PLC-技.术_网
(2)发送数据程序
——可——编——程——控-制-器-技——术——门——户
tcpserver(Index).SendData Text1.Text
——可——编——程——控-制-器-技——术——门——户
(3)处理客户机连接请求程序
WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
Private Sub TCPServer_ConnectionRequest(Index AsInteger, ByVal requestID As Long) Load tcpserver(Index) tcpserver(Index).Accept requestID End Sub
WWW_P※LCJS_COM-PLC-)技.术_网
(4)客户机数据到达处理程序
——可——编——程——控-制-器-技——术——门——户
Private Sub TCPServer_DataArrival(Index As Integer,WWW_P※LCJS_COM-PLC-)技.术_网
ByVal bytesTotal As Long) Dim RD As String tcpserver(Index).GetData RD, vbString txtRD.text=RDWWW_P※LCJS_CO※M-PLC-技-.术_网
tcpserver(Index).SendData RD End Sub
plcjs.技.术_网
(5)关闭连接程序
WWW_PLCJS_COM-PLC-技.术_网
Private Sub TCPServer_Close(Index As Integer)P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
tcpserver(Index).CloseWWW_P※LCJS_CO※M-PLC-技-.术_网
Unload tcpserver(Index)WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
End SubWWW_PL※CJS_COM-PLC-技.术_网
以上程序着重说明Winsock控件的主要属性、方法和事件,如要实现多进程(多个客户程序同时运行),可应用创建控件数 组来代表已连接的控件实例的方法处理。——可——编——程——控-制-器-技——术——门——户
节点 B 客户机核心程序如下:
plcjs.技.术_网
Private ConnectFlag As Boolean ’P.L.C.技.术.网——可编程控制器技术门户
设置判断是否连接标志WWW_PLC※JS_COM-PmLC-技.术_网
(1)初始化程序
WW.W_PLC※JS_C,OM-PL,C-技.术_网
TCPClient.RemoteHost IP= 192.168.0.1 WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
远程计算机IP地址
——可——编——程——控-制-器-技——术——门——户
TCPClient.RemotePort = 1001 WWW_P※LCJS_COM-PLC-)技.术_网
远程计算机端口
WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
ConnectFlag = FalseWWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
(2)申请连接程序
WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
If Not ConnectFlag ThenWWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
TCPClient.CloseWWW.PLCJS.COM——可编程控制器技术门户
TCPClient.ConnectWWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
D oWWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
DoEventsWWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
Loop Until TCPClient.State = sckConnectedP_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
ConnectFlag = TrueWWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
End SubW1WW_P4LCJS_COM-PLC-技.术_网