程序段與指令的區(qū)別,請問STL中程序段結(jié)束的標(biāo)志是什么?
劉玉蓉
發(fā)布于2014-11-26 17:30
3
0
標(biāo)簽:
今天發(fā)現(xiàn)把一個(gè)梯形圖轉(zhuǎn)換成指令表語句,如下圖,save將結(jié)果位保存后,又將rlo清零,BR位是用于程序段之間的導(dǎo)通嗎?RLO用于指令之間的導(dǎo)通嗎?那么程序段包含幾個(gè)指令,程序段的標(biāo)志是什么,我怎么能看出這幾個(gè)指令是屬于一個(gè)程序段呢?
問題補(bǔ)充:
我還是沒弄清楚,
A(
L "MT510".Powder1
BTI
T #temp1
SET
SAVE
CLR
A BR
)
上面的值到底是0,還是1,按說RLO為0了,再同BR與,是不是就等于0了,結(jié)果跳到_005,于是就跳過了中間的程序,這樣又與梯形圖愿意不對,到底是什么意思啊???
圖片說明: 1,附圖
佳答案
轉(zhuǎn)帖:
A(
L "MT510".Powder1
BTI
T #temp1
SET
SAVE
CLR
A BR
)
JNB _005
L 9
T #temp10
_005: NOP 0
上面的那段代碼是由梯形圖轉(zhuǎn)換而來的,首先將"MT510".Powder1
做BCD-I轉(zhuǎn)換并存于temp1,然后將9傳送到temp10,兩個(gè)指令串聯(lián)在一起。
現(xiàn)有如下問題向各位請教:
1、BTI指令執(zhí)行完成后BR位自動(dòng)置位嗎?還是需要SAVE?
2、上段中的SET、SAVE及CLR用途何在?
3、在一個(gè)NetWork中串聯(lián)執(zhí)行多個(gè)指令或并聯(lián)執(zhí)行多個(gè)指令時(shí),該如何處理?
回答:
首先弄清BR位:狀態(tài)字的第8位稱為二進(jìn)制結(jié)果位。它將字處理程序與位處理聯(lián)系起來,在一段既有位操作又有字操作的程序中,用于表示字邏輯是否正確。將BR位加入程序后,無論字操作結(jié)果如何,都不會(huì)造成二進(jìn)制邏輯鏈中斷。
1. 因?yàn)樯厦娴哪嵌未a是由梯形圖轉(zhuǎn)換而來的。出現(xiàn)了“SET、SAVE及CLR”。就此而論,在做BCD-I轉(zhuǎn)換并存于temp1后,SET與SAVE兩指令。SET即將狀態(tài)字RLO置位;SAVE將RLO保存到狀態(tài)字的BR位。此時(shí)表示功能被正確執(zhí)行,即BR位為1.
2. CLR / 將狀態(tài)字RLO復(fù)位,以免影響下面的指令。
A BR / 此時(shí)BR位為1,RLO=0
)
JNB _005 / 若BR=1且RLO=0,則跳轉(zhuǎn)到005。
L 9 / 此時(shí)BR=1且RLO=1
T #temp10
_005: NOP 0
3. 在一個(gè)NetWork中串聯(lián)執(zhí)行多個(gè)指令或并聯(lián)執(zhí)行多個(gè)指令時(shí),該如何處理?
一般不要顧及用SAVE指令保存RLO。在下面的情況可用:
在一個(gè)邏輯塊中需檢另一查邏輯塊的BR位。
例如:在用戶編寫的FB/FC程序中,應(yīng)該對BR位進(jìn)行管理,功能塊正確執(zhí)行后,使BR位為1,否則使其為0。使用SAVE指令將RLO存入BR中,從而達(dá)到管理BR位目的。