基于S7-300PLC的電力系統(tǒng)CDT規(guī)約的解析
6 協(xié)議解析思路
三遙功能的實(shí)現(xiàn)。
遙測(cè)量的信息:主要在a、b、c幀中,遙信信息在d1幀,電能脈沖數(shù)據(jù)在d2幀,事件順序記錄在e幀。rtu會(huì)通過(guò)固定循環(huán)傳送向plc傳送(其中soe為幀插入方式傳送)。
遙控的過(guò)程則需要plc向rtu發(fā)送下行遙控命令;然后rtu會(huì)以信息字插入的方式向plc發(fā)送遙控返校信息;plc收到信息并確認(rèn)后再向rtu發(fā)送遙控執(zhí)行命令,或者撤銷(xiāo)命令;最后rtu執(zhí)行plc下發(fā)的遙控命令,并將遙信變位信號(hào)以信息字插入方式返送到plc。整個(gè)遙控過(guò)程如圖5所示。
7 plc程序設(shè)計(jì)
7.1主程序
主程序放在一個(gè)功能fc內(nèi),由主程序塊ob1調(diào)用執(zhí)行。通信程序首先通過(guò)調(diào)用功能塊fb2對(duì)cdt數(shù)據(jù)的接收,并轉(zhuǎn)存入數(shù)據(jù)接收區(qū)db20中。之后調(diào)用數(shù)據(jù)整理塊,取出db20中的一個(gè)字(6個(gè)字節(jié)),并查找同步字(eb90
eb90
eb90)。找到同步字之后再取下面的6個(gè)字節(jié)(控制字),并進(jìn)行處理。然后根據(jù)控制字中的提供的信息字個(gè)數(shù),分別對(duì)幀的信息字進(jìn)行處理。在對(duì)控制字和信息字處理的時(shí)候首先進(jìn)行crc的校驗(yàn),如果有錯(cuò)誤,則拋棄此幀,進(jìn)行下一幀同步字的查找[3]。程序主要部分如下:
call “rcv_data” //接收數(shù)據(jù)并存儲(chǔ)至db20
call “check_6byte” //處理數(shù)據(jù),判斷是否有6個(gè)字節(jié)
a “istransneed” //需要處理數(shù)據(jù)
jc _001
ju com
_001:call “check_eb90” //查找同步字
a “isframetrans” //需要幀處理
jc _002
ju com
_002:call “contrw_trans” // 控制字處理
a “isinfotrans” //需要信息字處理
jc _003
ju com
_003:call “infow_trans” //信息字解析
com: nop 0
7.2數(shù)據(jù)的接受和處理
由于300plc處理數(shù)據(jù)的時(shí)間遠(yuǎn)比rtu傳送來(lái)數(shù)據(jù)的速率要快。因此不會(huì)存在rtu傳送的數(shù)據(jù)出現(xiàn)覆蓋情況。在db20中建120個(gè)字節(jié)作為cpu接收rtu數(shù)據(jù)的緩沖區(qū),因?yàn)閏dt規(guī)約中無(wú)論是同步字、控制字還是信息字均為6個(gè)字節(jié)長(zhǎng),因此數(shù)據(jù)緩沖區(qū)可以存20個(gè)字。數(shù)據(jù)接收塊(rcv_data)對(duì)來(lái)自rtu數(shù)據(jù)的接收,并轉(zhuǎn)存到數(shù)據(jù)緩沖區(qū)db20中。處理數(shù)據(jù)塊(check_6byte)是為了判斷db20中的數(shù)據(jù)是否有六個(gè)字節(jié),如果有6個(gè)字節(jié)則置位“需要處理位”(istransneeded),為下面查找同步字打開(kāi)通路;如果沒(méi)有6個(gè)字節(jié)則結(jié)束子程序功能塊,等待plc下個(gè)掃描周期對(duì)數(shù)據(jù)的接收。
7.3同步字查找
當(dāng)以上程序判斷出數(shù)據(jù)緩沖區(qū)中有大于6個(gè)字節(jié)的數(shù)據(jù),將會(huì)調(diào)用同步字查找塊(check_eb90)。對(duì)取回的數(shù)據(jù)進(jìn)行處理首要問(wèn)題就是要找到同步字,可依次取出六個(gè)字節(jié),并判斷它們是否為同步字(三組eb90h)。若不是,則丟掉第一個(gè)字節(jié),同時(shí)再取出隨后的那個(gè)字節(jié),再次進(jìn)行判斷。每個(gè)plc的掃描周期都要重復(fù)這樣的過(guò)程,直到找到同步字為止。當(dāng)找到兩個(gè)同步字,將同步字之間的數(shù)據(jù)轉(zhuǎn)存到控制、信息字db區(qū),并置位“需要幀處理”標(biāo)志位(isframetrans)。










