h30631
級(jí)別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 90 個(gè)
工控威望: 230 點(diǎn)
下載積分: 812 分
在線時(shí)間: 339(小時(shí))
注冊(cè)時(shí)間: 2012-09-05
最后登錄: 2018-04-17
查看h30631的 主題 / 回貼
樓主  發(fā)表于: 2013-12-18 08:23
各位前輩好
小弟寫了一段程序如下



M8002 模擬會(huì)不會(huì)停,所以先給值

M100 準(zhǔn)備啟動(dòng)一個(gè)動(dòng)作,M500 開始執(zhí)行動(dòng)作

M2000 需要?jiǎng)幼鞯奈恢,M802 動(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)作,旦是這樣感覺很沒效率
有沒有方法,直接判斷有哪些M是ON的,直接讓他丟M是ON的索引值
這樣忽略M=0 ,可以提升效率

懇請(qǐng)前輩們指點(diǎn)
h30631
級(jí)別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 90 個(gè)
工控威望: 230 點(diǎn)
下載積分: 812 分
在線時(shí)間: 339(小時(shí))
注冊(cè)時(shí)間: 2012-09-05
最后登錄: 2018-04-17
查看h30631的 主題 / 回貼
1樓  發(fā)表于: 2013-12-18 08:29
我剛剛新增編碼指令進(jìn)去



可惜它只能從高位開始動(dòng)作,不能從低位開始
而且最後所有都變成oFF會(huì)出錯(cuò)
請(qǐng)問各位前輩有其他方法嗎?
感謝~!
litung
臺(tái)灣-李同在
級(jí)別: VIP會(huì)員
精華主題: 2 篇
發(fā)帖數(shù)量: 577 個(gè)
工控威望: 3224 點(diǎn)
下載積分: 14494 分
在線時(shí)間: 405(小時(shí))
注冊(cè)時(shí)間: 2009-06-06
最后登錄: 2024-12-23
查看litung的 主題 / 回貼
2樓  發(fā)表于: 2013-12-18 09:24
ENCO不能全為OFF <會(huì)產(chǎn)生操作錯(cuò)誤>
只要讓其中一個(gè)M值一直會(huì)ON,就可以解決了。

不知道你這個(gè)用途是要應(yīng)用在那邊?
我是都拿來作異常碼的使用。
若是的話,你也可以用F來試試看。
樓主留言:
感謝回覆
簡(jiǎn)單的心,是真正有福
單純的心,是真正的快樂    
T480 i5-8250U,32GB,SSD:2TB+256G
h30631
級(jí)別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 90 個(gè)
工控威望: 230 點(diǎn)
下載積分: 812 分
在線時(shí)間: 339(小時(shí))
注冊(cè)時(shí)間: 2012-09-05
最后登錄: 2018-04-17
查看h30631的 主題 / 回貼
3樓  發(fā)表于: 2013-12-18 09:44
回樓上大哥

其實(shí)我這個(gè)動(dòng)作是這樣的

M2000~M2250 其中可能有幾個(gè)M是ON的,也可能全部都是OFF的、也可能全部都是ON的

然後我需要作一個(gè)判斷,直接把有ON的抓出來,依照順序(編號(hào)小的先),讓他去觸發(fā)一個(gè)動(dòng)作(另一個(gè)M)

等待那ㄧ個(gè)動(dòng)作完成後,會(huì)給一個(gè)完成訊號(hào),把此次的M復(fù)歸掉,然後繼續(xù)把下一個(gè)M2000~M2250 中有ON的丟進(jìn)來

例如 : M2000 成立執(zhí)行M500 ,執(zhí)行完成復(fù)歸M500 復(fù)歸M2000,假設(shè)M2001為OFF M2002為ON,

他會(huì)值接抓M2002進(jìn)來,再ㄧ次觸發(fā)M500,最後直到M2000~M2250都為OFF 就結(jié)束整個(gè)動(dòng)作

我這個(gè)M2000~M2250 是用來代表位置的,所以必須依照大小順序來觸發(fā)M500

請(qǐng)問前輩有沒有好的方法來做呢?

謝謝
john42tw
級(jí)別: 網(wǎng)絡(luò)英雄
精華主題: 0
發(fā)帖數(shù)量: 1278 個(gè)
工控威望: 6109 點(diǎn)
下載積分: 52362 分
在線時(shí)間: 1123(小時(shí))
注冊(cè)時(shí)間: 2012-04-24
最后登錄: 2024-12-25
查看john42tw的 主題 / 回貼
4樓  發(fā)表于: 2013-12-18 13:43
引用
引用第3樓h30631于2013-12-18 09:44發(fā)表的  :
回樓上大哥

其實(shí)我這個(gè)動(dòng)作是這樣的

M2000~M2250 其中可能有幾個(gè)M是ON的,也可能全部都是OFF的、也可能全部都是ON的
.......

用迴圈來做呢?
樓主留言:
真誠(chéng)感謝!

請(qǐng)問是
for next嗎?
天空流星
SZ-CL
級(jí)別: 網(wǎng)絡(luò)英雄
精華主題: 0
發(fā)帖數(shù)量: 571 個(gè)
工控威望: 6193 點(diǎn)
下載積分: 20503 分
在線時(shí)間: 560(小時(shí))
注冊(cè)時(shí)間: 2008-03-17
最后登錄: 2024-12-24
查看天空流星的 主題 / 回貼
5樓  發(fā)表于: 2013-12-18 15:41
還是沒明白你到想要實(shí)現(xiàn)的動(dòng)作,到底光處理數(shù)據(jù),還是選取動(dòng)作
看下SUM這個(gè)指令對(duì)你有沒有用,配合ENCO也行
你所說的效率,其實(shí)也就PLC250個(gè)掃描周期,就是用1S也就1秒吧,
要是真的有影響,是不是考慮運(yùn)算和執(zhí)行同時(shí)走,第一個(gè)位置出來后,運(yùn)算繼續(xù)運(yùn)行把下一個(gè)的位置算出來,
或是一次性把M的地址都運(yùn)算出來,就是每個(gè)M的偏移值都取出來,執(zhí)行時(shí)直接使用
樓主留言:
真誠(chéng)感謝!

