新闻中心

EEPW首页>嵌入式系统>设计应用> 基于Winsock控件实现PLC网络通信控制

基于Winsock控件实现PLC网络通信控制

作者: 时间:2012-08-18 来源:网络 收藏

  初始化工作完成后向PLC提出连接请求,待PLC接受请求并发送应答信息后,客户端程序依照各种帧格式建立好要发送的信息帧,就可以与PLC进行双向的数据交流了。在这一过程中,可建立发送失败后的重发机制,以增强通信的可靠性。
  首先,建立并发送“握手信息”指令(20字节),指明客户机节点号;当计算机接收到PLC返回帧(24字节)后,检查PLC是否收到命令,并取得服务器和客户机节点号。当计算机接收到PLC返回的数据时,会产生DataArrival事件,参数BytesTotal包含接收到的数据字节数。在DataArrival事件中,可以调用GetData方法接收数据。如果接收到Close事件,则用Close方法关闭连接。另外CONTROL ENGINEERING China版权所有,可用Winsock的State属性来反映当前TCP/IP的连接状态。这里仅列举主要程序如下:
  ‘向服务器请求连接
  WskClient.Connect
  TimeDelay 100
  Do
  DoEvents
  Loop Until WskClient.state=sckConnected
  ‘建立并发送命令帧
  Private Sub SendData_Click()
  ReDim SendData (19) As Byte
  SendData (0) = H46‘命令帧报头的第1个字节
  ……
  WskClient.SendData SendData() ‘发送命令帧
  End Sub
  ‘接收PLC响应帧,并分析数据
  Private Sub WskClient_DataArrival(ByVal bytesTotal As Long)
  Dim i As Integer
  ReDim ArriveData(bytesTotal) As Byte
  wsk.GetData ArriveData, vbArray + vbByte, bytesTotal
  ‘接收数据,保存在ArriveData数组中
  For i = 0 To bytesTotal - 1
  txtArData.Text = txtArData.Text " " ArriveData (i)
  Next i
  ……‘其它数据处理
  If ArriveData(7) > 16 Then
  MsgBox“接收信息丢失“
  ElseIf SendData(19)= ArriveData (bytesTotal-5) Then
  MsgBox“节点地址错误“
  End If
  End If
  在接收信息后,当PLC收到传输过去的信息后,会将对应的命令反馈值传回,这个事件程序内的程序将它显示在文本框中,还可作进一步处理。主程序流程图如图4所示。
  若采用UDP协议,则通信的基本过程与TCP相同,只是不需要建立连接。此外,UDP应用程序可以是客户机,也可以是服务器,而不必象TCP应用程序那样必须分别建立客户机程序和服务器程序。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。因此如果网络中设备不是很多,且发送数据量不大时,可选择耗费计算机“资源”更小的UDP协议进行通信。
 5.结束语
  采用实现的上位机通信程序,已成功应用于数字小样并条机监控系统中,该法简单实用,在不追加投资的情况下,实现车间设备的网络数据实时监控的功能,达到了理想的效果。而且以VB作为监控软件的开发平台,软件的二次开发不受限制,节约成本,并可根据需要随时对程序进行升级。为实现对控制系统进行有效的信息管理与监控,基于的PLC控制系统必将有更为广泛的应用,本文的论述对解决这类问题提供了一定参考价值。

上一页 1 2 下一页

评论


相关推荐

技术专区

关闭