4.2 VB與PLC通信的實現

  以下舉例說明現場設備與PLC通信的實現。

  1)控制要求:控制PLC的起動、停止,并顯示運行狀態(綠色為運行,紅色為停止)">

      技術頻道

      基于VB的臺達PLC與監控計算機的串行通信實現(二)

      2)功能碼







        4.2 VB與PLC通信的實現

        以下舉例說明現場設備與PLC通信的實現。

        1)控制要求:控制PLC的起動、停止,并顯示運行狀態(綠色為運行,紅色為停止);能夠用交替型按鈕控制Y0,Y1,并用指示燈顯示Y0,Y1狀態(綠色為運行,紅色為停止);能夠對D256,D512兩個寄存器進行數值寫入的操作。

        2)實現思路:PLC起動停止的標志位為M1072,查DVP協議,知道地址為H0C30,按功能碼01操作; 同樣Y0,Y1的地址分別為H0500,H0501。寫入FF00為ON,0000為OFF,按功能碼05操作;D256,D512地址分別為H1100,H1200,按功能碼06操作即可。

        3)VB接口的設計如圖10所示。

      圖10
      圖10 監控程序界面




        用按鈕控制PLC的起動停止,Y0、Y1的ON/OFF及D256、D512寫完數據的發送;用Shape組件做指示燈,表示PLC的運行狀態和Y的狀態;用timer組件不停的讀取M1072的狀態,以判斷PLC的運行情況;用MScomm控件實現PC與PLC的通信。
      4)編程實現的代碼構成

        (1) LRC算法校驗的實現

         Public Function LRC(str As String) As String
            c = 0
            l = Len(str)
            For c = c + 1 To l
            c_data = Mid$(str, c, 2)
            d_lrc = d_lrc + Val("&H" + c_data)
            c = c + 1
            Next c
            If d_lrc > &HFF Then
            d_lrc = d_lrc Mod &H100
            End If
            h_lrc = Hex(&HFF - d_lrc + 1)
            If Len(h_lrc) > 2 Then
             h_lrc = Mid(h_lrc, Len(h_lrc) - 1, 2)
            End If
            LRC = h_lrc
            End Function


        (2) 運行的開始就判斷PLC的狀態并設置標志位

            Rem 初次運行打開串口,并顯示PLC運行狀態
            Private Sub Form_Load()
            Dim s1 As String
            Dim s2 As String
            Dim s22 As String
            Dim s3 As String
            Dim s4 As String
            MSComm1.PortOpen = True
            s2 = "01010C300001"
            s22 = LRC(s2)
            s1 = ":" + s2 + s22 + Chr$(13) + Chr$(10)
            MSComm1.Output = s1
            s3 = MSComm1.Input
            s4 = Mid$(s, 6, 8)
            If s4 = "0C30FF00" Then
              plc = 1 Rem PLC為運行標志
            Else
              plc = 0 Rem PLC為停止標志
            End If
            End Sub


        (3) 下面一段為用指示燈表示PLC的運行狀態


            Private Sub Timer5_Timer()
            Dim s1 As String
            Dim s2 As String
            Dim s22
            Dim s3 As String
            Dim s4 As String
            s2 = "01010C300001"
            s22 = LRC(s2)
            s1 = ":" + s2 + s22 + Chr$(13) + Chr$(10)
            MSComm1.Output = s1
            s3 = MSComm1.Input
            s4 = Mid$(s3, 8, 2)
            If s4 = "31" Then
              plc = 1 Rem PLC為運行標志
            Else: If s4 = "30" Then plc = 0 Rem PLC為停止標志
            End If
            If plc = 1 Then
              Label2.Caption = "PLC正在運行......"
              Shape1.FillColor = RGB(0, 255, 0) Rem green
            Else
            Label2.Caption = "PLC已經停止"
              Shape1.FillColor = RGB(255, 0, 0) Rem red
            End If

            End Sub


      (4) PLC的起動與停止

            Rem 起動PLC
            Private Sub start_Click()
            Dim strout As String
            Timer5.Enabled = False
            str = "00050C30FF00"

            Rem M1072 為PLC起動停止標志位。查地址表,M1072為OC30.FF00為置ON,0000為置OFF。
            Rem 以上都是固定格式,要牢記。

            LRCC = LRC(str) Rem 計算 str的lrc校驗碼。
            strout = ":" + str + LRCC + Chr$(13) + Chr$(10) Rem 欲傳送之數據。13為D,10為A
            MSComm1.Output = strout
            Timer5.Enabled = True
            End Sub
            Rem 停止PLC
            Private Sub stop_Click()
            Dim strout As String
            Timer5.Enabled = False
            str = "00050C300000"
            LRCC = LRC(str)
            strout = ":" + str + LRCC + Chr$(13) + Chr$(10)
            MSComm1.Output = strout
            Timer5.Enabled = True
            End Sub
        Y0、Y1的ON/OFF與PLC起動/停止的控制方式相同,指示燈的表示方式也相同。D256,D512數據寫入的操作類似,限于篇幅其它代碼就不再列出了。
        5 結束語
        VB語言易于編程使用,為與串行設備的通信提供了很大的方便。臺達PLC采用標準的目前廣為流行的MODBUS協議,為實現PLC與監控計算機的通信提供了簡化的平臺。由于臺達所有的機電產品都支持MODBUS協議,所以,掌握了VB與PLC通信過程,也就等于掌握了PC與臺達所有機電產品的通信。

      文章版權歸西部工控xbgk所有,未經許可不得轉載。

      主站蜘蛛池模板: 韩国一区二区三区| 亚洲中文字幕丝袜制服一区| 亚洲一区二区无码偷拍| 亚洲国产一区二区三区青草影视| A国产一区二区免费入口| 亚洲一区日韩高清中文字幕亚洲| 午夜DV内射一区二区| 亚洲一区二区三区亚瑟| 国产手机精品一区二区| 国产婷婷色一区二区三区深爱网| 亚洲.国产.欧美一区二区三区 | 国产乱码精品一区二区三区麻豆 | 国产丝袜无码一区二区三区视频| 亚洲一区精品无码| 国产韩国精品一区二区三区久久 | 日韩在线视频一区| 无码人妻一区二区三区免费 | 久久久久人妻一区精品果冻| 精品久久一区二区三区| 亚洲字幕AV一区二区三区四区| 国产午夜精品一区二区三区不卡| 变态调教一区二区三区| 国产AV午夜精品一区二区入口 | 国产免费私拍一区二区三区| 国产微拍精品一区二区| 亚洲综合一区二区三区四区五区| 一区二区传媒有限公司| 亚洲综合在线一区二区三区| 一区二区和激情视频| 怡红院一区二区三区| 日本一区二区三区久久| 亚洲一区中文字幕久久| 3d动漫精品一区视频在线观看| 日韩精品免费一区二区三区| 亚无码乱人伦一区二区| 精品久久综合一区二区| 视频在线观看一区二区三区| 国产高清一区二区三区| 在线|一区二区三区| 一区二区三区电影网| 亚洲一区精品无码|