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