首頁 新聞 工控搜 論壇 廠商論壇 產品 方案 廠商 人才 文摘 下載 展覽
首 頁 新聞動態 產品中心 方案與應用 技術文摘 資料下載 關於我們 台達網站 在線視頻
基於VB的台達PLC與監控計算機的串行通信實現

中達電通股份有限公司
收藏本文     查看收藏
Implementation of Serial Communication Between Monitoring Computer and Delta PLC Based on Visual Basic
中達電通上海機電PLC產品處 王乃全
Wang Naiquan
摘 要:PLCzhijieyuxianchangkongzhicengdejianceyiqiyibiaoshebeilianjie,shidicengkongzhiwangluodezuchengbufen,shigongchangzidonghuaxitongdejishi,yincishixianyujiankongcengjisuanjidetongxinduixitongdeyouhuayunxingyouzhongyaoyiyi。wenzhangjiyuVB討論台達DVP PLC與監控計算機的通信問題。
關鍵詞:VB 通信協議 可編程控製器
Abstract: The PLC is a composing part of Infranet, it links to the measuring instrument and device in field control layer directly, and is the footstone of factory automation system. Therefore it is very important to realize the communication between PLC and monitoring layer computer for optimization of syste running. The paper discussed the related communication problems between Delta DVP PLC and monitoring computer based on Visual Basic.
Key Words: Visual Basic Communication protocal Programable logic controller
[中圖分類號] TP273 [文獻標識碼] B 文章編號
1 引 言
現場設備層中的設備種類繁多,有傳感器、啟動器、驅動器、I/O部件、變送器、閥門等等,當然也包括現場檢測儀器儀表設備。PLC是現場設備控製層不可缺少的部分,已經非常普及,如何簡便地實現與PLC的交互已經成為眾多廠商新的競爭戰場。由此產生了人機界麵等軟件產品,這些產品的出現簡化了對PLC的控製、操作,使PLC的應用更加方便;但也有其共同的缺點,價格普遍偏高和可二開發性較差。VB作為“原始”的編程語言在這兩方麵無疑有著明顯優勢的,本文結合一個簡單的案例,用比較基礎的概念討論如何通過VB實現PC與PLCzhijiandetongxinwenti,zheduigangshebukongzhilingyudegongchengshihuoxushiyoubangzhude。zaixianchangshebeicengzhonggeshigeyangdeshebeidoukeyihejisuanjilianji,erzuijiandandezidonghualianjifangshijiushishiyongchuanxingtongxin,VB提供了串行通信控件可以讓開發者開發出串行通信的係統程序,以下是對相關問題的粗略討論。
2 串行通信基本概念
數據通訊中有兩種類型的通信形式,即並行通信(Parallel Communication)和串行通信(Serial Communication)。例如,如果有8位數據需要傳送,那麼並行通信一次就可以完成8位的傳輸量;而串行一次隻能傳送1位。圖1表示了兩種不同的通信模式,常用的串行通信也有兩種,分別為RS-232和RS-485。

按此在新窗口瀏覽圖片
2.1 RS-232 串行通信
RS-232的信號準位是參考地線而言的,如圖2所示。相對於參考接地端1傳輸端傳送數據;接收端則相對於參考接地端2複現出傳送端的傳送的數據。

按此在新窗口瀏覽圖片
由圖2可知,由於兩個接地端準位不一定一樣,而且很容易受到幹擾,所以信號在RS-232線路傳輸時,很容易產生錯誤。
2.2 RS-485串行通信
RS-485的信號傳輸方式如圖3所示。

按此在新窗口瀏覽圖片
RS-485的信號被傳送出去時會分成正負兩條線路,當到達接收端後,在將信號相減還原成原來的信號;如果將原始的信號表示成(DT),而被分成的信號分別標示成(D+)及(D-),則DT=(D+)-(D-)。同理,接收端在接收到信號後,也依據上式還原成原來的樣子。如果線路受到幹擾,兩條線路的信號分別為(D+)+Noise與(D-)+Noise。接收端還原信號為(DT)= [(D+)+Noise]-[(D-)+Noise],與先前結果一樣,所以RS-485可以有效的防止噪聲的幹擾。
3 VB的基本概念
VB(Visual Basic)是微軟的窗口軟件,提供了很多接口成員,對象、屬性、事件、方法就是4個重要的接口,VB提供了許多常用的控件。
3.1卷標控件
卷標控件如圖4(a)所示,該控件專用於顯示文字、數字用,顯示如圖4(b)所示

