西門子PLC卡件6ES7317-2EK14-0AB0
程序?qū)崿F(xiàn)
接下來我們就可以根據(jù)上述輪詢思想,,通過編寫STEP7程序具體實現(xiàn)主站輪詢從站的功能。由于主站,、從站任務的不同,,所以在程序上的實現(xiàn)上也有所不同,下面針對主站和從站的程序?qū)崿F(xiàn)做個簡要描述,。具體的例程可以參考本文附帶的樣例程序,。
3.1 主站程序
3.1.1 初始化
為了實現(xiàn)對多個從站的輪詢,程序構(gòu)造了一個輪詢計數(shù)器,通過修改輪詢計數(shù)器的值,,來修改主站發(fā)送數(shù)據(jù)幀中的站地址標識字符,。
本例中定義MW2作為輪詢計數(shù)器,程序開始,,先對輪詢計數(shù)器進行操作,,默認先輪詢1#從站,將值1賦值給MW2,。

圖10 初始化輪詢計數(shù)器程序段
在程序執(zhí)行過程中,,會修改輪詢計數(shù)器的值,通過判斷輪詢計數(shù)器的值對發(fā)送數(shù)據(jù)塊的地址標識符字作相應的修改,,以完成對響應從站的輪詢,。本例中具體的實現(xiàn)如下圖,其中DB13作為發(fā)送數(shù)據(jù)塊,,DB13.DBW0為地址標識符字,。

圖11 生成地址標識符程序段
3.1.2 啟動發(fā)送
初始化完成后,可以啟動發(fā)送功能,。本例次發(fā)送采用手動方式,,通過觸發(fā)手動啟動標志位M30.1,并調(diào)用FB8 P_SND_RK發(fā)送數(shù)據(jù)到從站,。完成次發(fā)送后,,可以通過程序自動修改自動輪詢標志位M30.0來實現(xiàn)自動發(fā)送數(shù)據(jù)到從站的功能,具體的FB8 P_SND_RK功能塊使用參考CP341手冊,。
啟動發(fā)送功能塊FB8后,,通過FB8返回狀態(tài)信息,判斷是否發(fā)送完成,,如果發(fā)送錯誤,,則重新啟動發(fā)送功能。
? 發(fā)送完成:啟動接收作業(yè),,準備接收從站返回數(shù)據(jù),。同時啟動一個超時定時器T11,如果超時定時時間到,,還沒有接收到數(shù)據(jù),,則放棄等待,開始輪詢下一個站,。

圖12 發(fā)送功能塊程序段
3.1.3 接收從站返回數(shù)據(jù)
發(fā)送完成后,,啟動接收作業(yè),準備接收從站返回數(shù)據(jù),,并將接收到的數(shù)據(jù)先放到接收緩沖區(qū)中,,本例DB14數(shù)據(jù)塊為接收緩沖區(qū),。

圖13 接收功能塊程序段
3.1.4 接收完成西門子PLC卡件6ES7317-2EK14-0AB0
接收完成后,做如下幾方面處理,。如果接收錯誤或超時,,則跳過此站的輪詢。
? 根據(jù)接收到數(shù)據(jù)的地址標識符判斷是來自哪個從站的數(shù)據(jù),,并將數(shù)據(jù)從接收緩沖區(qū)轉(zhuǎn)移到的從站數(shù)據(jù)存儲區(qū)中,,同時清空接收緩沖區(qū);
? 復位接收標志,,同時修改輪詢計數(shù)器的值,,準備輪詢下一個從站;
? 復位超時定時器,;
? 啟動一個延時定時器,,延時時間到后開始輪詢下一個從站。

圖14 接收完成處理程序段

圖15 準備輪詢下一個站程序段
3.2 從站程序
相對于主站,,從站的處理程序相對簡單,。下面以2#從站為例做個說明,1#從站除了調(diào)用FB不同外,,都與2#從站相同,。
3.2.1 接收數(shù)據(jù)
從站一直啟動接收功能FB2 P_RCV,接收來自網(wǎng)絡上的數(shù)據(jù),,如果接收到數(shù)據(jù)則根據(jù)地址標識符判斷是否是本站的數(shù)據(jù):
? 是本站數(shù)據(jù),,則將接收緩沖區(qū)(DB17)中的數(shù)據(jù)移到的地址區(qū)(DB18)中,并清空接收緩沖區(qū),。同時,,觸發(fā)發(fā)送標志,,發(fā)送返回數(shù)據(jù)給主站,;
? 不是本站數(shù)據(jù),直接清空接收緩沖區(qū)(DB17),。

圖16 從站接收程序段

圖17 從站接收完處理程序段
3.2.1 發(fā)送返回數(shù)據(jù)
接收完成后,,調(diào)用發(fā)送功能,將DB19的數(shù)據(jù)發(fā)送給主站,。

圖18 從站發(fā)送響應程序段
3.3 實驗結(jié)果
搭建好網(wǎng)絡,,并將程序分別下載到各自的CPU中,啟動CPU的運行,。通過置位手動啟動輪詢標志位M30.0即可啟動輪詢程序的運行,。通過變量表可以監(jiān)視到系統(tǒng)的運行情況,可以看到,,主站會循環(huán)地將數(shù)據(jù)發(fā)送到兩個從站,,同時也循環(huán)地接收來自從站的返回數(shù)據(jù),,如下圖所示。

圖19 系統(tǒng)運行監(jiān)控圖
4 應用小結(jié)
通過本應用實例,,可以看到基于ASCII驅(qū)動協(xié)議的多站點輪詢原理比較簡單,。同時因為其較大的靈活性,所以可以與各種滿足ASCII協(xié)議的設備進行通信,。西門子串行通信模塊CP340,、CP341、CP440-1,、CP441-1/2,、CPU313C/314C-2PtP以及ET200S的1SI 3964/ASCII等都集成有ASCII驅(qū)動協(xié)議功能,可以根據(jù)需求靈活地選擇這些產(chǎn)品,。
本文所述應用和提供例程只作為相關(guān)應用的參考,,在實際的應用中,應該充分考慮通信伙伴的特點和實際需求,,結(jié)合不同的輪詢方式,、錯誤處理機制、校驗方法,、數(shù)據(jù)處理方法等手段達到通信目的,。
鄭重聲明:本文的虛擬工程與真實工程實例有重大差別,示例中并未遵循規(guī)范的工程設計流程進行編程,,請讀者切勿將其與工程實例相混淆,;由于此例子是免費的,任何用戶可以免費復制或傳播此程序例子,。程序的作者對此程序不承擔任何功能性或兼容性的責任,,使用者風險自負;西門子不提供此程序例子的錯誤更改或者熱線支持,;為了更好的使用這些模板,,建議用戶仔細閱讀相關(guān)模板的使用手冊