目前我是先依次性把M都算出來

但是就是不知道如何把這些M取出
然後依小到大順序去觸發(fā)M500
john42tw
級(jí)別: 網(wǎng)絡(luò)英雄
精華主題: 0
發(fā)帖數(shù)量: 1278 個(gè)
工控威望: 6109 點(diǎn)
下載積分: 52362 分
在線時(shí)間: 1123(小時(shí))
注冊(cè)時(shí)間: 2012-04-24
最后登錄: 2024-12-25
查看john42tw的 主題 / 回貼
6樓  發(fā)表于: 2013-12-18 16:16
參考看看  M500 開始搜尋

M500      
---|^|-------------------------[MOV K0 Z0]
---[> Z0 K249]---|

M500      M0Z0
---||----------||----------------[SET  M0Z0]
         |              |-----------[RST  M500]
         |     M0Z0
         |-------|/|---------------[+ Z0 K1 Z0]
樓主留言:
感謝大哥分享

這段跟我寫的方式一樣

都要全部掃描過

我想說能不能更快的,忽略0
直接抓1出來用
天空流星
SZ-CL
級(jí)別: 網(wǎng)絡(luò)英雄
精華主題: 0
發(fā)帖數(shù)量: 571 個(gè)
工控威望: 6193 點(diǎn)
下載積分: 20503 分
在線時(shí)間: 560(小時(shí))
注冊(cè)時(shí)間: 2008-03-17
最后登錄: 2024-12-24
查看天空流星的 主題 / 回貼
7樓  發(fā)表于: 2013-12-19 12:27
圖片:
圖片:
引用
引用第5樓king125于2013-12-18 15:41發(fā)表的  :
還是沒明白你到想要實(shí)現(xiàn)的動(dòng)作,到底光處理數(shù)據(jù),還是選取動(dòng)作
看下SUM這個(gè)指令對(duì)你有沒有用,配合ENCO也行
你所說的效率,其實(shí)也就PLC250個(gè)掃描周期,就是用1S也就1秒吧,
要是真的有影響,是不是考慮運(yùn)算和執(zhí)行同時(shí)走,第一個(gè)位置出來后,運(yùn)算繼續(xù)運(yùn)行把下一個(gè)的位置算出來,
或是一次性把M的地址都運(yùn)算出來,就是每個(gè)M的偏移值都取出來,執(zhí)行時(shí)直接使用


M0    開始運(yùn)算
M1    開始執(zhí)行
D100    需要執(zhí)行的編號(hào)


加D2不等于0的條件
就是沒有需要執(zhí)行的
樓主留言:
真誠(chéng)感謝!

這一開始如果m1999沒有on
就會(huì)卡在那邊
這該怎麼辦?
[ 此帖被king125在2013-12-19 14:06重新編輯 ]
h30631
級(jí)別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 90 個(gè)
工控威望: 230 點(diǎn)
下載積分: 812 分
在線時(shí)間: 339(小時(shí))
注冊(cè)時(shí)間: 2012-09-05
最后登錄: 2018-04-17
查看h30631的 主題 / 回貼
8樓  發(fā)表于: 2013-12-19 14:57
引用
引用第7樓king125于2013-12-19 12:27發(fā)表的  :


M0    開始運(yùn)算
M1    開始執(zhí)行
D100    需要執(zhí)行的編號(hào)
.......


請(qǐng)問為什麼要從M1999和D999開始?
不是從M2000、D1000開始嗎?

您的方法是用D1000到D1250暫存器
依序把需要執(zhí)行的位置放進(jìn)去
完成訊號(hào)M802 把Z1位置減1

有點(diǎn)看不明白,煩請(qǐng)前輩指點(diǎn)
天空流星
SZ-CL
級(jí)別: 網(wǎng)絡(luò)英雄
精華主題: 0
發(fā)帖數(shù)量: 571 個(gè)
工控威望: 6193 點(diǎn)
下載積分: 20503 分
在線時(shí)間: 560(小時(shí))
注冊(cè)時(shí)間: 2008-03-17
最后登錄: 2024-12-24
查看天空流星的 主題 / 回貼
9樓  發(fā)表于: 2013-12-20 10:31
引用
引用第8樓h30631于2013-12-19 14:57發(fā)表的  :


請(qǐng)問為什麼要從M1999和D999開始?
不是從M2000、D1000開始嗎?

.......


從M1999開始是防止有編號(hào)1的時(shí)候出錯(cuò),而且D2是需要執(zhí)行的計(jì)數(shù),數(shù)量是從1開始的,不能從0開始,所以向前移動(dòng)了一位
需要執(zhí)行的編號(hào)放到D1000中,放下一個(gè)需要執(zhí)行的編號(hào)時(shí)先把D1000原來的數(shù)據(jù)移到D1001 ,字左移指令
D2就是第一個(gè)記錄的最大那個(gè)地址的編號(hào),所以執(zhí)行一次就減1,來執(zhí)行下一個(gè),減到0就是完成
樓主留言:
熱心助人!

感謝前輩指點(diǎn)

我了解了