1 項目簡(jiǎn)介 濱州市污水處理廠(chǎng)占地100萬(wàn)立方米。采用德國B(niǎo)IOLAK污水處理工藝,日處理水規模為10萬(wàn)立方米。項目使用四套S7-300和兩套S7-200建成分布式控制系統,完成整個(gè)污水處理的控制、數據采集功能,本文僅敘述了項目的一部分——S7-300和S7-200通信內容。 S7-200PLC作為小型PLC,以其功能強、性?xún)r(jià)比高在工控領(lǐng)域中被廣泛應用。在S7-200與S7-300或WINCC通信時(shí),通常需要安裝EM277或CP243-1模塊,成本升高,使得S7-200性?xún)r(jià)比優(yōu)勢大打折扣。自由口通信是S7-200的突出特點(diǎn)之一,本文介紹了一種經(jīng)濟靈活的通信方法,其可行性、可靠性在實(shí)際工程中得到驗證。圖1為濱州污水處理廠(chǎng)監控中心。 ![]() 圖1 濱州污水處理廠(chǎng)監控中心 2 工程應用中的硬件及網(wǎng)絡(luò )結構 濱州污水處理廠(chǎng)自動(dòng)化監控系統中,兩刮泥橋上各有一臺S7-200PLC,每臺PLC控制8臺吸泥泵及刮泥橋的正反向運動(dòng)。S7-200PLC的柜子安裝在刮泥橋上,處于不停地來(lái)回運動(dòng)中,不適合進(jìn)行有線(xiàn)通信,采取了無(wú)線(xiàn)數傳電臺方式。 S7-200CPU上的通信口是基于RS485的,通過(guò)一個(gè)RS485/232轉換器將S7-200連接到電臺;在脫水機房的S7-300上掛一串口通信模塊CP340,并連接到數傳電臺,通過(guò)編程便可以實(shí)現S7-300與S7-200間的通信;監控室的上位機以MPI總線(xiàn)方式與S7-300通信,便可間接監控S7-200。系統網(wǎng)絡(luò )結構如圖2 ![]() 圖2 通信結構圖 3 通信功能的實(shí)現 通信程序要實(shí)現S7-300向一個(gè)S7-200站發(fā)送7個(gè)字節的數據,然后接收并存儲該S7-200返回的6個(gè)字節數據。S7-300發(fā)送的7個(gè)字節中,第1個(gè)字節是地址信息,第2、3、4字節是吸泥泵及刮泥橋控制數據信息,第5、6字節是1、2字節和3、4字節異或值,作為校驗判斷信息,第7位字節數據信息無(wú)意義,僅僅是為了觸發(fā)一次S7-200的字符接收中斷程序;S7-200向S7-300發(fā)送的6個(gè)字節中,第1個(gè)字節是S7-200的站地址信息,第2、3、4字節是吸泥泵及刮泥橋狀態(tài)數據信息,第5、6字節為校驗信息。 3.1 S7-300端通信程序 在自由口模式下,無(wú)論S7-200還是S7-300,通信協(xié)議完全由程序控制。CP340通過(guò)調用FB2 P_RCV來(lái)接收數據,調用FB3 P_SEND來(lái)發(fā)送數據。發(fā)送功能塊FB3 P_SEND的參數REQ上升沿初始化發(fā)送請求,參數DB_NO指定發(fā)送數據塊編號,參數DBB_NO是發(fā)送數據在參數DB_NO指定數據塊中起始字節,LEN指定傳輸數據的字節長(cháng)度;接收功能塊FB2 P_RCV參數EN_R允許讀數據,參數DB_NO指定接收數據塊編號,參數DBB_NO是接收數據在參數DB_NO指定數據塊中起始字節。 S7-300采用輪循方式與兩S7-200通信,即第一秒內向1號站發(fā)送數據,然后接收1號站返回的數據(S7-200在接收到S7-300發(fā)送的數據后會(huì )立刻向S7-300發(fā)送數據);第二秒內向2號站發(fā)送數據,然后接收2號站返回的數據,不停地循環(huán)通信。S7-300通信程序流程如圖3。 ![]() 圖3 S7-300通信程序流程圖 S7-300通信程序詳細介紹 AN M 30.0 L S5T#2S SD T 1 A M 30.0 R T 1 L T 1 T MW 40 NOP 0 A T 1 = M 30.0 //設一2秒定時(shí)器,定時(shí)時(shí)間到自動(dòng)進(jìn)行下一次定時(shí),當前值存入MW40 A( L MW 40 L 102 》I 。 A( L MW40 L 200 《I 。 = M30.1 // 定時(shí)器第一秒鐘內,即102《MW40《200,M30.1為1 A( L MW 40 L 2 》I 。 A( L MW 40 L 100 《I 。 = M 30.2 //定時(shí)器第二秒鐘內M30.2為1 A ( A M 30.1 JNB _001 L 0 T MW 34 SET SAVE CLR _001: A BR 。 JNB _002 L 0 T MW 36 _002: NOP 0 // M30.1為1時(shí),即定時(shí)器第一秒內,使MW34=0、MW36=0,作為起始字節值 A ( A M 30.2 JNB _003 L 8 T MW 34 SET SAVE CLR _003: A BR 。 JNB _004 L 8 T MW 36 _004: NOP 0 // M30.2為1時(shí),即定時(shí)器第二秒內,使MW34=8、MW36=8,作為起始字節值 O M 30.1 O M 30.2 = M 33.0 A M 33.0 = L 20.0 BLD 103 CALL “P_SEND” , DB19 REQ :=L20.0 R := LADDR :=320 DB_NO :=2 DBB_NO:=MW34 LEN :=7 DONE :=M50.1 ERROR :=M50.2 STATUS:=MW52 NOP 0 // 調用發(fā)送指令,當M30.1為1時(shí)(其上升沿初始化發(fā)送請求),即定時(shí)器第一秒內發(fā)送DB2.DBB0起始的7個(gè)字節,第一個(gè)字節為1站地址;當M30.2為1時(shí)(其上升沿初始化發(fā)送請求),即定時(shí)器第2秒內發(fā)送DB2.DBB8起始的7個(gè)字節,第一個(gè)字節為2站地址 A M 33.0 = L 20.0 BLD 103 CALL “P_RCV” , DB20 EN_R :=L20.0 R := LADDR :=320 DB_NO :=22 DBB_NO:=MW36 NDR :=M60.1 ERROR :=M60.2 LEN :=MW62 STATUS:=MW64 NOP 0 // 調用接收指令,當M30.1為1時(shí)(允許讀數據),即定時(shí)器第一秒內接收1號S7-200站回傳的6字節數據,存入DB22數據塊中,起始字節為DB22.DBB0;當M30.2為1時(shí),即定時(shí)器第2秒內接收2號S7-200站回傳的6字節數據,存入DB22數據塊中,起始字節為DB22.DBB8 3.2 S7-200端通信程序 S7-200 PLC程序分為主程序、子程序和中斷程序,主程序完成控制和子程序調用功能,子程序完成通信口初始化功能,中斷程序完成數據的接收和發(fā)送功能。發(fā)送數據采用發(fā)送指令XMT,接收數據采用逐字節接收方法,通信口接收每個(gè)字節都會(huì )暫存到特殊存儲器SMB2中,并且產(chǎn)生中斷,利用中斷程序控制數據的接收。由于S7-200CPU的通信是建立在RS-485半雙工通信硬件的基礎上,接收和發(fā)送不能同時(shí)進(jìn)行。通信中斷程序要做到:接收指令不結束,就不能執行發(fā)送指令。 反映S7-200CPU工作方式的模式開(kāi)關(guān)當前位置的特殊存儲器位為SM0.7,它控制自由端口模式的進(jìn)入。當模式開(kāi)關(guān)處于TERM位置時(shí),SM0.7為0;當模式開(kāi)關(guān)處于RUN位置時(shí),SM0.7為1。SMB30是自由口模式控制字節,用來(lái)設定校驗方式、通信協(xié)議、波特率等通信參數(其各個(gè)位含義參閱相關(guān)手冊),中斷事件號8為端口0接收字符中斷,中斷事件號9為端口0發(fā)送完成中斷。 當SM0.7為1時(shí),調用子程序SBR_0設置SMB30,允許進(jìn)行自由口通信;SM0.7為0時(shí),調用子程序SBR_1重新設置SMB30,停止自由口通信,恢復PPI通信,便于用Micro/WIN軟件對CPU運行狀態(tài)進(jìn)行監視。S7-200通信程序流程如圖4 ![]() 圖4 S7-200通信程序流程圖 S7-200通信程序詳細介紹(1號站) 主程序MAIN(只給出與通信有關(guān)程序) LD SM0.1 MOVB 1, VB1 //設置站地址 LD SM0.7 EU O SM0.1 CALL SBR_0 //首次運行或模式開(kāi)關(guān)從TERM打到ON時(shí)定義通信口為自由口 LD SM0.7 ED CALL SBR_1 //模式開(kāi)關(guān)從ON撥到TERM時(shí)定義通信口為PPI從站 子程序SBR_0 LD SM0.0 MOVB 16#09, SMB30 ENI ATCH INT_11, 8 //定義通信口0為自由口模式,9.6K波特率,無(wú)校驗,8位數據位,連接接收字符中斷為中斷程序INT_11 子程序SBR_1 LD SM0.0 MOVB 16#C0, SMB30 DTCH 8 DTCH 9 //恢復普通PPI通信設置 中斷程序INT_11 LD SM0.0 AB= SMB2, VB1 MOVW +5, VW200 MOVD &VB640, VD688 ATCH INT_12, 8 //若站地址正確,連接接收字符中斷到中斷程序INT_12,并使VW200=5來(lái)計數,在INT_12中連續接收五個(gè)字節;若站地址錯誤,則繼續由INT_11接收字節數據,要在S7-300中程序中將其余六個(gè)字節的高位進(jìn)行設計,避免出現為內容1或2地址信息的字節,即使傳輸過(guò)程中因外界干擾,其余六個(gè)字節出現為1或2的假地址情況,程序也會(huì )在接下來(lái)1~2個(gè)接收過(guò)程中,因INT_13中斷程序中的校驗指令作用,得到錯誤校驗值,而恢復到正常接收狀態(tài)。 中斷程序INT_12 LD SM0.0 MOVB SMB2, *VD688 INCD VD688 DECW VW200 //接收5個(gè)字節 LD SM1.0 MOVB 1, VB639 MOVW VW639, VW700 XORW VW641, VW700 ATCH INT_13, 8 //通過(guò)異或指令進(jìn)行數據校驗,連接接收字符中斷到中斷程序INT_13,即由第七個(gè)字節觸發(fā)中斷程序INT_13 中斷程序INT_13 LD SM0.0 DTCH 8 //中斷分離 LDW= VW700, VW643 MOVD VD640, VD400 //校驗正確,將控制信息數據存到VB400~VB402 MOVB 6, VB600 MOVB VB1, VB601 BMB VB100, VB602, 5 ATCH INT_14, 9 XMT VB600, 0 //校驗正確,使能發(fā)送,發(fā)送6字節數據VB601~VB606,連接發(fā)送指令結束到中斷程序INT_14 LDW《》 VW700, VW643 ATCH INT_11, 8 //校驗不正確,連接接收字符中斷到中斷程序INT_11,進(jìn)行新一次接收 中斷程序INT_14 LD SM0.0 DTCH 9 ATCH INT_11, 8 //發(fā)送結束則連接接收字符中斷到中斷程序INT_11,進(jìn)行新一次接收 4 電臺選型和故障判斷 數傳電臺選擇了深圳友訊達科技發(fā)展公司的FC-201/B,該數傳電臺以其價(jià)格合理、運行穩定在國內得到廣泛應用。通過(guò)友訊達提供的電臺軟件pfc5對電臺進(jìn)行參數設置,在S7-200兩個(gè)站處將電臺參數設置為:發(fā)射頻率453.00,接收頻率465.00,空中速率1200bps,工作模式為透明模式,串口波特率9600bps,串口校驗和設為無(wú);在S7-300站處將電臺的參數中發(fā)射頻率設為465.00,接收頻率設為453.00,與S7-200站處電臺收發(fā)頻率對應,其余參數一致。 FC-201/B數傳電臺有一個(gè)發(fā)送和接收指示燈,當發(fā)送數據時(shí)為紅燈,接收數據時(shí)為綠燈。根據此燈可以方便的判斷通訊是否正常,正常情況下,S7-300輪循方式與兩S7-200通信,即第一秒內向1號站發(fā)送數據,然后接收1號站返回的數據(S7-200在接收到S7-300發(fā)送的數據后會(huì )立刻向S7-300發(fā)送數據);第二秒內向2號站發(fā)送數據,然后接收2號站返回的數據,不停地循環(huán)通信。S7-300站處電臺通訊指示燈紅閃一下,接著(zhù)綠閃一下,處在不停的紅-綠-紅-綠循環(huán)狀態(tài)。而S7-200站在接收S7-300發(fā)送的數據時(shí),要經(jīng)過(guò)地址數據字節判斷,確認地址為本站,并且對接收數據進(jìn)行校驗,確定接收數據無(wú)誤才回傳S7-300數據,但是只要S7-300發(fā)送數據,S7-200就接收數據,即使是發(fā)送給另一個(gè)S7-200站的數據。所以在無(wú)外界干擾,數據發(fā)送沒(méi)有校驗錯誤的情況下,S7-200站處的電臺通訊燈是綠閃兩下,紅閃一下,處在不停的綠-綠-紅循環(huán)狀態(tài),即接收兩次數據,發(fā)送一次數據。如果通訊出現故障,根據通訊燈的閃爍狀態(tài),便可很容易查出通訊故障所在。 5 結束語(yǔ) 上位機WINCC通過(guò)訪(fǎng)問(wèn)S7-300的數據塊DB2和DB22,就可以實(shí)現對兩個(gè)S7-200PLC站的監控。自本系統投入運行以來(lái),運行穩定可靠,收到用戶(hù)好評。本通信方案經(jīng)濟、靈活,程序可移植性強,對于類(lèi)似項目具有很高的借鑒意義。 來(lái)源:電子工程網(wǎng) |