按此在新窗口瀏覽圖片
3.2 按鈕控件
按鈕控件如圖5(a)所示,該控件使用率很高,提供一個供係統用戶操作用的按鈕,如圖5(b)所示。

按此在新窗口瀏覽圖片
3.3 定時器控件
定時器控件如圖6所示,該控件的最大作用在固定的時間內可執行所設置的程序代碼一次。

按此在新窗口瀏覽圖片
VB提供了大量的控件,在此不再多述。
4 基於MScomm控件的串行通信
要完成VB與PLC等設備的串行通信要用到MScomm控件, 在此有必要對該控件作較詳細的說明。Mscomm是一個非標準控件,需要要手動添加許多項目,其步驟如下。
1) 選擇菜單的【工程】
2) 選擇【部件】
3) 在彈出的對話框中做如圖7的選擇。

按此在新窗口瀏覽圖片
4)如圖8所示,在部件選項卡就會出現MScomm控件。

按此在新窗口瀏覽圖片
5)基本屬性

按此在新窗口瀏覽圖片
4.1 MODBUS ASCII
Modbus 分為ASCII和RTU兩種,ASCII采用的格式和校驗相對簡單,本文采用ASCII格式,並僅對使用的功能碼進行說明,更多的信息,請參看協議的詳細說明。
1)通信格式

按此在新窗口瀏覽圖片
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所示。

按此在新窗口瀏覽圖片
用按鈕控製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的狀態並設置標誌位
'初次運行打開串口,並顯示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 'PLC為運行標誌
Else
plc = 0 '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 'PLC為運行標誌
Else: If s4 = "30" Then plc = 0 'PLC為停止標誌
End If
If plc = 1 Then
Label2.Caption = "PLC正在運行......"
Shape1.FillColor = RGB(0, 255, 0) 'green
Else
Label2.Caption = "PLC已經停止"
Shape1.FillColor = RGB(255, 0, 0) 'red
End If

End Sub
(4) PLC的起動與停止
'起動PLC
Private Sub start_Click()
Dim strout As String
Timer5.Enabled = False
str = "00050C30FF00" 'M1072 為PLC起動停止標誌位。查地址表,M1072為OC30.FF00為置
ON,0000為置OFF。
'以上都是固定格式,要牢記。
LRCC = LRC(str) '計算 str的lrc校驗碼。
strout = ":" + str + LRCC + Chr$(13) + Chr$(10) '欲傳送之數據。13為D,10為A
MSComm1.Output = strout
Timer5.Enabled = True
End Sub
'停止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與台達所有機電產品的通信。
參考文獻[略]
作者簡介
王乃全(1978-),男,自動化設備工程師,主要從事PLC控製係統的開發與技術支持。

 
 
台達相關文摘:
台達電梯一體機IED電梯一體化控製係統設計
台達機電產品在晶體切斷機上的應用
台達AH10SCM通訊擴展模塊的Modbus高級功能詳解
台達第三代無功補償裝置SVG的推廣價值
台達CP2000高效節能穩戰供熱前線
靜止無功發生器SVG技術說明
基於台達PLC和HMI的換熱站係統設計
台達PLC強化船舶安全性
中達電通新型模塊化箱體及安裝的LCD液晶顯示單元
璀璨靚麗的中達電通LED電子顯示屏係統
噴墨印花--建陶印刷技術的一大革新
台達A2伺服常用術語大解析
更多台達文摘...
通過中華工控網在線留言中達電通股份有限公司:
用戶名: 密碼: 免費注冊為中華工控網會員
請留下您的有效聯係方式,以方便我們及時與您聯絡
 
中華工控網 GKong.com製作發布 廣告聯係