新聞中心

        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 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 长兴县| 囊谦县| 上虞市| 新河县| 宽城| 房产| 庐江县| 开江县| 黄梅县| 留坝县| 天全县| 济宁市| 台中市| 德钦县| 莲花县| 香港| 从江县| 芦山县| 赞皇县| 揭西县| 迁西县| 邹城市| 休宁县| 金昌市| 河津市| 宣汉县| 博乐市| 垣曲县| 林口县| 梁山县| 凭祥市| 保山市| 类乌齐县| 疏附县| 临漳县| 隆子县| 汉阴县| 阳信县| 枞阳县| 娱乐| 北流市|