實現WINDOWS下上位機與PLC網絡之間的數據通訊
[摘 要]
可編程控制器與PLC機組成的集散控制系統,越來越廣泛的應用于生產過程自動化領域。本文就PC機與多臺PLC組成的網絡之間數據通訊的通用模式及軟、硬件實現方案加以探討。
[關鍵詞]
計算機 PLC 網絡通訊 軟硬件
一、引言
PLC以其高可靠性、適應工業過程現場、強大的聯網功能等特點,被廣泛應用。可實現順序控制、PID回路調節、高速數據采集分析、計算機上位管理PLC分散控制的集散管理系統,是實現機電一體化的重要手段和發展方向。
WINDOWS操作系統以其圖形用戶界面、多任務、自動內存管理等特點,已取代了DOS操作系統的地位。WINDOWS操作系統為用戶提供了API接口函數,但非專業開發人員難以掌握。VB作為WINDOWS下的應用軟件開發平臺以其易學好用的優點給程序員提供了強大的可視化編程工具。
在微機與PLC之間構成的集散控制系統中,多數是由一臺PC計算機與數臺PLC之間形成1-N的通信模式。該模式系統中PLC負責現場高速數據采集、實現邏輯、定時、計數、PID調節等控制任務并通過串行通訊口向微機傳送PLC工作狀態機有關數據從而實現計算機對控制系統的管理,提高了PLC的控制能力的控制范圍。使其從設備級的控制發展到生產線級乃至工廠級的控制,從而實現工廠智能化的目標。該集散控制系統中,PLC與微型計算機之間的通訊顯得尤為重要。因此如何提高保證它們之間的通訊準確程度、可靠性及效率是通訊成功與否的關鍵技術之一,下面就對該關鍵技術做一些探討。
二、上位計算機與PLC之間的鏈接方式
本文介紹的是上位機與多臺PLC組成的多鏈系統,常用的連接方式有兩種:
方式一使用連接適配器較少,也不用信號轉換,但若中間一臺PLC出故障,其后續的PLC無法與上位機通訊。
方式二雖然使用了信號轉換,但可避免前級故障對后級的影響。
三、上位計算機與PLC的鏈路通訊
以OMRON公司CPM1A型PLC和上位計算機通訊為例,通訊協議如下:
按上圖順序發送/接受命令。每次通訊發送/接受的一組數據稱為一“幀”。幀由少于131個字符的數據構成,若發送數據要進行分割幀發送,分割幀的結尾用CR碼(CHR(13))一個字符的分界符(分段字符)來代替終端。發送幀的一方具有發送權,發送方發送完一幀后,將發送權交給接受方。
發送幀的基本格式為:
@機號 識別碼 正文 FCS *CR
其中:@ 為幀開始標志
機號 網絡通訊中每一臺PLC被分配給的唯一番號
識別碼 該幀的通訊命令碼
正文 用來設定命令參數
FCS 幀校驗和
終端 命令結束符
響應的基本格式為:
@機號 識別碼 結束碼 正文 FCS *CR
其中:@機號 識別碼 正文等同發送幀意義
結束碼 返回命令結束有無錯誤等狀態
關于多于131個字符的分割幀這里不在贅述。
四、通訊過程
通訊開始先由上位計算機依次對網的PLC發出一串字符的測試幀命令。為充分利用上位機CPU的時間,可使上位機與PLC并行工作,在上位機等待PLC回答信號的同時,使CPU處理其它任務或線程。某PLC在接到上位機的一個完整幀以后,首先判斷是不是自己的代號,若不是就不予理睬,若是就發送呼叫回答信號。上位機接到回答信號后,與發送測試的數據比較,若兩者無誤,發出可以進行數據通訊的信號,轉入正常數據通訊,否則提示用戶檢查線路重新測試或通訊失敗。
五、上位計算機WINDOWS下的通訊程序設計
上位機通訊軟件是用VB開發的,因VB具有強大的圖形顯示功能,可以開發出界面良好的WINDOWS標準風格的圖形用戶界面。同時VB還提供了串行端口控件MSCOMM,程序員在利用該控件時,只需設置、監視其屬性和事件,即可完成對串行口的初始化和數據的傳輸工作。
Sub forml_load()
Mscomml.comport = 1
Mscomml.settings = "9600,n,8,1"
End sub
Sub commandl_click
Mscomml.inputlen = 0
If mscomml.portopen = false then
Mscomml.portopen = true
End if
For I = 1 to n ;N為網絡系統中的PLC個數
If i<10 then
S$ = "@"+"0"+str$(i)+"ts"+"abcd"
Else
S$ = "@"+str$(i)+ts"+"abcd" ;abcd為測試字符
Endif
… ;形成上位機測試命令數據塊sedata$;
Mscomml.output = sedata$
Timerl_on = false
Timetl.enable = true
Do until (mscomml.inbuffercountáñ0)
or (timerl_on = true)
Domy = doevents()
Loop
Timerl.enable = false
…
Redata$ = mscomml.input
If redata$ = sedata$
… ;轉入正常通訊數據處理
Else
Labell.caption = str$(i)+“測試通訊失敗,檢查線路后再測試”
Endif
Endsub
六、PLC方的通訊設置 通道地址 位 設定 功能說明 DM6650 00 - 07 01 通訊標準定為 08 - 11 任意 12 - 15 0 上位鏈接模式 DM6651 00 - 07 03 波特率為9600BPS 08 - 15 08 8位數據1位停止 DM6652 00 - 15 0000 延時設定 DM6653 00 - 07 00 - 31 機號設定為00 - 31 08 -15 任意
計算機與PLC通訊的目的是實現計算機對PLC運行狀態、數據區的監控、PLC工的管理并可用計算機編程。一般來說,在通訊過程中PLC是被動的,每一次通訊都由計算機發起與終止,但也可由PLC發起。
通訊前需用外部輸入設備在系統設定區域的DM6650-DM6653中進行通訊條件設定。
七、結束語
本文旨在探討用可視化編程語言實現PC機與PLC網絡之間的數據通訊的技術及軟硬件實現方案,合理充分利用系統的資源及特點,提高通訊效率。對同類系統的設計與實現有一定的啟發和幫助。
文章版權歸西部工控xbgk所有,未經許可不得轉載。