公務員期刊網(wǎng) 論文中心 正文

FTO系統(tǒng)數(shù)據(jù)通信處理分析

前言:想要寫出一篇引人入勝的文章?我們特意為您整理了FTO系統(tǒng)數(shù)據(jù)通信處理分析范文,希望能給你帶來靈感和參考,敬請閱讀。

FTO系統(tǒng)數(shù)據(jù)通信處理分析

1技術方案

1.1傳統(tǒng)通信方式

S7-300PLC采用CP341進行數(shù)據(jù)通信,CP341應用最多的是ModbusRTU通信方式。ModbusRTU通信協(xié)議采取主從模式:由主站發(fā)出數(shù)據(jù)操作請求,從站進行響應。整個網(wǎng)絡可以有多個從站,但是必須有且只有一個主站。若主站不發(fā)出數(shù)據(jù)操作請求,則所有從站保持靜默狀態(tài)。PLC在ModbusRTU模式中一般作為從站響應上游的DCS主站請求。為保證fto系統(tǒng)現(xiàn)場控制盤內(nèi)的PLC與DCS主站通信成功,首先要確定從站能辨識主站的查詢請求,其次要保證從站響應主站的報文格式正確,應符合Mod-busRTU標準格式。

1.2程序結構流程

在FTO系統(tǒng)的就地PLC與DCS主站通信中,采用軟件結構化編程模擬傳統(tǒng)的硬件通信模塊固化的程序流程,主要的程序模塊有:OB1———主程序,程序組織塊,用于啟用主程序;OB80———程序組織塊,用于報告系統(tǒng)運行錯誤號;OB121、OB122———程序組織塊,用于程序容錯處理,防止PLC死機;FB7———子程序,程序功能塊,用于從總線上接收主機的請求數(shù)據(jù);FB8———子程序,程序功能塊,用于把從站數(shù)據(jù)發(fā)送到總線上,以響應主機的請求;FB9———子程序,RTUSLAVE通信主程序。

1.3具體實現(xiàn)

程序組織塊OB80、OB121、OB122可直接從Step7中調(diào)用。CP341用功能塊FB7“P_RCV_RK”和FB8“P_SND_RK”分別從通信總線上接收和發(fā)送通信數(shù)據(jù)。在本通信程序中被主程序FB9調(diào)用。FB9是RTUSLAVE通信主程序,用于運行中的程序流程,由其調(diào)用FB7、FB8、FC10和FC12。起始時,F(xiàn)B9調(diào)用FB7從總線上接收主站請求的報文,通過解析報文的第一字節(jié)內(nèi)容(從站地址),判斷地址是否與本從站一致,若不一致則直接丟棄此報文,繼續(xù)監(jiān)測總線數(shù)據(jù);若報文請求地址與本從站地址一致,則調(diào)用FC12子程序對報文進行CRC16校驗,若校驗失敗則說明報文有誤,直接丟棄報文;若校驗通過,則繼續(xù)解析此報文請求的第二字節(jié)(功能碼),按功能碼的請求分別轉到對應的程序段執(zhí)行;執(zhí)行相應的請求功能后,調(diào)用FC10進行數(shù)據(jù)移動整理,并再次調(diào)用FC12對響應后的數(shù)據(jù)進行校驗,并將校驗碼附加到響應數(shù)據(jù)的最后兩個字節(jié)作為響應報文,調(diào)用FB8發(fā)送到總線供主機接收。通信程序的容錯機制采用CRC16校驗。CRC16校驗程序由于要對通信的所有數(shù)據(jù)進行逐一字節(jié)的運算,因此極其耗費CPU運算資源,經(jīng)實驗,采用PLC內(nèi)置硬件模塊處理的通信數(shù)據(jù)量達到256Byte后CPU運算時間大于掃描周期時間的概率大為增加,容易導致通信錯誤和CPU死機。為了不使計算時間超出PLC的最大允許掃描時間,筆者設計將計算一串數(shù)據(jù)的CRC16校驗碼任務分散到各PLC周期中去。具體做法是:每個掃描周期只進行一個字節(jié)的通信數(shù)據(jù)CRC16校驗計算,一串通信數(shù)據(jù)則依字節(jié)數(shù)分散到多個周期去做,設置一個全局變量存儲當前的CRC16檢驗碼值,每個周期在當前CRC16校驗碼值的基礎上繼續(xù)下一個字節(jié)的計算,得到新的CRC16校驗碼值,當一串數(shù)據(jù)全部計算完畢后,當前CRC16校驗碼值即最終值。CRC16單個字節(jié)校驗編程的具體實現(xiàn)步驟如下:

a.設置CRC寄存器,并給其賦值FFFF(hex);

b.將待校驗數(shù)據(jù)(起始位、停止位不參加計算)的第一個字節(jié)與16位CRC寄存器的低8位進行異或,并把結果存入CRC寄存器;

c.CRC寄存器向右移一位,MSB補零,移出并檢查LSB;

d.如果LSB為0則重復c,若LSB為1就把CRC寄存器與A001H相異或;

e.重復c與d直到8次移位全部完成,此時該字節(jié)數(shù)據(jù)處理完畢;

f.重復b~e直到所有數(shù)據(jù)全部處理完成;

g.最終CRC寄存器的內(nèi)容即為CRC值。FB9、FC10和FC12是通信程序核心,也是此方法的主要源代碼內(nèi)容。此程序代碼實現(xiàn)的ModbusRTU支持的功能碼為01、02、03、04、05、06、15和16。

2應用結果

FTO系統(tǒng)中數(shù)字量為298點,模擬量為163點,單回路8個,復雜控制回路4個。為保證PLC的運行實時性,設置其極限循環(huán)掃描時間為150ms。對3種通信方式進行對比,軟件單次掃描循環(huán)方式是將通信過程中計算量最大的CRC校驗計算在一個掃描周期內(nèi)運行,運行時間為198ms,遠超出了PLC極限循環(huán)掃描時間,引起CPU停機;采用傳統(tǒng)的硬件通信模塊時,掃描時間為142ms,比較接近150ms的極限,若考慮到模擬量控制回路運行時間的不確定性,則復雜工況下,也存在導致CPU停機的風險;利用多個掃描周期來計算CRC校驗碼值的方式,每次循環(huán)只要89ms,保證了CPU循環(huán)掃描時間的足夠裕量,有利于系統(tǒng)穩(wěn)定可靠運行。從通信成本投入看,尤其是對中小型PLC系統(tǒng),軟件多次掃描循環(huán)方法是經(jīng)濟的。

3結束語

FTO系統(tǒng)運行至今,回路顯示、控制和通信數(shù)據(jù)的交換一直穩(wěn)定、可靠,達到了預期目的。應用結果表明,該方法提高了PLC處理大量通信數(shù)據(jù)時的運行可靠性,保證了FTO系統(tǒng)的可靠運行,同時節(jié)省了購置PLC通信硬件的高額成本,應用前景廣闊。

作者:馮建玉 韓靜 劉雄 姚海 寧彥初 單位:中國船舶重工集團公司第七一一研究所