一種S7-300與S7-200自由口無線通信實(shí)現(xiàn)方法
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秒定時(shí)器,定時(shí)時(shí)間到自動(dòng)進(jìn)行下一次定時(shí),當(dāng)前值存入MW40
A(
L MW 40
L 102
》I
?。?br /> A(
L MW40
L 200
《I
)
= M30.1
// 定時(shí)器第一秒鐘內(nèi),即102《MW40《200,M30.1為1
A(
L MW 40
L 2
》I
?。?br /> A(
L MW 40
L 100
《I
?。?br /> = M 30.2
//定時(shí)器第二秒鐘內(nèi)M30.2為1
A (
A M 30.1
JNB _001
L 0
T MW 34
SET
SAVE
CLR
_001: A BR
?。?br /> JNB _002
L 0
T MW 36
_002: NOP 0
// M30.1為1時(shí),即定時(shí)器第一秒內(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時(shí),即定時(shí)器第二秒內(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
// 調(diào)用發(fā)送指令,當(dāng)M30.1為1時(shí)(其上升沿初始化發(fā)送請求),即定時(shí)器第一秒內(nèi)發(fā)送DB2.DBB0起始的7個(gè)字節(jié),第一個(gè)字節(jié)為1站地址;當(dāng)M30.2為1時(shí)(其上升沿初始化發(fā)送請求),即定時(shí)器第2秒內(nèi)發(fā)送DB2.DBB8起始的7個(gè)字節(jié),第一個(gè)字節(jié)為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
// 調(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通信程序流程如圖4
圖4 S7-200通信程序流程圖
評論