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