一種S7-300與S7-200自由口無線通信實現(xiàn)方法
1 項目簡介
濱州市污水處理廠占地100萬立方米。采用德國BIOLAK污水處理工藝,日處理水規(guī)模為10萬立方米。項目使用四套S7-300和兩套S7-200建成分布式控制系統(tǒng),完成整個污水處理的控制、數(shù)據(jù)采集功能,本文僅敘述了項目的一部分——S7-300和S7-200通信內(nèi)容。
S7-200PLC作為小型PLC,以其功能強、性價比高在工控領(lǐng)域中被廣泛應(yīng)用。在S7-200與S7-300或WINCC通信時,通常需要安裝EM277或CP243-1模塊,成本升高,使得S7-200性價比優(yōu)勢大打折扣。自由口通信是S7-200的突出特點之一,本文介紹了一種經(jīng)濟靈活的通信方法,其可行性、可靠性在實際工程中得到驗證。圖1為濱州污水處理廠監(jiān)控中心。
圖1 濱州污水處理廠監(jiān)控中心
2 工程應(yīng)用中的硬件及網(wǎng)絡(luò)結(jié)構(gòu)濱州污水處理廠自動化監(jiān)控系統(tǒng)中,兩刮泥橋上各有一臺S7-200PLC,每臺PLC控制8臺吸泥泵及刮泥橋的正反向運動。S7-200PLC的柜子安裝在刮泥橋上,處于不停地來回運動中,不適合進行有線通信,采取了無線數(shù)傳電臺方式。
S7-200CPU上的通信口是基于RS485的,通過一個RS485/232轉(zhuǎn)換器將S7-200連接到電臺;在脫水機房的S7-300上掛一串口通信模塊CP340,并連接到數(shù)傳電臺,通過編程便可以實現(xiàn)S7-300與S7-200間的通信;監(jiān)控室的上位機以MPI總線方式與S7-300通信,便可間接監(jiān)控S7-200。系統(tǒng)網(wǎng)絡(luò)結(jié)構(gòu)如圖2
3 通信功能的實現(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)通信。S7-300通信程序流程如圖3。
圖3 S7-300通信程序流程圖
S7-300通信程序詳細(xì)介紹
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
//設(shè)一2秒定時器,定時時間到自動進行下一次定時,當(dāng)前值存入MW40
A(
L MW 40
L 102
>I
)
A(
L MW40
L 200
<I
)
= M30.1
// 定時器第一秒鐘內(nèi),即102<MW40<200,M30.1為1
A(
L MW 40
L 2
>I
)
A(
L MW 40
L 100
<I
)
= M 30.2
//定時器第二秒鐘內(nèi)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時,即定時器第一秒內(nèi),使MW34=0、MW36=0,作為起始字節(jié)值
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時,即定時器第二秒內(nèi),使MW34=8、MW36=8,作為起始字節(jié)值
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
文章版權(quán)歸西部工控xbgk所有,未經(jīng)許可不得轉(zhuǎn)載。