FTO系統(tǒng)數(shù)據(jù)通信處理分析論文
1技術(shù)方案
1.1傳統(tǒng)通信方式
S7-300PLC采用CP341進(jìn)行數(shù)據(jù)通信,CP341應(yīng)用最多的是ModbusRTU通信方式。ModbusRTU通信協(xié)議采取主從模式:由主站發(fā)出數(shù)據(jù)操作請(qǐng)求,從站進(jìn)行響應(yīng)。整個(gè)網(wǎng)絡(luò)可以有多個(gè)從站,但是必須有且只有一個(gè)主站。若主站不發(fā)出數(shù)據(jù)操作請(qǐng)求,則所有從站保持靜默狀態(tài)。PLC在ModbusRTU模式中一般作為從站響應(yīng)上游的DCS主站請(qǐng)求。為保證FTO系統(tǒng)現(xiàn)場控制盤內(nèi)的PLC與DCS主站通信成功,首先要確定從站能辨識(shí)主站的查詢請(qǐng)求,其次要保證從站響應(yīng)主站的報(bào)文格式正確,應(yīng)符合Mod-busRTU標(biāo)準(zhǔn)格式。
1.2程序結(jié)構(gòu)流程
在FTO系統(tǒng)的就地PLC與DCS主站通信中,采用軟件結(jié)構(gòu)化編程模擬傳統(tǒng)的硬件通信模塊固化的程序流程,主要的程序模塊有:OB1———主程序,程序組織塊,用于啟用主程序;OB80———程序組織塊,用于報(bào)告系統(tǒng)運(yùn)行錯(cuò)誤號(hào);OB121、OB122———程序組織塊,用于程序容錯(cuò)處理,防止PLC死機(jī);FB7———子程序,程序功能塊,用于從總線上接收主機(jī)的請(qǐng)求數(shù)據(jù);FB8———子程序,程序功能塊,用于把從站數(shù)據(jù)發(fā)送到總線上,以響應(yīng)主機(jī)的請(qǐng)求;FB9———子程序,RTUSLAVE通信主程序。
1.3具體實(shí)現(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通信主程序,用于運(yùn)行中的程序流程,由其調(diào)用FB7、FB8、FC10和FC12。起始時(shí),F(xiàn)B9調(diào)用FB7從總線上接收主站請(qǐng)求的報(bào)文,通過解析報(bào)文的第一字節(jié)內(nèi)容(從站地址),判斷地址是否與本從站一致,若不一致則直接丟棄此報(bào)文,繼續(xù)監(jiān)測總線數(shù)據(jù);若報(bào)文請(qǐng)求地址與本從站地址一致,則調(diào)用FC12子程序?qū)?bào)文進(jìn)行CRC16校驗(yàn),若校驗(yàn)失敗則說明報(bào)文有誤,直接丟棄報(bào)文;若校驗(yàn)通過,則繼續(xù)解析此報(bào)文請(qǐng)求的第二字節(jié)(功能碼),按功能碼的請(qǐng)求分別轉(zhuǎn)到對(duì)應(yīng)的程序段執(zhí)行;執(zhí)行相應(yīng)的請(qǐng)求功能后,調(diào)用FC10進(jìn)行數(shù)據(jù)移動(dòng)整理,并再次調(diào)用FC12對(duì)響應(yīng)后的數(shù)據(jù)進(jìn)行校驗(yàn),并將校驗(yàn)碼附加到響應(yīng)數(shù)據(jù)的最后兩個(gè)字節(jié)作為響應(yīng)報(bào)文,調(diào)用FB8發(fā)送到總線供主機(jī)接收。通信程序的容錯(cuò)機(jī)制采用CRC16校驗(yàn)。CRC16校驗(yàn)程序由于要對(duì)通信的所有數(shù)據(jù)進(jìn)行逐一字節(jié)的運(yùn)算,因此極其耗費(fèi)CPU運(yùn)算資源,經(jīng)實(shí)驗(yàn),采用PLC內(nèi)置硬件模塊處理的通信數(shù)據(jù)量達(dá)到256Byte后CPU運(yùn)算時(shí)間大于掃描周期時(shí)間的概率大為增加,容易導(dǎo)致通信錯(cuò)誤和CPU死機(jī)。為了不使計(jì)算時(shí)間超出PLC的最大允許掃描時(shí)間,筆者設(shè)計(jì)將計(jì)算一串?dāng)?shù)據(jù)的CRC16校驗(yàn)碼任務(wù)分散到各PLC周期中去。具體做法是:每個(gè)掃描周期只進(jìn)行一個(gè)字節(jié)的通信數(shù)據(jù)CRC16校驗(yàn)計(jì)算,一串通信數(shù)據(jù)則依字節(jié)數(shù)分散到多個(gè)周期去做,設(shè)置一個(gè)全局變量存儲(chǔ)當(dāng)前的CRC16檢驗(yàn)碼值,每個(gè)周期在當(dāng)前CRC16校驗(yàn)碼值的基礎(chǔ)上繼續(xù)下一個(gè)字節(jié)的計(jì)算,得到新的CRC16校驗(yàn)碼值,當(dāng)一串?dāng)?shù)據(jù)全部計(jì)算完畢后,當(dāng)前CRC16校驗(yàn)碼值即最終值。CRC16單個(gè)字節(jié)校驗(yàn)編程的具體實(shí)現(xiàn)步驟如下:
a.設(shè)置CRC寄存器,并給其賦值FFFF(hex);
b.將待校驗(yàn)數(shù)據(jù)(起始位、停止位不參加計(jì)算)的第一個(gè)字節(jié)與16位CRC寄存器的低8位進(jìn)行異或,并把結(jié)果存入CRC寄存器;
c.CRC寄存器向右移一位,MSB補(bǔ)零,移出并檢查LSB;
d.如果LSB為0則重復(fù)c,若LSB為1就把CRC寄存器與A001H相異或;
e.重復(fù)c與d直到8次移位全部完成,此時(shí)該字節(jié)數(shù)據(jù)處理完畢;
f.重復(fù)b~e直到所有數(shù)據(jù)全部處理完成;
g.最終CRC寄存器的'內(nèi)容即為CRC值。FB9、FC10和FC12是通信程序核心,也是此方法的主要源代碼內(nèi)容。此程序代碼實(shí)現(xiàn)的ModbusRTU支持的功能碼為01、02、03、04、05、06、15和16。
2應(yīng)用結(jié)果
FTO系統(tǒng)中數(shù)字量為298點(diǎn),模擬量為163點(diǎn),單回路8個(gè),復(fù)雜控制回路4個(gè)。為保證PLC的運(yùn)行實(shí)時(shí)性,設(shè)置其極限循環(huán)掃描時(shí)間為150ms。對(duì)3種通信方式進(jìn)行對(duì)比,軟件單次掃描循環(huán)方式是將通信過程中計(jì)算量最大的CRC校驗(yàn)計(jì)算在一個(gè)掃描周期內(nèi)運(yùn)行,運(yùn)行時(shí)間為198ms,遠(yuǎn)超出了PLC極限循環(huán)掃描時(shí)間,引起CPU停機(jī);采用傳統(tǒng)的硬件通信模塊時(shí),掃描時(shí)間為142ms,比較接近150ms的極限,若考慮到模擬量控制回路運(yùn)行時(shí)間的不確定性,則復(fù)雜工況下,也存在導(dǎo)致CPU停機(jī)的風(fēng)險(xiǎn);利用多個(gè)掃描周期來計(jì)算CRC校驗(yàn)碼值的方式,每次循環(huán)只要89ms,保證了CPU循環(huán)掃描時(shí)間的足夠裕量,有利于系統(tǒng)穩(wěn)定可靠運(yùn)行。從通信成本投入看,尤其是對(duì)中小型PLC系統(tǒng),軟件多次掃描循環(huán)方法是經(jīng)濟(jì)的。
3結(jié)束語
FTO系統(tǒng)運(yùn)行至今,回路顯示、控制和通信數(shù)據(jù)的交換一直穩(wěn)定、可靠,達(dá)到了預(yù)期目的。應(yīng)用結(jié)果表明,該方法提高了PLC處理大量通信數(shù)據(jù)時(shí)的運(yùn)行可靠性,保證了FTO系統(tǒng)的可靠運(yùn)行,同時(shí)節(jié)省了購置PLC通信硬件的高額成本,應(yīng)用前景廣闊。
【FTO系統(tǒng)數(shù)據(jù)通信處理分析論文】相關(guān)文章:
2.USB數(shù)據(jù)通信系統(tǒng)探析論文
3.地鐵信號(hào)系統(tǒng)數(shù)據(jù)通信論文
4.電力系統(tǒng)數(shù)據(jù)通信網(wǎng)IP地址規(guī)劃分析論文
5.CBTC數(shù)據(jù)通信子系統(tǒng)的無線干擾論文