h30631
級(jí)別: 略有小成
|
各位前輩好 小弟寫(xiě)了一段程序如下 M8002 模擬會(huì)不會(huì)停,所以先給值 M100 準(zhǔn)備啟動(dòng)一個(gè)動(dòng)作,M500 開(kāi)始執(zhí)行動(dòng)作 M2000 需要?jiǎng)幼鞯奈恢茫琈802 動(dòng)作完觸發(fā) 最後是定義位置範(fàn)圍 現(xiàn)在是因?yàn)槊孔魍暌淮蝿?dòng)作會(huì)把V0+1,如果M為0就繼續(xù)+1 M為1時(shí)停止+1並執(zhí)行動(dòng)作,旦是這樣感覺(jué)很沒(méi)效率 有沒(méi)有方法,直接判斷有哪些M是ON的,直接讓他丟M是ON的索引值 這樣忽略M=0 ,可以提升效率 懇請(qǐng)前輩們指點(diǎn) |
---|---|
|
h30631
級(jí)別: 略有小成
|
我剛剛新增編碼指令進(jìn)去 可惜它只能從高位開(kāi)始動(dòng)作,不能從低位開(kāi)始 而且最後所有都變成oFF會(huì)出錯(cuò) 請(qǐng)問(wèn)各位前輩有其他方法嗎? 感謝~! |
---|---|
|
litung
臺(tái)灣-李同在
級(jí)別: VIP會(huì)員
|
ENCO不能全為OFF <會(huì)產(chǎn)生操作錯(cuò)誤> 只要讓其中一個(gè)M值一直會(huì)ON,就可以解決了。 不知道你這個(gè)用途是要應(yīng)用在那邊? 我是都拿來(lái)作異常碼的使用。 若是的話(huà),你也可以用F來(lái)試試看。 樓主留言:感謝回覆 |
|
---|---|---|
|
h30631
級(jí)別: 略有小成
|
回樓上大哥 其實(shí)我這個(gè)動(dòng)作是這樣的 M2000~M2250 其中可能有幾個(gè)M是ON的,也可能全部都是OFF的、也可能全部都是ON的 然後我需要作一個(gè)判斷,直接把有ON的抓出來(lái),依照順序(編號(hào)小的先),讓他去觸發(fā)一個(gè)動(dòng)作(另一個(gè)M) 等待那ㄧ個(gè)動(dòng)作完成後,會(huì)給一個(gè)完成訊號(hào),把此次的M復(fù)歸掉,然後繼續(xù)把下一個(gè)M2000~M2250 中有ON的丟進(jìn)來(lái) 例如 : M2000 成立執(zhí)行M500 ,執(zhí)行完成復(fù)歸M500 復(fù)歸M2000,假設(shè)M2001為OFF M2002為ON, 他會(huì)值接抓M2002進(jìn)來(lái),再ㄧ次觸發(fā)M500,最後直到M2000~M2250都為OFF 就結(jié)束整個(gè)動(dòng)作 我這個(gè)M2000~M2250 是用來(lái)代表位置的,所以必須依照大小順序來(lái)觸發(fā)M500 請(qǐng)問(wèn)前輩有沒(méi)有好的方法來(lái)做呢? 謝謝 |
---|---|
|
john42tw
級(jí)別: 網(wǎng)絡(luò)英雄
|
用迴圈來(lái)做呢? 樓主留言:真誠(chéng)感謝! |
---|---|
|
天空流星
SZ-CL
級(jí)別: 網(wǎng)絡(luò)英雄
|
還是沒(méi)明白你到想要實(shí)現(xiàn)的動(dòng)作,到底光處理數(shù)據(jù),還是選取動(dòng)作 看下SUM這個(gè)指令對(duì)你有沒(méi)有用,配合ENCO也行 你所說(shuō)的效率,其實(shí)也就PLC250個(gè)掃描周期,就是用1S也就1秒吧, 要是真的有影響,是不是考慮運(yùn)算和執(zhí)行同時(shí)走,第一個(gè)位置出來(lái)后,運(yùn)算繼續(xù)運(yùn)行把下一個(gè)的位置算出來(lái), 或是一次性把M的地址都運(yùn)算出來(lái),就是每個(gè)M的偏移值都取出來(lái),執(zhí)行時(shí)直接使用 樓主留言:真誠(chéng)感謝! |
---|---|
|
john42tw
級(jí)別: 網(wǎng)絡(luò)英雄
|
參考看看 M500 開(kāi)始搜尋 M500 ---|^|-------------------------[MOV K0 Z0] ---[> Z0 K249]---| M500 M0Z0 ---||----------||----------------[SET M0Z0] | |-----------[RST M500] | M0Z0 |-------|/|---------------[+ Z0 K1 Z0] 樓主留言:感謝大哥分享 |
---|---|
|
天空流星
SZ-CL
級(jí)別: 網(wǎng)絡(luò)英雄
|
圖片:
圖片:
M0 開(kāi)始運(yùn)算 M1 開(kāi)始執(zhí)行 D100 需要執(zhí)行的編號(hào) 加D2不等于0的條件 就是沒(méi)有需要執(zhí)行的 樓主留言:真誠(chéng)感謝! [ 此帖被king125在2013-12-19 14:06重新編輯 ] |
---|---|
|
h30631
級(jí)別: 略有小成
|
請(qǐng)問(wèn)為什麼要從M1999和D999開(kāi)始? 不是從M2000、D1000開(kāi)始嗎? 您的方法是用D1000到D1250暫存器 依序把需要執(zhí)行的位置放進(jìn)去 完成訊號(hào)M802 把Z1位置減1 有點(diǎn)看不明白,煩請(qǐng)前輩指點(diǎn) |
---|---|
|
天空流星
SZ-CL
級(jí)別: 網(wǎng)絡(luò)英雄
|
從M1999開(kāi)始是防止有編號(hào)1的時(shí)候出錯(cuò),而且D2是需要執(zhí)行的計(jì)數(shù),數(shù)量是從1開(kāi)始的,不能從0開(kāi)始,所以向前移動(dòng)了一位 需要執(zhí)行的編號(hào)放到D1000中,放下一個(gè)需要執(zhí)行的編號(hào)時(shí)先把D1000原來(lái)的數(shù)據(jù)移到D1001 ,字左移指令 D2就是第一個(gè)記錄的最大那個(gè)地址的編號(hào),所以執(zhí)行一次就減1,來(lái)執(zhí)行下一個(gè),減到0就是完成 樓主留言:熱心助人! |
---|---|
|