西門子SIMATIC S7系列串行通信模塊,包括CP340、CP341、CP440-1、CP441-1/2、CPU313C/314C-2PtP以及ET200S的1SI 3964/ASCII等,都支持ASCII驅動協議的通信,可以廣泛地用于與第三方支持ASCII協議的儀表、設備、系統等進行點對點連接通信,具有應用簡單、靈活,使用方便等優點。
這期欄目通過一個具體的示例,給出了在多個西門子串口通信模塊(CP340/CP341)之間通過ASCII驅動協議進行輪詢通信的應用。其具體的實現方法和輪詢原理具有普遍的指導意義,可以作為西門子串行通信模塊與支持ASCII協議的儀表、設備、系統等進行串行通信的參考。
1. 系統組成
如下圖所示,系統包括3個SIMATIC S7-300站,其中一個作為串行通信的主站,通過ASCII驅動協議輪詢采集另外兩個從站的數據。系統主站和1#從站各配置了一個串行通信模塊CP341(6ES7341-1CH01-0AE0)(RS422/485接口),2#從站配置了一個串行通信模塊CP340(6ES7340-1AH02-0AE0)(RS232C接口),為了將它們連接到一個網絡中,在本例中選擇了西門子的PC/PPI電纜(6ES7901-3CB30-0XA0)將2#從站的RS232C接口轉換為RS485接口連接到網絡中。
2.電纜和硬件連接
詳細的硬件連接如圖
3.組態主站
?CP341模塊起始地址256,ASCII協議模式;
?消息幀結束標準:字符延遲時間4ms;
?波特率:9600bps,8位數據位,1位停止位,無校驗;
?接口類型:RS485半雙工;
?其他采用默認值。
4. 組態從站
對于從站CP341/CP340模塊的參數分配與主站保持一致,特別注意波特率、數據位、停止位和奇偶校驗位設置要與主站相同。
5. 輪詢原理
與MODBUS協議輪詢不同,由于每個從站自身不具有唯一的設備標識信息(從站地址),無法直接區分和識別網絡上的數據幀是哪個站的、需要哪個站做出響應,所以要通過ASCII協議驅動實現多站點輪詢,需要人為地對每個站做出標識,并在主站發送輪詢指令時給出相應的指令標識,以便從站能夠識別是否是發送給自己的數據以及是否做出響應。
在ASCII協議驅動實現多站點輪詢的過程中,應主要考慮以下幾個方面:
?基本模式:主站主動請求,從站根據請求作出響應;
?數據幀:在發送或響應數據幀中要包含有站點標識的信息;
?實現方法:定時輪詢,完成后直接啟動下一個作業,完成后延時啟動下一個作業等實現方法;
?校驗、錯誤處理機制:CRC、等待、丟棄、重試等。
6. 輪詢機制
①數據幀格式
為了區別1#從站和2#從站,在消息幀中增加一個字的地址標識字符,主站通過發送不同地址標識字符的幀來輪詢不同從站,同時從站根據地址字符來判斷是否是給自己的消息,并據此做出相應的處理。從站發送給主站的響應幀也包含有自己的地址標識字符,用于主站判斷是哪個從站返回的數據。字符幀格式如下:
②時序圖
③流程圖
?初始化流程
初始化主要針對主站而言。在初始化階段主要完成CP模塊的參數化、初始化輪詢計數器,復位接收緩沖區以及根據輪詢計數器生成發送數據幀等方面的工作。
?主站輪詢流程
如下圖所示,在系統初始化完成后,手動啟動第一次輪詢作業,本實例先輪詢1#從站。給1#從站發送查詢請求后,等待1#從站的響應,如果在指定的延時時間內接收到1#從站返回的數據,則給2#從站發送查詢請求,并等待2#從站的響應,同樣如果在指定的延時時間內接收到2#從站返回的數據,則一次完整的輪詢結束,自動啟動新一輪的輪詢。
如果在指定的延時時間內不能接收到從站的返回數據或接收錯誤,則跳過本站,開始輪詢下一個站點。
?從站響應流程
從站根據主站的請求做出響應,主要是在接收到網絡上的數據后,判斷是否是給自己的數據。如果是,則將數據接收到指定的數據區,同時啟動發送功能,發送相應的返回數據給主站;如果不是,則直接刪除收到的數據,并不做任何響應。
7. 主站程序
①初始化
為了實現對多個從站的輪詢,程序構造了一個輪詢計數器,通過修改輪詢計數器的值,來修改主站發送數據幀中的站地址標識字符。
這里定義MW2作為輪詢計數器,程序開始,先對輪詢計數器進行操作,默認先輪詢1#從站,將值1賦值給MW2。
在程序執行過程中,會修改輪詢計數器的值,通過判斷輪詢計數器的值對發送數據塊的地址標識符字作相應的修改,以完成對響應從站的輪詢。這里具體的實現如下圖,其中DB13作為發送數據塊,DB13.DBW0為地址標識符字。
②啟動發送
初始化完成后,可以啟動發送功能。這里第一次發送采用手動方式,通過觸發手動啟動標志位M30.1,并調用FB8 P_SND_RK發送數據到從站。完成第一次發送后,可以通過程序自動修改自動輪詢標志位M30.0來實現自動發送數據到從站的功能。
啟動發送功能塊FB8后,通過FB8返回狀態信息,判斷是否發送完成,如果發送錯誤,則重新啟動發送功能。
?發送完成:啟動接收作業,準備接收從站返回數據。同時啟動一個超時定時器T11,如果超時定時時間到,還沒有接收到數據,則放棄等待,開始輪詢下一個站。
③接收從站返回數據
發送完成后,啟動接收作業,準備接收從站返回數據,并將接收到的數據先放到接收緩沖區中,這里DB14數據塊為接收緩沖區。
④接收完成
接收完成后,做如下幾方面處理。如果接收錯誤或超時,則跳過此站的輪詢。
?根據接收到數據的地址標識符判斷是來自哪個從站的數據,并將數據從接收緩沖區轉移到指定的從站數據存儲區中,同時清空接收緩沖區;
?復位接收標志,同時修改輪詢計數器的值,準備輪詢下一個從站;
?復位超時定時器;
?啟動一個延時定時器,延時時間到后開始輪詢下一個從站。
8. 從站程序
相對于主站,從站的處理程序相對簡單。下面以2#從站為例做個說明,1#從站除了調用FB不同外,都與2#從站相同。
①接收數據
從站一直啟動接收功能FB2 P_RCV,接收來自網絡上的數據,如果接收到數據則根據地址標識符判斷是否是本站的數據:
?是本站數據,則將接收緩沖區(DB17)中的數據移到指定的地址區(DB18)中,并清空接收緩沖區。同時,觸發發送標志,發送返回數據給主站;
?不是本站數據,直接清空接收緩沖區(DB17)。
②發送返回數據
接收完成后,調用發送功能,將DB19的數據發送給主站。
9. 實驗結果
搭建好網絡,并將程序分別下載到各自的CPU中,啟動CPU的運行。通過置位手動啟動輪詢標志位M30.0即可啟動輪詢程序的運行。通過變量表可以監視到系統的運行情況,可以看到,主站會循環地將數據發送到兩個從站,同時也循環地接收來自從站的返回數據,如下圖所示。
-
西門子
+關注
關注
98文章
3113瀏覽量
117492 -
驅動協議
+關注
關注
0文章
1瀏覽量
2675
原文標題:如何組態基于ASCII驅動協議的多站點輪詢
文章出處:【微信號:Raul_Woo,微信公眾號:工控周刊】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
西門子PLC與labview之間如何通過OPC實現通信
西門子PLC對Socket通信的支持
西門子200Smart PLC的Socket通信技術
西門子S7-1200與組態軟件之間無線MODBUS通信實例

上位機與西門子PLC通信協議

西門子PLC與IO模塊之間無線PROFINET通信

智嵌物聯串口服務器與西門子Win CC軟件通信演示

工業智能網關通過串口/網口實現西門子PLC實時通信

評論