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

西門子S7-1200與組態(tài)軟件之間無(wú)線MODBUS通信實(shí)例

西門子V20變頻器通信

快速了解西門子串口PPI、200、200smart驅(qū)動(dòng)協(xié)議如何使用
上位機(jī)與西門子PLC通信協(xié)議

智嵌物聯(lián)串口服務(wù)器與西門子Win CC軟件通信演示

工業(yè)智能網(wǎng)關(guān)通過(guò)串口/網(wǎng)口實(shí)現(xiàn)西門子PLC實(shí)時(shí)通信

西門子S7協(xié)議與TCP協(xié)議的區(qū)別
西門子總線協(xié)議有哪些
使用西門子報(bào)文控制V90伺服驅(qū)動(dòng)器

評(píng)論