張國良
級別: 探索解密
|
有ABCD三個(gè)風(fēng)機(jī),觸摸屏上可以任意排序,比如A可以是一號可以是二號也可以是三號也可以是四號,BCD同理,現(xiàn)在要求一號風(fēng)機(jī)開10秒停5秒,然后二三四號依次運(yùn)行,如果是A是一號B是二號,C是三號,D是四號這樣固定好了可以寫出來,但是ABCD是任意排序的,如果下一次ABCD排序成2341,這樣應(yīng)該怎么寫,plc是三菱的 |
---|---|
|
yha_4611
QQ: 2490453455私信聊天
級別: 家園?
|
每一個(gè)電機(jī)在觸摸屏上已編號,程序中需要比較編號,從一到四執(zhí)行就可以了。 |
|
---|---|---|
|
18857713026
賺點(diǎn)辛苦錢不容易啊 誒~~~~ 努力賺錢
級別: 略有小成
|
程序里就 M0 一號風(fēng)機(jī) M1 二號風(fēng)機(jī) M2三號風(fēng)機(jī) M3四號風(fēng)機(jī) 屏幕上 D0_定義Y0是幾號風(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
級別: 探索解密
|
圖片:
你這程序有問題呀 |
---|---|
|
夢雨天涯
微信hui530527 &
級別: 網(wǎng)絡(luò)英雄
|
程序僅供參考 三菱任意序號啟動,停止延時(shí)(FX3U)_嗶哩嗶哩_bilibili https://www.bilibili.com/video/BV1nH4y1p7pq/ [ 此帖被夢雨天涯在2024-03-25 10:43重新編輯 ] |
|
---|---|---|
|
18857713026
賺點(diǎn)辛苦錢不容易啊 誒~~~~ 努力賺錢
級別: 略有小成
|
什么問題 ??? ????????????? D0 =0 Y0 = M0 D0 =1 Y1 = M1 D0 =2 Y2 = M2 D0 =3 Y3 = M3 ??????????????????? 不會為什么Y0沒亮吧 你看看對應(yīng)M亮了嗎 不要問這么******的問題 [ 此帖被18857713026在2024-03-25 11:20重新編輯 ] |
---|---|
|
fxe2008
級別: 探索解密
|
你沒發(fā)現(xiàn)我發(fā)的圖片上DO=1的時(shí)候,Z0數(shù)值沒有變嗎。你模擬下看看,可能和PLC有關(guān)系,我選的是FX3U的 |
---|---|
|
18857713026
賺點(diǎn)辛苦錢不容易啊 誒~~~~ 努力賺錢
級別: 略有小成
|
????????????? PLC是順序更新啊 你能看到當(dāng)然是 Z0的最后一次狀態(tài)啊 你D1 = 0 D0不管等于多少 Z0永遠(yuǎn)是0啊 |
---|---|
|
flyfeky
bilibili 工控貴族
級別: 論壇先鋒
|
按道理, 這里有個(gè)數(shù)據(jù)結(jié)構(gòu) , 叫做隊(duì)列, 也就是先進(jìn)先出 。 可以自己實(shí)現(xiàn)隊(duì)列算法,如果有現(xiàn)成的也可以。 簡單的可以如下,不算隊(duì)列算法,具體的啟停邏輯,我下面是不對的啊. 把 A/B/C/D 用數(shù)字1/2/3/4 分別放到存儲器 D1,D2,D3,D4 中,標(biāo)識這四個(gè)風(fēng)機(jī)。 多的話用數(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重新編輯 ] |
|
---|---|---|
本帖最近評分記錄:
|
沖出槍林彈雨
沖出槍林彈雨
級別: 家園?
|
可以參考,能監(jiān)控當(dāng)前運(yùn)行風(fēng)機(jī)編號,狀態(tài),以及加了停止動作 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ī)編號(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)前風(fēng)機(jī) FanState[CurrentFan] := TRUE; // 這里加入控制當(dāng)前風(fēng)機(jī)啟動的代碼 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ī)編號 TimerRun(IN:=TRUE, PT:=T#10s); // 重置運(yùn)行計(jì)時(shí)器為10秒 END_IF ELSE // 緊急停止或安全聯(lián)鎖斷開,停止所有風(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 |
|
---|---|---|
|