NetR/Net如何判讀一次讀寫已經(jīng)完成
劉玉蓉
發(fā)布于2014-10-09 15:30
11
0
標簽:
NETW NETR指令中數(shù)據(jù)塊緩存區(qū)有D A E幾個標志位
D是功能完成
是否可以理解為一次讀或者一次寫 完成 就會D為1
那么第二次讀寫完成如何知道呢?是否需要在第二次讀寫前,程序里先把D寫為0.
E是發(fā)生錯誤 是否只要一旦發(fā)生錯誤 就會E=1 整個通信就會停止
程序里把E寫為0 是否就會重新通信?
問題補充:
!
第三條有一點疑問
你說的狀態(tài)字清除是調(diào)用一次NetW嗎?
即:
LD Always_On
NETW VB100, 0
還是自己用其他指令復(fù)位,
VB100為狀態(tài)字節(jié)
比如:
LD Always_On
R V100.7, 1
或者
LD Always_On
MOVB 0, VB100
還是說兩種方法都可以?
在S7 200沒看到更多狀態(tài)字的細節(jié)描述
//-----------------------------------------
3、那么第二次讀寫完成如何知道呢?是否需要在第二次讀寫前,程序里先把D寫為0.?
是的。當執(zhí)行一次網(wǎng)絡(luò)讀寫指令NetR/NetW后,要編程將緩沖區(qū)的數(shù)據(jù)進行相應(yīng)處理后,要用NetW指令發(fā)一條信息來清除狀態(tài)字。
圖片說明: 1,讀寫標志位
佳答案
1、有關(guān)參數(shù)代碼:
D:操作已完成。0=未完成,1=已完成。
A:操作已排隊。0=無效,1=有效。
E:操作返回一個錯誤。0=無錯誤,1=錯誤。
2、是否可以理解為一次讀或者一次寫 完成 就會D為1?
是的。執(zhí)行一次網(wǎng)絡(luò)讀寫指令NetR/NetW上述有關(guān)參數(shù)代碼就重置一次。
3、那么第二次讀寫完成如何知道呢?是否需要在第二次讀寫前,程序里先把D寫為0.?
是的。當執(zhí)行一次網(wǎng)絡(luò)讀寫指令NetR/NetW后,要編程將緩沖區(qū)的數(shù)據(jù)進行相應(yīng)處理后,要用NetW指令發(fā)一條信息來清除狀態(tài)字。
4、E是發(fā)生錯誤 是否只要一旦發(fā)生錯誤 就會E=1 整個通信就會停止?
是的。此時根據(jù)錯誤代碼來進行相應(yīng)的處理。
5、程序里把E寫為0 是否就會重新通信?
必須是錯誤被排除后,即沒有錯誤才可以,否則E還是置位。
6、使用用NetR/NetW時,應(yīng)當注意:
避免簡單地定時激活NetR/NetW:由于串行通信的特點(如上所述),無法得知何時真正結(jié)束。如果定時進行網(wǎng)絡(luò)讀寫通信,必須判斷此次通信是否正常結(jié)束
同時有效的NetR/NetW指令不能超過8個,否則通信請求隊列會超出操作系統(tǒng)的管理能力
使用SM0.0調(diào)用網(wǎng)絡(luò)讀寫指令,雖然能長期工作,但不能超過8個指令,而且會出現(xiàn)監(jiān)控時指令塊變?yōu)榧t色的現(xiàn)象,好還是加上必要的讀寫狀態(tài)判斷條件。
簡單可靠的方法,是使用Micro/WIN中的NetR/NetW Wizard(網(wǎng)絡(luò)讀寫指令向?qū)В?br />使用NetR/NetW向?qū)Э梢跃庉嫸?4條網(wǎng)絡(luò)讀寫指令,其核心是使用順序控制指令,這樣在任一時刻只有一條NetR/NetW指令有效。如果要求超出24條網(wǎng)絡(luò)讀寫指令,可以自己按照此方法編程。
7、如果不使用向?qū)ё约壕幊?,建議看看:
<S7-200 可編程控制器系統(tǒng)手冊>下載:
https://www2.ad.siemens.com.cn/download/Upload/AS/manual/1017[2].pdf