引言
在PLC控制系統(tǒng)中,Modbus串行通信是PLC控制系統(tǒng)與外部設備進行通信、監(jiān)控外部信號的重要方式。西門子PLC在控制系統(tǒng)的Modbus通信中,更多的是作為主站與多個從站設備進行通信。因此,本文主要研究西門子PLC如何采用自由口(AsCII協議)實現Modbus多站點輪詢。
#1odbusRTU多站點輪詢原理
本文研究ModbusRTU多站點輪詢通信的前提是西門子PLC支持自由口實現Modbus通信。鑒于此前提,本文采用AsCII協議仿照Modbus主站協議進行多站點輪詢通信。
在AsCII協議驅動實現多站點輪詢的過程中,采用的處理方式如下:
(l)基本模式:主站主動發(fā)出請求,從站根據主站請求作出響應。
(2)數據幀:在發(fā)送或響應數據幀中要包含有站點標識的信息。
(3)實現方法:定時輪詢,直接啟動下個作業(yè),延時啟動下個作業(yè)。
(4)校驗、錯誤處理機制:CRC、等待、丟棄、重試等,其中CRC是ModbusRTU的CRC校驗[l],是非常重要的環(huán)節(jié)。第一,自編CRC校驗功能來實現校驗:第二,依據從站提供的數據信息,提前計算出CRC校驗碼,直接填入到數據幀的最后。
(5)各個從站響應時間:需要單獨測試以便獲取每個從站響應主站的響應時間,得出時間的最大值,以此作為從站未響應主站的超時時間。
上述是本文采用的合理的輪詢處理方式,在實際應用中,針對不同的通信對象,可以具體分析并作出相應的輪詢處理。
2輪詢機制數據幀格式
根據表l中ModbusRTU數據幀格式[2],主站(基于AsCII協議)通過發(fā)送不同地址標識字符的幀來輪詢不同的從站,同時從站根據地址字符來判斷是否是給自己的消息,并據此做出相應的處理。AsCII數據幀格式如表2所示。
3主站輪詢時序
依據前面介紹的輪詢原理,本文采用合理的輪詢處理方式。西門子PLC串口作為主站進行從站輪詢時,啟動發(fā)送作業(yè),發(fā)送作業(yè)完成位D0NE置位,主站接收功能塊將從站響應的數據送回給CPU處理,接收作業(yè)完成位NDR置位:同時主站構造下條請求指令,將請求指令傳遞到發(fā)送區(qū)域,并更新下一條指令的接收區(qū)域,啟動下一個從站的發(fā)送作業(yè)。
注意當發(fā)生故障時,可以從以下3個方面進行處理:
(1)發(fā)送功能塊無法完成,報錯位ERR0R置位,則判斷發(fā)送作業(yè)失敗,啟動下一個從站的發(fā)送作業(yè)。
(2)發(fā)送作業(yè)成功,而接收功能塊的報錯位ERR0R置位,則判斷發(fā)送作業(yè)失敗,啟動下一個從站的發(fā)送作業(yè)。
(3)發(fā)送作業(yè)成功,而接收功能塊的完成位NDR和報錯位ERR0R由于某些故障無法置位,通信無法啟動下一個從站的發(fā)送作業(yè),所以在啟動發(fā)送作業(yè)的同時啟動超時定時器,即定時器計時結束時接收功能塊的完成位NDR和報錯位ERR0R仍然沒有置位,則判斷發(fā)送作業(yè)失敗,啟動下一個從站的發(fā)送作業(yè)。
當發(fā)生故障時,可以向當前站點再次發(fā)送請求,本文選擇的重復次數是1次。
本文以CP341作主站為例,CP341作主站輪詢從站時序圖如圖l所示,關于功能塊的信息如圖2、圖3所示。主站通過發(fā)送功能塊FB8向s1avel發(fā)送請求指令,由于slavel斷線故障,沒有收到主站請求,無法返回數據,且接收功能塊FB7的完成位NDR和報錯位ERR0R無法置位,則當超時定時器時間t0超時,主站判斷本條指令失敗,同時發(fā)起下條指令訪問s1ave2,s1ave2收到主站請求后,將響應數據返回給主站CP34l,主站將接收到的數據保存到指定位置,接收功能塊D0NE置位,同時觸發(fā)下一次發(fā)送作業(yè)。
注意,超時定時器時間t0(t0設置為秒級數據)大于主站接收到從站響應數據時間t,t是主站發(fā)出請求后直至接收到從站數據的時間。即t0>max(tl,t2,…,tl),其中tl是主站向第l個從站發(fā)出請求后直至接收到第l個從站數據的時間。
4主站輪詢流程
本節(jié)設計了初始化流程和主站輪詢流程,具體如下:
第一,初始化流程。主要完成CP模塊的參數化、輪詢計數器、復位接收緩沖區(qū)以及發(fā)送數據幀等方面的工作。
第二,主站輪詢流程。在系統(tǒng)初始化完成后,手動啟動第一次輪詢作業(yè),先輪詢l#從站,如果在指定的超時時間內接收到1#從站返回的數據,則輪詢2#從站,如果在指定的超時時間內接收到2#從站返回的數據,則一次完整的輪詢結束,自動啟動新一輪的輪詢。主站輪詢流程圖如圖4所示。
如果在指定的超時時間內不能接收到從站的返回數據或接收錯誤,則跳過本站,開始輪詢下一個站點。以上內容是本文設計的西門子PLC自由口實現Modbus多站點輪詢的方案。
5結語
綜上所述,PLC自由口實現Modbus多站點輪詢的原理是比較靈活的,可以根據控制系統(tǒng)的要求以及從站的信息,在輪詢原理基礎上進行相應靈活的組合,實現最佳通信。本文提出的該方案最突出的優(yōu)勢是這種輪詢處理方式復制性強、靈活簡便、成本低廉,可為許多工程項目帶來直接的經濟利益,有著非常廣泛的應用前景。