基于RS485總線的分布式PLC監(jiān)控系統(tǒng)通信設(shè)計
隨著計算機與通信技術(shù)的發(fā)展,PLC各種模塊的多樣化和信息化,由PLC作為基本控制單元的分布式控制系統(tǒng)在自動化領(lǐng)域中廣泛應(yīng)用,迫切需要一種總線能適合遠(yuǎn)距離的數(shù)字通信。在RS422標(biāo)準(zhǔn)的基礎(chǔ)上,EIA研究出了一種支持多節(jié)點、遠(yuǎn)距離和接收高靈敏度的RS485總線標(biāo)準(zhǔn)。EIA曾經(jīng)在它所有標(biāo)準(zhǔn)前面加上RS前綴(英文RcommendeStandard的縮寫),因此許多工程師一直沿用這種名稱,因為RS485的遠(yuǎn)距離(1200m)、多節(jié)點(32)以及傳輸線成本低的特性,使得EIA的RS485成為工業(yè)應(yīng)用數(shù)據(jù)傳輸?shù)氖走x標(biāo)準(zhǔn)。
我廠18條電動執(zhí)行機構(gòu)調(diào)試線,分布在三個廠房的若干區(qū)域,每個調(diào)試線由一臺PLC與HMI控制,為了將調(diào)試數(shù)據(jù)歸口管理,并判斷調(diào)試結(jié)果的正確性,對調(diào)試線進行監(jiān)控,18臺PLC通過RS485總線與計算機連接起來,構(gòu)成一個分布式監(jiān)控系統(tǒng),通過數(shù)據(jù)通信使計算機和PLC實現(xiàn)數(shù)據(jù)共享,完成對調(diào)試過程的集中管理和分散控制。計算機與PLC各個子站的的通信是系統(tǒng)的重要環(huán)節(jié),本文詳細(xì)論述了基于RS485總線,利用VB開發(fā)了上位機通信系統(tǒng),編寫了PLC自由口的通訊協(xié)議的設(shè)計與實際應(yīng)用方案。可以借鑒為各種上位機、PLC、HMI等通信系統(tǒng)設(shè)計的應(yīng)用范例,同時可作為檢測技術(shù)、自動化設(shè)計等課程的工程項目訓(xùn)練與教學(xué)的平臺。
1RS485網(wǎng)絡(luò)構(gòu)成RS485標(biāo)準(zhǔn)采用有平衡式發(fā)送,差分式接收的數(shù)據(jù)收發(fā)器來驅(qū)動總線,與RS422一樣,可以將多個(最多為32個)RS485接口互連,而其連接更簡單,只需將各個接口的“+”端和“+”端相連、“-”端和“-”端相連,連接的兩根線就是RS485的“物理總線”。這些相互連接的RS485接口的物理地位完全平等,在邏輯上取一個為主導(dǎo)地位,其他為從屬地位。在通信時,同樣采用主呼叫,從應(yīng)答的方式。
控制系統(tǒng)的硬件構(gòu)成如圖1所示,上位機為計算機,下位機采用西門子公司S7-200系列PLC,各PLC通過通信口0直接掛在RS485總線上,上位機通過RS232/485轉(zhuǎn)換器與RS485總線相連,形成1:N通信方式。控制系統(tǒng)中,上位機的主要任務(wù)是獲取調(diào)試線上的數(shù)據(jù)信息,完成對調(diào)試過程的監(jiān)控。下位機的主要任務(wù)是對調(diào)試過程進行自動控制,將調(diào)試數(shù)據(jù)發(fā)送給上位機,并按上位機命令執(zhí)行。
圖1網(wǎng)絡(luò)圖
2計算機與PLC的通信上位機與PLC的通信實際上是計算機與PLC的通信模塊之間交換命令和響應(yīng),下位機具有初始傳送優(yōu)先權(quán),將所有調(diào)試數(shù)據(jù)發(fā)送給上位機,上位機根據(jù)收到的數(shù)據(jù)判斷哪個調(diào)試線發(fā)出的數(shù)據(jù),對數(shù)據(jù)分析后響應(yīng)回傳數(shù)據(jù)與命令,下位機只接收發(fā)送給自己的數(shù)據(jù)。通信以“幀”為單位進行,幀分為數(shù)據(jù)幀和響應(yīng)幀兩種。數(shù)據(jù)幀由PLC發(fā)送給上位機;響應(yīng)幀為上位機接到數(shù)據(jù)幀后自動向PLC發(fā)出的命令與判斷信號所有的指令碼、字符和數(shù)據(jù)均以十六進制碼發(fā)送和接受。
S7-200系列PLC通信模式有兩種:一種是點對點(PPI)通信協(xié)議,用于PLC與其編程器或西門子公司的人機接口產(chǎn)品之間的通信;另一種是對用戶完全開放的自由口模式(freeportmode),由用戶自行規(guī)定通信的協(xié)議。PPI模式只能在PLC停止方式(STOP)下通信,而自由口模式只能在PLC運行方式(Run)下通信,我們采用自由口通信方式在進行通信之前,應(yīng)先對串口初始化。對S7-200PLC的初始化是通過設(shè)置特殊標(biāo)志位SMB30來實現(xiàn)的。
2.1PLC的發(fā)送指令發(fā)送S7200系列PLC有專門的發(fā)送指令用于發(fā)送數(shù)據(jù),格式為:
XMTTABLEPORT
XMTTABLEPORTTABLE為發(fā)送數(shù)據(jù)的字節(jié)數(shù)即數(shù)據(jù)長度,最大為255。而要發(fā)送的數(shù)據(jù)必須存儲在TABLE的后面。如TABLE的存儲區(qū)域為VB600,要發(fā)送“MESSAGE”的數(shù)據(jù)存儲形式如圖2所示。PORT指定通信口,本項目設(shè)為0。當(dāng)正在發(fā)送數(shù)據(jù)時,PLC特殊標(biāo)志位SM4.5為0;發(fā)送完后,SM4.5為1。因此可通過判斷SM4.5的狀態(tài)來進行發(fā)送后處理。
圖2PLC發(fā)送信息
如果有一個中斷服務(wù)程序連接到發(fā)送結(jié)束事件上,在發(fā)送完緩沖區(qū)中的最后一個字符時,則會產(chǎn)生一個中斷(對端口0為中斷事件9,對端口1為中斷事件26)。