在做自動化工程項目時(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個窗口:
窗口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
運行結果如下圖:
海為公衆号
海為雲APP
廈門一筏科技有限公司
0592-3278716 (技術) | 4000-3問河60-362 (商務)
海為總部:廈門市集美區軟件園三期C03棟13跳相-14層 | 制造中心:都理廈門市翔安區火炬高新區(翔安)産業區垵邊南路336-2号4樓房村