廈門海為科技有限公司

    請上傳logo 請上傳logo

    國產PLC—Haiwell(海為)PLC與VB通訊源程序講解

    2008-05-07 11:09:14 haiwell 958

    在做自動化工程項目時常常需要用上位機對PLC進行監控,如果是大的工程項目可以使用組態軟件來完成,但對中小項目為了節約成本,可以采用自己寫上位機程序來完成對PLC的監控。


    海為提供了一個海為PLC的通訊控件,通過這個控件實現上位機與海為PLC之間的通訊十分方便,它封裝了Modbus通訊協議和HaiwellBus協議,以點的形式實現對海為PLC的數據訪問,對每個點可以定義它的名稱/數據類型/小數長度/點注釋等,不必去了解Modbus通訊協議和HaiwellBus協議的具體內容,只要有上位機編程經驗就可以完成。

    海為PLC的通訊控件和例子源程序可以到海為網站(http://www.www.wjxsbs.com/download.asp)的“下載中心”下載。

     

    下面以VB為例介紹該控件的使用,新建一個VB工程,添加2個窗口:

    lQLPJxaJeo9MmU3NATLNAjCwLOMkAFDexwEC4k-9_sAnAA_560_306.png


    lQLPJxaJeo9MmT_M2M0BdLAEmitl4IqTugLiT74KgNIA_372_216.png


    窗口1的程序如下:

    Option Explicit

    '啟動跑馬燈按鈕

    Private Sub Command1_Click()

        '啟動跑馬燈,M0置1,點序號30

        HWPLCComm1.HWPLCs(1).SetPointValue 30, 1

    End Sub

    '停止跑馬燈按鈕

    Private Sub Command2_Click()

        '停止跑馬燈,M1置1,點序號31

        HWPLCComm1.HWPLCs(1).SetPointValue 31, 1

    End Sub

    '啟動采樣按鈕

    Private Sub Command3_Click()

    ' HWPLCComm1是海為PLC通訊控件名稱,Timer1是畫面刷新定時器

        HWPLCComm1.Run Not HWPLCComm1.RunFlag

        Timer1.Enabled = HWPLCComm1.RunFlag

        If HWPLCComm1.RunFlag Then

            Command3.Caption = "停止采樣"

            Shape2.FillColor = vbGreen ‘采樣指示燈綠色

        Else

            Command3.Caption = "啟動采樣"

            Shape2.FillColor = vbWhite ‘采樣指示燈紅色

        End If

    End Sub

    '窗口1裝載

    Private Sub Form_Load()

        Dim i As Long

        '添加1臺PLC,PLC地址為1,名稱為“1號PLC”

        HWPLCComm1.HWPLCs.AddPLC 1, "1號PLC"

        '在“1號PLC”下增加采樣點

        For i = 0 To 15

            HWPLCComm1.HWPLCs(1).AddPoint "y" & i '增加采樣點Y0-Y15

    Next i

    '在“1號PLC”下增加其他離散的采樣點

        HWPLCComm1.HWPLCs(1).AddPoint "sv0", , "當前掃描時間 單位0.1ms"

        HWPLCComm1.HWPLCs(1).AddPoint "sv1", , "最小掃描時間 單位0.1ms"

        HWPLCComm1.HWPLCs(1).AddPoint "sv2", , "最大掃描時間 單位0.1ms"

        HWPLCComm1.HWPLCs(1).AddPoint "sv12", "Year", "年"

        HWPLCComm1.HWPLCs(1).AddPoint "sv13", "Month", "月"

        HWPLCComm1.HWPLCs(1).AddPoint "sv14", "Day", "日"

        HWPLCComm1.HWPLCs(1).AddPoint "sv15", "Hour", "時"

        HWPLCComm1.HWPLCs(1).AddPoint "sv16", "Minute", "分"

        HWPLCComm1.HWPLCs(1).AddPoint "sv17", "Second", "秒"

        HWPLCComm1.HWPLCs(1).AddPoint "sv18", "Week", "星期"

        HWPLCComm1.HWPLCs(1).AddPoint "sm3", , "10ms時鐘脈沖"

        HWPLCComm1.HWPLCs(1).AddPoint "sm4", , "100ms時鐘脈沖"

        HWPLCComm1.HWPLCs(1).AddPoint "sm5", , "1s時鐘脈沖"

        HWPLCComm1.HWPLCs(1).AddPoint "m0", "Start", "跑馬燈啟動"

        HWPLCComm1.HWPLCs(1).AddPoint "m1", "Stop", "跑馬燈停止"

        HWPLCComm1.HWPLCs(1).AddPoint "v0"

        HWPLCComm1.HWPLCs(1).AddPoint "v2"

        HWPLCComm1.HWPLCs(1).AddPoint "v100", , "實數例子", [REAL ] '實數類型為5

        HWPLCComm1.HWPLCs(1).AddPoint "ccv50", , "32位計數器"

        HWPLCComm1.HWPLCs(1).AddPoint "ccv100", , "16位計數器"

        '將點加到Listview中顯示, Y0-Y15 16個點不加入,用指示燈來顯示狀態

        Dim Newitem As ListItem

        For i = 17 To HWPLCComm1.HWPLCs(1).PointCount

            Set Newitem = ListView1.ListItems.Add(, , i)

            Newitem.SubItems(1) = HWPLCComm1.HWPLCs(1).iPoints(i).PointAddress

            Newitem.SubItems(2) = HWPLCComm1.HWPLCs(1).iPoints(i).PointName

            Newitem.SubItems(4) = HWPLCComm1.HWPLCs(1).iPoints(i).PointNote

        Next i

    '將PLC地址和名稱用標簽顯示

        Label3(0) = HWPLCComm1.HWPLCs(1).PLCAddress

        Label3(1) = HWPLCComm1.HWPLCs(1).PLCName

    '將16只指示燈的標簽以點名稱顯示(Y0~Y15)

        For i = 1 To 16

            Label1(i - 1) = HWPLCComm1.HWPLCs(1).iPoints(i).PointName

        Next i

    End Sub

    '雙擊列表中的點打開窗口2,對該點的值進行修改

    Private Sub ListView1_DblClick()

        Dim i As Long

        If Not ListView1.SelectedItem Is Nothing Then

            i = ListView1.SelectedItem.Index + 16

            Form2.vPointIndex = i

            Form2.Caption = "寫入值 " & HWPLCComm1.HWPLCs(1).iPoints(i).PointName

            Form2.Label1.Caption = "寫入值 " & HWPLCComm1.HWPLCs(1).iPoints(i).PointName & ":"

            Form2.Text1 = HWPLCComm1.HWPLCs(1).iPoints(i).PointValue

            Form2.Show 1

        End If

    End Sub

    ' Timer1是畫面刷新定時器

    Private Sub Timer1_Timer()

        '刷新值

        Dim i As Long

        '刷新Y0-Y15值

        For i = 1 To 16

            If HWPLCComm1.HWPLCs(1).iPoints(i).PointValue = 1 Then

                Shape1(i - 1).FillColor = vbRed '值=1,為真

            Else

                Shape1(i - 1).FillColor = vbWhite '值=0,為假

            End If

        Next i

        '刷新其他點值

        For i = 17 To HWPLCComm1.HWPLCs(1).PointCount

            ListView1.ListItems(i - 16).SubItems(3) = HWPLCComm1.HWPLCs(1).iPoints(i).PointValue

        Next i

    End Sub

    窗口2的程序如下:

    Option Explicit

    Public vPointIndex As Long '公共變量,存儲被雙擊點的序號

    '確定按鈕

    Private Sub Command1_Click()

        If Text1.Text = "" Then Exit Sub

    '按確定,則寫入點的值

        Form1.HWPLCComm1.HWPLCs(1).SetPointValue vPointIndex, Text1.Text

        Unload Me

    End Sub

    '取消按鈕

    Private Sub Command2_Click()

        Unload Me

    End Sub

    Private Sub Text1_GotFocus()

        Text1.SelStart = 0

        Text1.SelLength = Len(Text1)

    End Sub

    Private Sub Text1_KeyPress(KeyAscii As Integer)

        If KeyAscii = 13 Then

            Command1_Click

        End If

    End Sub


    運行結果如下圖:


    lQLPJxaJeo9Ml9DNAUrNAjCwcnyozf1ciXgC4k-92ICEAA_560_330.png

    微信技術客服:08:30-21:00
    0592-3278716
    關注我們

    海為公眾號

    海為云APP

    主站蜘蛛池模板: 免费人妻精品一区二区三区| 不卡高清av手机在线观看| 久久精品无码aV| AAAAA级少妇高潮大片免费看| 色吊丝在线永久观看最新版本| 精品无码国产自产拍在线观看蜜| 最好看的最新中文字幕2018免费视频| 在线观看欧美国产| 国产主播福利在线| 亚洲2022国产成人精品无码区| 91高清免费国产自产拍2021| 精品久久久久久国产91| 日本熟妇色熟妇在线视频播放| 国产精品v欧美精品∨日韩| 亚洲欧美综合人成野草| 9久久这里只有精品国产| 沉伦柳淑云漫画3d| 女人十八黄毛片| 八木梓纱老师三天两夜| 中文字幕丝袜制服| 色综合67194| 日本亚洲色大成网站www久久 | 九九视频高清视频免费观看| 97超级碰碰碰碰久久久久| 用舌头去添高潮无码视频| 好男人影视社区www在线观看| 午夜福利视频合集1000| 中文字幕亚洲一区二区三区 | 一级毛片无遮挡免费全部| 色婷婷.com| 少妇人妻偷人精品视频| 又紧又大又爽精品一区二区| 中文字幕第2页| 老子影院午夜伦手机不卡6080| 日本强好片久久久久久AAA| 国产50部艳色禁片无码| 中文字幕无线码免费人妻| 蜜臀亚洲AV无码精品国产午夜.| 日本漫画全彩口工漫画绅士| 和前辈夫妇交换性3中文字幕 | 中文乱码字幕午夜无线观看|