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