求s7-200自由通信
劉玉蓉
發(fā)布于2014-12-01 17:29
48
0
標(biāo)簽:
想用s7-200與一臺(tái)蠕動(dòng)泵進(jìn)行自由通信,不知道程序怎么寫(自己寫了一個(gè)發(fā)送沒(méi)有問(wèn)題接收收不到數(shù)據(jù))報(bào)文的形勢(shì)是數(shù)據(jù)長(zhǎng)度·e9·數(shù)據(jù)·校驗(yàn)碼,一發(fā)一收就可以不用
問(wèn)題補(bǔ)充:
發(fā)送的數(shù)據(jù)跟報(bào)文一樣,就是接收的報(bào)文不對(duì),
圖片說(shuō)明: 1,這是我寫的程序 2,這是我寫的程序 3,這是我寫的程序
佳答案
RCV指令的基本工作過(guò)程為:
1、在邏輯條件滿足時(shí),啟動(dòng)(一次)RCV指令,進(jìn)入接收等待狀態(tài)
2、監(jiān)視通信端口,等待設(shè)置的消息起始條件滿足,然后進(jìn)入消息接收狀態(tài)
3、如果滿足了設(shè)置的消息結(jié)束條件,則結(jié)束消息,然后退出接收狀態(tài)
所以,RCV指令啟動(dòng)后并不一定就接收消息,如果沒(méi)有讓它開(kāi)始消息接收的條件,就一直處于等待接收的狀態(tài);如果消息始終沒(méi)有開(kāi)始或者結(jié)束,通信口就一直處于接收狀態(tài)。這時(shí)如果嘗試執(zhí)行XMT指令,就不會(huì)發(fā)送任何消息。
看到你在發(fā)送完的中斷中接收數(shù)據(jù),但是測(cè)試時(shí)候可以采用smb2接受字符,而不用RCV指令??刹捎萌缦鲁绦?,判斷接收字符是否正確。
MAIN:
LD SM0.1
MOVB 16#49, SMB30 //自由口,9600,偶校驗(yàn)
MOVD &VB4, VD0
ATCH INT_0:INT0, 8 //連接8號(hào)中斷
ENI
INT_0:
LD SM0.0
MOVB SMB2, *VD0 //將接收到的字符依次存入VB4等
INCD VD0