廈門一筏科技有限公司

請上傳logo 請上傳logo

國(guó)産PLC—Haiwell(海為)PLC與匠現VB通訊源程序講解

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

在做自動化工程項目時(shí)常常需要用上位公人機對(duì)PLC進(jìn)行監控,如果是大的工程項目可以使用組态軟件來水音完成(chéng),但對(duì)中小志物項目為了節約成(chéng)本,可以采用自己寫上位機相白程序來完成(chéng)對(duì)PLC的雨月監控。


海為提供了一個海為PLC的通訊控件,通過(guò)這(飛費zhè)個控件實現上位機與海為PLC之間的通訊十分方便,它封裝了Mod腦東bus通訊協議和HaiwellBus協議,以點的形式實能內現對(duì)海為PLC的數據訪問,對(du裡店ì)每個點可以定義它的名稱/數據類型/小問藍數長(cháng)度/點注釋等,不必去了解M近雜odbus通訊協議和HaiwellBus協議的具體内容,隻要有上位機編程經(上錯jīng)驗就(jiù)可以完成多相(chéng)。

海為PLC的通訊控件和例子源程序可以到海為網站(http://暗但www.haiwell.com/download.as工女p)的“下載中心”下載。

 

下面(miàn)以VB為例介紹該控件的使用,河月新建一個VB工程,添加2個窗口:

lQLPJxaJeo9MmU3NATLNAjCwLOMkAFDexwEC4k-9_sAnAA_560_306.png


lQLPJxaJeo9MmT_M2M0BdLAEmitl4IqTugLiT74KgNIA_372_216.png


窗口1的程序如下:

Option Explicit

'啟動跑馬燈按鈕

Private Sub Command1_C車年lick()

    '啟動跑馬燈,M0置算風1,點序号30

    HWPLCComm1.HWPLCs(1).S大樹etPointValue 30, 1

End Sub

'停止跑馬燈按鈕

Private Sub Command2_Click日吧()

    '停止跑馬燈,短店M1置1,點序号31

    HWPLCComm1.HWPLCs(1).Set火多PointValue 31, 1

End Sub

'啟動采樣(yàng)按鈕

Private Sub Command3_Click(秒湖)

' HWPLCComm1是海為PLC通訊控件名稱,Time明員r1是畫面(miàn)刷新定時(shí)器

    HWPLCComm1.Run N歌姐ot HWPLCComm1.Ru讀自nFlag

    Timer1.Enabled =票我 HWPLCComm1.RunFlag

    If HWPLCComm1.Run都水Flag Then

        Command3.Ca船明ption = "停止采樣(yàng)"畫吧;

     讀兒   Shape2.FillColor = vbGreen ‘年是采樣(yàng)指示燈綠色

    El你金se

       哥校; Command3.Caption = "啟動采樣(yàng)&生暗quot;

        視問Shape2.FillColor = vbWhite ‘采做分樣(yàng)指示燈紅色

    End I熱海f

End Sub

'窗口1裝載

Private Sub Form_Load()

    Dim i As Long

    '添加1台PLC,PLC地址為1,名冷費稱為“1号PLC”

    HWPLCComm1.HWPLCs.AddPLC 林火1, "1号PLC"

    '在“1号P工照LC”下增加采樣(yàng)點

    For i = 0 慢但To 15

        H民黑WPLCComm1.HWPLCs(1)舊們.AddPoint "y" & 讀子i '增加采樣(yàng)點Y0-Y15

Next i

'在“1号PLC”下增加其他離散的采樣(yàng)點

    HWPLCComm1.話務HWPLCs(1).AddPoint "sv0"現男;, , "當前掃描時(shí)間 單位0.1ms"

    HWPLCComm1.HWPLC業議s(1).AddPoint &跳都quot;sv1", , "最小掃描時(shí)間 單位店服0.1ms"

    HWPLCComm1.HWPLCs(1紅街).AddPoint "sv2",河歌 , "最大掃描時(shí)間 單位0.1ms"笑下;

    HWPLCComm廠筆1.HWPLCs(1).AddPoint下聽 "sv12", "Year&quo吧計t;, "年"

    HWPLCComm懂的1.HWPLCs(1).AddPoint "sv鐵弟13", "Month&quo拿頻t;, "月"

    HWPLCComm1.HWPLCs(街房1).AddPoint "sv14", "D鐵制ay", "日"

    HWPLCComm1.會錯HWPLCs(1).AddPoint "sv美暗15", "Ho看匠ur", "時(s答哥hí)"

    HWP車信LCComm1.HWPLCs(1).Add藍的Point "sv16", "Minute章習", "分"

    HWPLCComm西海1.HWPLCs(1).AddPoint "sv17"近間, "Second&quo長船t;, "秒"

    HWPLCComm1.HWPLCs樹鐵(1).AddPoint "sv18", &qu中費ot;Week", "星期"

    HWPLCComm1.HWPLCs(1兵開).AddPoint "sm3", , &q們話uot;10ms時(shí)鐘脈沖"

    HWPLCC光呢omm1.HWPLCs(1).AddPoint "她人;sm4", , "媽小;100ms時(shí)鐘脈沖"

    HWPLCComm1.HWP聽工LCs(1).AddPoint &那唱quot;sm5", , "1s時(有報shí)鐘脈沖"

    HWPLCComm海姐1.HWPLCs(1).AddPoint &quo下歌t;m0", &qu有有ot;Start", "跑馬燈啟動&q雪短uot;

    HWPLCCom家地m1.HWPLCs(1).AddPoi輛國nt "m1", "Sto爸醫p", "跑馬燈農線停止"

    H關我WPLCComm1.HWPLC員藍s(1).AddPoint "v0"員又

    HWPLCComm1.H友站WPLCs(1).AddPoint "們商;v2"

    HWPLCComm1.來見HWPLCs(1).AddPoint "v100&qu光農ot;, , "實數例子", 可還[REAL ] '實數類型為5

    HWPLCComm女看1.HWPLCs(1).AddPoin可校t "ccv50"內還, , "32位計數器"東月;

    HWPLCComm1.HWPL討錢Cs(1).AddPoint "小購;ccv100", , 線我"16位計數器"但會

    '將(jiāng)點歌那加到Listview中顯示, Y0-Y15 16個點不加入,用指示燈來顯示狀态裡事

    Dim Newitem As L微銀istItem

    For能但 i = 17 To HWPLCComm1.HWPLCs(1).Poin答的tCount

        Set Ne一西witem = ListView1.ListI雨又tems.Add(, , i)

      &n舞線bsp; Newitem.SubItems(1) = HWPLCCom舊光m1.HWPLCs(1).iPoi睡湖nts(i).PointAddress

    &n人黃bsp;   Newitem.SubItem新刀s(2) = HWPLCComm1.HW放上PLCs(1).iPoints(i).Poi現草ntName

      &n店舞bsp; Newitem.SubItems(4腦暗) = HWPLCComm1.HWPLCs(1).iPoint書頻s(i).PointNote

    Ne姐數xt i

'將(jiāng)PLC地址和名稱用标簽顯示

    Label3(0) = HWPL事煙CComm1.HWPLCs(1).PLCAddress

    Label3(1) = HWPLCCo森工mm1.HWPLCs(1).PLCName

'將(jiāng)16隻指示燈商冷的标簽以點名稱顯示(Y0~Y15)

    F慢化or i = 1 To 16

     生從   Label1(i - 1) = HWPLCComm1.H報森WPLCs(1).iPoints(i).Point科水Name

    Next靜湖 i

End Sub

'雙擊列表中的點打開(kāi)窗口2,對(duì)該點的值進(j還錢ìn)行修改

Private Sub Lis煙女tView1_DblClick()

    Dim i As Long

    If Not ListVie市這w1.SelectedItem Is Nothing Then

        i = ListV還見iew1.SelectedItem.Index + 16

        Form2刀低.vPointIndex = i

      &nbs玩飛p; Form2.Caption = &船媽quot;寫入值 " & HWP話舞LCComm1.HWPLCs(1).工輛iPoints(i).PointName

        Form2南離.Label1.Caption = "計就;寫入值 " & HWPLCComm1.HWPL雪坐Cs(1).iPoints(i).Point科術Name & ":"

        Form裡身2.Text1 = HWPLCComm1.HW村放PLCs(1).iPoints(i).PointValue

        票南Form2.Show 1

    End If

End Sub

' Timer1是畫面(miàn)刷新定時(shí)子明器

Private Sub Timer1_Timer(離拿)

    '玩員刷新值

    Di玩音m i As Long

    '刷新Y0-Y草小15值

    For i = 1 To兒東 16

        If HWPLCC下不omm1.HWPLCs(1).iPoints(i).PointValu坐鐵e = 1 Then

          &nbs身了p; Shape1(i - 1很街).FillColor = vbRed 道制9;值=1,為真

    &nb媽她sp;   Else

          &n低路bsp; Shape1(i - 1).FillColor =錢志 vbWhite '值=0,為假

      &nbs站姐p; End If

    Next 新個i

    '刷新其他點值

    For i = 17 To HWPL身地CComm1.HWPLCs(1).Poin議遠tCount

      森年  ListView1長訊.ListItems(i - 1事聽6).SubItems(3) = HWPLCComm1.制作HWPLCs(1).iPoints(i).Po人謝intValue

    Next i

End Sub

窗口2的程序如下:

Option Explicit

Public vPointIndex As Long '公共變量,存西麗儲被(bèi)雙擊點的序号

'确定按鈕

Private Sub Command1_Click()

    If Text1.Te厭化xt = "" Then Exit Sub中訊

'按确定,則寫入點的值

    Form1.HWPLC體習Comm1.HWPLCs(1).SetPointValue vPointInd北年ex, Text1.Text

    U體木nload Me

End Sub

'取消按鈕

Private Sub Command2_Click()

    Unload明風 Me

End Sub

Private Sub Text1_GotFocus()

    Text1.SelStart = 0

    Text1.SelLengt鐘對h = Len(Text1)

End Sub

Private Sub Text1_KeyPre和到ss(KeyAscii As Integer)

    If KeyAscii = 13門低 Then

        Command1_C用草lick

    End If

End Sub


運行結果如下圖:


lQLPJxaJeo9Ml9DNAUrNAjCwcnyozf1ciXgC4k-92ICEAA_560_330.png

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

海為公衆号

海為雲APP