西門子S7-1200通過通信板和通信模塊可以進(jìn)行Modbus RTU通信,PLC作為控制器,一般用作Modbus主站。當(dāng)作為Modbus主站時(shí),一般會(huì)對(duì)多個(gè)從站設(shè)備的參數(shù)進(jìn)行輪詢。本文介紹西門子S7-1200作為Modbus RTU主站時(shí)的定時(shí)輪詢程序。
1
主要使用的硬件和軟件
2
通信任務(wù)
3
程序思路
要實(shí)現(xiàn)該功能,采用定時(shí)器輪詢的方式來(lái)讀寫參數(shù),其流程圖如下所示。
4
PLC程序
在該程序中,使用FB塊的方式進(jìn)行封裝,其用到的PLC變量、PLC數(shù)據(jù)類型、全局?jǐn)?shù)據(jù)、FB接口如下所示。
將有效的工作模式改成4,也就是半雙工(RS485)二線制模式
初始化Modbus組態(tài)端口,首次循環(huán)、硬件標(biāo)識(shí)符、波特率、奇偶校驗(yàn)在形參中定義,MB_DB來(lái)自Modbus RTU主站的背景數(shù)據(jù)塊。
定義100ms的定時(shí)器脈沖,該時(shí)間可根據(jù)Modbus主站讀寫的速度來(lái)調(diào)整。
定義計(jì)數(shù)器的值,通過定時(shí)器接通的信號(hào),進(jìn)行計(jì)數(shù)加1,當(dāng)計(jì)數(shù)值大于等于任務(wù)數(shù)的時(shí)候,則復(fù)位計(jì)數(shù)值。這里的任務(wù)數(shù)是Modbus輪詢時(shí)的任務(wù)數(shù)量,該程序中任務(wù)數(shù)4。
由于PLC數(shù)據(jù)類型(UDT)的數(shù)組是從0開始,所以對(duì)計(jì)數(shù)值進(jìn)行減1操作。
Modbus主站輪詢的程序,定時(shí)器接通信號(hào)作為觸發(fā)信號(hào),輸入數(shù)據(jù)和狀態(tài)使用PLC數(shù)據(jù)類型(UDT),不同的任務(wù)使用索引來(lái)尋址。
將該FB塊在OB1中調(diào)用,并關(guān)聯(lián)實(shí)參。
5
參數(shù)設(shè)置
在該項(xiàng)目中,需要完成5個(gè)任務(wù)(詳見2. 通信任務(wù)),由于任務(wù)1和任務(wù)2不同時(shí)進(jìn)行,則是4個(gè)任務(wù)進(jìn)行輪詢。其參數(shù)在全局?jǐn)?shù)據(jù)塊中進(jìn)行設(shè)置,如圖所示。
這里的從站地址、讀寫模式、數(shù)據(jù)地址、數(shù)據(jù)長(zhǎng)度需要根據(jù)實(shí)際的任務(wù)進(jìn)行設(shè)定。
對(duì)于其中的一個(gè)任務(wù)需求是,讀和寫進(jìn)行分開,所以可以通過外部的條件修改模式和給定的值,如下圖所示。
當(dāng)需要寫入?yún)?shù)時(shí),給定一個(gè)寫命令,也就是這里的“取料完成”信號(hào)。通過該信號(hào),更改任務(wù)1(索引是0)的讀寫模式和值,當(dāng)該任務(wù)完成或出錯(cuò),復(fù)位該信號(hào)。
6
總結(jié)
以上就是該程序的全部?jī)?nèi)容。這種定時(shí)輪詢的方式優(yōu)點(diǎn)是就算其中一個(gè)設(shè)備出現(xiàn)故障,由于其定時(shí)輪詢的方式,也不影響其它設(shè)備,適合從站的數(shù)據(jù)類似,讀寫的速度接近且不要求進(jìn)行故障處理的場(chǎng)合。如果大家有更多關(guān)于Modbus的應(yīng)用,歡迎留言交流。
點(diǎn)個(gè)在看你最好看
聯(lián)系客服