西門子S120電源模塊6SL3120-1TE24-5AA0詳解
通信功能的實現(xiàn) 通信程序要實現(xiàn)S7-300向一個S7-200站發(fā)送7個字節(jié)的數(shù)據(jù),然后接收并存儲該S7-200返回的6個字節(jié)數(shù)據(jù)。S7-300發(fā)送的7個字節(jié)中,第1個字節(jié)是地址信息,第2、3、4字節(jié)是吸泥泵及刮泥橋控制數(shù)據(jù)信息,第5、6字節(jié)是1、2字節(jié)和3、4字節(jié)異或值,作為校驗判斷信息,第7位字節(jié)數(shù)據(jù)信息無意義,僅僅是為了觸發(fā)一次S7-200的字符接收中斷程序;S7-200向S7-300發(fā)送的6個字節(jié)中,第1個字節(jié)是S7-200的站地址信息,第2、3、4字節(jié)是吸泥泵及刮泥橋狀態(tài)數(shù)據(jù)信息,第5、6字節(jié)為校驗信息。 3.1 S7-300端通信程序 在自由口模式下,無論S7-200還是S7-300,通信協(xié)議由程序控制。CP340通過調(diào)用FB2 P_RCV來接收數(shù)據(jù),調(diào)用FB3 P_SEND來發(fā)送數(shù)據(jù)。發(fā)送功能塊FB3 P_SEND的參數(shù)REQ上升沿初始化發(fā)送請求,參數(shù)DB_NO發(fā)送數(shù)據(jù)塊編號,參數(shù)DBB_NO是發(fā)送數(shù)據(jù)在參數(shù)DB_NO數(shù)據(jù)塊中起始字節(jié),LEN傳輸數(shù)據(jù)的字節(jié)長度;接收功能塊FB2 P_RCV參數(shù)EN_R允許讀數(shù)據(jù),參數(shù)DB_NO接收數(shù)據(jù)塊編號,參數(shù)DBB_NO是接收數(shù)據(jù)在參數(shù)DB_NO數(shù)據(jù)塊中起始字節(jié)。 S7-300采用輪循方式與兩S7-200通信,即第一秒內(nèi)向1號站發(fā)送數(shù)據(jù),然后接收1號站返回的數(shù)據(jù)(S7-200在接收到S7-300發(fā)送的數(shù)據(jù)后會立刻向S7-300發(fā)送數(shù)據(jù));第二秒內(nèi)向2號站發(fā)送數(shù)據(jù),然后接收2號站返回的數(shù)據(jù),不停地循環(huán)通信 調(diào)用接收指令,當M30.1為1時(允許讀數(shù)據(jù)),即定時器第一秒內(nèi)接收1號S7-200站回傳的6字節(jié)數(shù)據(jù),存入DB22數(shù)據(jù)塊中,起始字節(jié)為DB22.DBB0;當M30.2為1時,即定時器第2秒內(nèi)接收2號S7-200站回傳的6字節(jié)數(shù)據(jù),存入DB22數(shù)據(jù)塊中,起始字節(jié)為DB22.DBB8 3.2 S7-200端通信程序 S7-200 PLC程序分為主程序、子程序和中斷程序,主程序完成控制和子程序調(diào)用功能,子程序完成通信口初始化功能,中斷程序完成數(shù)據(jù)的接收和發(fā)送功能。發(fā)送數(shù)據(jù)采用發(fā)送指令XMT,接收數(shù)據(jù)采用逐字節(jié)接收方法,通信口接收每個字節(jié)都會暫存到特殊存儲器SMB2中,并且產(chǎn)生中斷,利用中斷程序控制數(shù)據(jù)的接收。由于S7-200CPU的通信是建立在RS-485半雙工通信硬件的基礎上,接收和發(fā)送不能同時進行。通信中斷程序要做到:接收指令不結(jié)束,就不能執(zhí)行發(fā)送指令。 反映S7-200CPU工作方式的模式開關當前位置的特殊存儲器位為SM0.7,它控制自由端口模式的進入。當模式開關處于TERM位置時,SM0.7為0;當模式開關處于RUN位置時,SM0.7為1。SMB30是自由口模式控制字節(jié),用來設定校驗方式、通信協(xié)議、波特率等通信參數(shù)(其各個位含義參閱相關手冊),中斷事件號8為端口0接收字符中斷,中斷事件號9為端口0發(fā)送完成中斷。 當SM0.7為1時,調(diào)用子程序SBR_0設置SMB30,允許進行自由口通信;SM0.7為0時,調(diào)用子程序SBR_1重新設置SMB30,停止自由口通信,恢復PPI通信,便于用Micro/WIN軟件對CPU運行狀態(tài)進行監(jiān)視。 S7-200通信程序詳細介紹(1號站) 主程序MAIN(只給出與通信有關程序) LD SM0.1 MOVB 1, VB1 //設置站地址 LD SM0.7 EU O SM0.1 CALL SBR_0 //運行或模式開關從TERM打到ON時定義通信口為自由口 LD SM0.7 ED CALL SBR_1 //模式開關從ON撥到TERM時定義通信口為PPI從站 子程序SBR_0 LD SM0.0 MOVB 16#09, SMB30 ENI ATCH INT_11, 8 //定義通信口0為自由口模式,9.6K波特率,無校驗,8位數(shù)據(jù)位,連接接收字符中斷為中斷程序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來計數(shù),在INT_12中連續(xù)接收五個字節(jié);若站地址錯誤,則繼續(xù)由INT_11接收字節(jié)數(shù)據(jù),要在S7-300中程序中將其余六個字節(jié)的高位進行設計,避免出現(xiàn)為內(nèi)容1或2地址信息的字節(jié),即使傳輸過程中因外界干擾,其余六個字節(jié)出現(xiàn)為1或2的假地址情況,程序也會在接下來1~2個接收過程中,因INT_13中斷程序中的校驗指令作用,得到錯誤校驗值,而恢復到正常接收狀態(tài)。 中斷程序INT_12 LD SM0.0 MOVB SMB2, *VD688 INCD VD688 DECW VW200 //接收5個字節(jié) LD SM1.0 MOVB 1, VB639 MOVW VW639, VW700 XORW VW641, VW700 ATCH INT_13, 8 //通過異或指令進行數(shù)據(jù)校驗,連接接收字符中斷到中斷程序INT_13,即由第七個字節(jié)觸發(fā)中斷程序INT_13 中斷程序INT_13 LD SM0.0 DTCH 8
|