張國(guó)良
級(jí)別: 探索解密
|
有ABCD三個(gè)風(fēng)機(jī),觸摸屏上可以任意排序,比如A可以是一號(hào)可以是二號(hào)也可以是三號(hào)也可以是四號(hào),BCD同理,現(xiàn)在要求一號(hào)風(fēng)機(jī)開(kāi)10秒停5秒,然后二三四號(hào)依次運(yùn)行,如果是A是一號(hào)B是二號(hào),C是三號(hào),D是四號(hào)這樣固定好了可以寫(xiě)出來(lái),但是ABCD是任意排序的,如果下一次ABCD排序成2341,這樣應(yīng)該怎么寫(xiě),plc是三菱的 |
---|---|
|
yha_4611
QQ: 2490453455私信聊天
級(jí)別: 家園常客
|
每一個(gè)電機(jī)在觸摸屏上已編號(hào),程序中需要比較編號(hào),從一到四執(zhí)行就可以了。 |
|
---|---|---|
|
18857713026
賺點(diǎn)辛苦錢(qián)不容易啊 誒~~~~ 努力賺錢(qián)
級(jí)別: 略有小成
|
程序里就 M0 一號(hào)風(fēng)機(jī) M1 二號(hào)風(fēng)機(jī) M2三號(hào)風(fēng)機(jī) M3四號(hào)風(fēng)機(jī) 屏幕上 D0_定義Y0是幾號(hào)風(fēng)機(jī) D1_Y1 D2_Y2 D3_Y3 LD M8000 MOV D0 Z0 LDM0Z0 OUT Y0 LD M8000 MOV D1 Z0 LDM0Z0 OUT Y1 LD M8000 MOV D2 Z0 LDM0Z0 OUT Y2 LD M8000 MOV D3 Z0 LDM0Z0 OUT Y3 |
---|---|
|
fxe2008
級(jí)別: 探索解密
|
圖片:
你這程序有問(wèn)題呀 |
---|---|
|
夢(mèng)雨天涯
微信hui530527 &
級(jí)別: 網(wǎng)絡(luò)英雄
|
程序僅供參考 三菱任意序號(hào)啟動(dòng),停止延時(shí)(FX3U)_嗶哩嗶哩_bilibili https://www.bilibili.com/video/BV1nH4y1p7pq/ [ 此帖被夢(mèng)雨天涯在2024-03-25 10:43重新編輯 ] |
|
---|---|---|
|
18857713026
賺點(diǎn)辛苦錢(qián)不容易啊 誒~~~~ 努力賺錢(qián)
級(jí)別: 略有小成
|
什么問(wèn)題 ??? ????????????? D0 =0 Y0 = M0 D0 =1 Y1 = M1 D0 =2 Y2 = M2 D0 =3 Y3 = M3 ??????????????????? 不會(huì)為什么Y0沒(méi)亮吧 你看看對(duì)應(yīng)M亮了嗎 不要問(wèn)這么******的問(wèn)題 [ 此帖被18857713026在2024-03-25 11:20重新編輯 ] |
---|---|
|
fxe2008
級(jí)別: 探索解密
|
你沒(méi)發(fā)現(xiàn)我發(fā)的圖片上DO=1的時(shí)候,Z0數(shù)值沒(méi)有變嗎。你模擬下看看,可能和PLC有關(guān)系,我選的是FX3U的 |
---|---|
|
18857713026
賺點(diǎn)辛苦錢(qián)不容易啊 誒~~~~ 努力賺錢(qián)
級(jí)別: 略有小成
|
????????????? PLC是順序更新啊 你能看到當(dāng)然是 Z0的最后一次狀態(tài)啊 你D1 = 0 D0不管等于多少 Z0永遠(yuǎn)是0啊 |
---|---|
|
flyfeky
bilibili 工控貴族
級(jí)別: 論壇先鋒
|
按道理, 這里有個(gè)數(shù)據(jù)結(jié)構(gòu) , 叫做隊(duì)列, 也就是先進(jìn)先出 。 可以自己實(shí)現(xiàn)隊(duì)列算法,如果有現(xiàn)成的也可以。 簡(jiǎn)單的可以如下,不算隊(duì)列算法,具體的啟停邏輯,我下面是不對(duì)的啊. 把 A/B/C/D 用數(shù)字1/2/3/4 分別放到存儲(chǔ)器 D1,D2,D3,D4 中,標(biāo)識(shí)這四個(gè)風(fēng)機(jī)。 多的話(huà)用數(shù)組和循環(huán),比如100個(gè)風(fēng)機(jī)。 Y1 Y2 Y3 Y4 表示輸出。 第一步要設(shè)置 D0 D1 D2 D3的值。 比如2341; / 1234 / 3412/ step的轉(zhuǎn)換條件 就是 時(shí)間到 step:=step+1; case step of 1 : IF D1=1 THEN Y1:=TRUE; // Y1通10S 停2s ELSE IF D1=2 THEN Y2:=TRUE; // Y2通10S 停2s ELSE IF D1=3 THEN Y3:=TRUE; // Y3通10S 停2s ELSE IF D1=4 THEN Y4:=TRUE; // Y4通10S 停2s END IF; 2 : IF D2=1 THEN Y1:=TRUE; ELSE IF D2=2 THEN Y2:=TRUE; ELSE IF D2=3 THEN Y3:=TRUE; ELSE IF D2=4 THEN Y4:=TRUE; END IF; 3: 4: end case; [ 此帖被flyfeky在2024-03-25 22:00重新編輯 ] |
|
---|---|---|
本帖最近評(píng)分記錄:
|
沖出槍林彈雨
沖出槍林彈雨
級(jí)別: 家園常客
|
可以參考,能監(jiān)控當(dāng)前運(yùn)行風(fēng)機(jī)編號(hào),狀態(tài),以及加了停止動(dòng)作 VAR TimerRun : TON; // 運(yùn)行計(jì)時(shí)器 TimerStop : TON; // 停止計(jì)時(shí)器 FanState : ARRAY[1..4] OF BOOL; // 風(fēng)機(jī)狀態(tài)數(shù)組(TRUE-運(yùn)行,F(xiàn)ALSE-停止) CurrentFan : INT; // 當(dāng)前運(yùn)行的風(fēng)機(jī)編號(hào)(1-A,2-B,3-C,4-D) FanOrder : ARRAY[1..4] OF INT := [1, 2, 3, 4]; // 風(fēng)機(jī)排序數(shù)組,可以修改排序 EmergencyStop : BOOL; // 緊急停止按鈕狀態(tài) SafetyInterlock : BOOL; // 安全聯(lián)鎖狀態(tài) END_VAR //初始化 IF NOT TimerRun.Q AND NOT TimerStop.Q AND NOT EmergencyStop AND SafetyInterlock THEN FOR i := 1 TO 4 DO FanState := FALSE; // 所有風(fēng)機(jī)初始狀態(tài)為停止 END_FOR; CurrentFan := FanOrder[1]; // 根據(jù)風(fēng)機(jī)排序數(shù)組確定起始風(fēng)機(jī) TimerRun(IN:=TRUE, PT:=T#10s); // 設(shè)置運(yùn)行計(jì)時(shí)器為10秒 END_IF // 風(fēng)機(jī)運(yùn)行邏輯 IF NOT EmergencyStop AND SafetyInterlock THEN IF TimerRun.Q THEN // 當(dāng)前風(fēng)機(jī)正在運(yùn)行或即將運(yùn)行 IF NOT FanState[CurrentFan] THEN // 啟動(dòng)當(dāng)前風(fēng)機(jī) FanState[CurrentFan] := TRUE; // 這里加入控制當(dāng)前風(fēng)機(jī)啟動(dòng)的代碼 END_IF ELSE // 運(yùn)行時(shí)間到,停止當(dāng)前風(fēng)機(jī) FanState[CurrentFan] := FALSE; // 這里加入控制當(dāng)前風(fēng)機(jī)停止的代碼 TimerStop(IN:=TRUE, PT:=T#5s); // 設(shè)置停止計(jì)時(shí)器為5秒 END_IF IF TimerStop.Q THEN // 停止時(shí)間到,切換到下一個(gè)風(fēng)機(jī) CurrentFan := FanOrder[(CurrentFan MOD 4) + 1]; // 根據(jù)風(fēng)機(jī)排序數(shù)組循環(huán)風(fēng)機(jī)編號(hào) TimerRun(IN:=TRUE, PT:=T#10s); // 重置運(yùn)行計(jì)時(shí)器為10秒 END_IF ELSE // 緊急停止或安全聯(lián)鎖斷開(kāi),停止所有風(fēng)機(jī) FOR i := 1 TO 4 DO FanState := FALSE; END_FOR; TimerRun(IN:=FALSE); // 停止運(yùn)行計(jì)時(shí)器 TimerStop(IN:=FALSE); // 停止停止計(jì)時(shí)器 END_IF |
|
---|---|---|
|