陳惠鑫
級(jí)別: 工控俠客
精華主題: 0
發(fā)帖數(shù)量: 62 個(gè)
工控威望: 2448 點(diǎn)
下載積分: 250 分
在線時(shí)間: 51(小時(shí))
注冊(cè)時(shí)間: 2020-02-19
最后登錄: 2024-06-07
查看陳惠鑫的 主題 / 回貼
樓主  發(fā)表于: 2021-08-21 12:19
主程序是io,在主程序里賦值
$i[10]=ffh
$i[11]=ffh
$i[12]=ffh
$i[13]=ffh
把所有的IO都點(diǎn)亮,然后
$i[3]=01
IOprint::main()
waittime 0.1
$i[3]=00
IOprint::main()
waittime 0.1
賦值01代表0位打開(kāi),賦值00代表0位關(guān)閉,同理10,11代表1位打開(kāi)跟關(guān)閉,以此類推,延時(shí)0.1是因?yàn)椴谎訒r(shí)程序1秒不到就走完了,通訊處理不過(guò)來(lái)。
IOprint::main()是子程序調(diào)用,調(diào)用子程序中main程序邏輯
IOprint:首先判斷是哪一個(gè)號(hào)段的io觸發(fā)了,Y0-7,Y10-17,Y20-27,Y30-37,以此進(jìn)入相應(yīng)函數(shù)
Y:
if($i[3]==$i[4])
goto Y90
endif
if($i[3]>=0&&$i[3]<=80)
goto Y0
endif
if($i[3]>=100&&$i[3]<=180)
goto Y10
endif
if($i[3]>=200&&$i[3]<=280)
goto Y20
endif
if($i[3]>=300&&$i[3]<=380)
goto Y30
endif
goto Y
進(jìn)入之后理解相關(guān)的程序步為什么這樣做。這是這個(gè)程序的核心,與邏輯、或邏輯的理解。
Y0:
if($i[3]==01)
$i[10]=$i[10]|01b
//print $i[10]
endif
if($i[3]==100)
$i[11]=$i[11]&11111110b
//print $i[11]
endif
Y10:
if($i[3]==101)
$i[11]=$i[11]|01b
//print $i[11]
endif
if($i[3]==200)
$I[12]=$I[12]&11111110b
//print $i[12]
endif
上面先是使用了$i[3]作為位置判斷進(jìn)行調(diào)整,然后根據(jù)判斷賦值給$i[10],$i[11],$i[12],$i[13]作為Y0-Y37的輸出記錄,之所以分開(kāi)是因?yàn)檫@樣做后面的io觸發(fā)不受前面的影響,而且數(shù)據(jù)的發(fā)送是FF最大,因此只能使用多個(gè)連續(xù)的寄存器替代。
PLC處理程序比較簡(jiǎn)單,這里就不描述了。。
接線就是把Y37接到X0去觸發(fā)下一次的循環(huán)。
[ 此帖被陳惠鑫在2021-08-21 12:24重新編輯 ]
附件: 程序.zip (193 K) 下載次數(shù):42
網(wǎng)站提示: 請(qǐng)不要用迅雷下載附件,容易出錯(cuò)
加勒比海帶
級(jí)別: 論壇先鋒
精華主題: 0
發(fā)帖數(shù)量: 2236 個(gè)
工控威望: 1837 點(diǎn)
下載積分: 6902 分
在線時(shí)間: 64(小時(shí))
注冊(cè)時(shí)間: 2021-07-19
最后登錄: 2024-08-05
查看加勒比海帶的 主題 / 回貼
1樓  發(fā)表于: 2021-10-19 11:04
下載學(xué)學(xué)學(xué)習(xí)