slik
級別: 論壇先鋒
精華主題: 0
發(fā)帖數(shù)量: 908 個
工控威望: 1175 點
下載積分: 5868 分
在線時間: 539(小時)
注冊時間: 2008-06-01
最后登錄: 2024-12-02
查看slik的 主題 / 回貼
樓主  發(fā)表于: 2024-05-15 09:36
有這樣一種需求,工藝需求共分A,B,C,D,E五個動作階段,但是其動作的先后順序不定,根據(jù)在HMI的設(shè)置來決定,比如,HMI設(shè)置1,2,,3,4,5,那么按照A,B,C,D,E來走,如果HMI設(shè)置4,2,3,1,5,那么將按照D,B,C,A,E的先后順序來執(zhí)行,請問這樣的應(yīng)用要怎么編程比較簡單明晰,我最初想到的是解碼指令對應(yīng)到某個字中的某位,然后用字的循環(huán)移位指令來做,但是,問題是要怎么把Dn.X的某bit位對應(yīng)到動作階段上,請各位高手指點下,謝謝!~
gxtmdb82164
級別: 論壇先鋒
精華主題: 0
發(fā)帖數(shù)量: 770 個
工控威望: 1148 點
下載積分: 399 分
在線時間: 604(小時)
注冊時間: 2019-09-22
最后登錄: 2024-12-20
查看gxtmdb82164的 主題 / 回貼
1樓  發(fā)表于: 2024-05-15 10:36
實現(xiàn)方式非常多的,給你一個最簡單的:

這個方向需要提前確認(rèn)最大的步數(shù)空間,比如20步,那么準(zhǔn)備40個寄存器,比如說從D100開始(如果你的PLC可以用類似結(jié)構(gòu)體之類的就更方便了)
Step0:命令寄存器:D100,狀態(tài)寄存器D120
Step1:命令寄存器:D101,狀態(tài)寄存器D121
。。。
Step19:命令寄存器:D119,狀態(tài)寄存器D129

程序掃描就是正常的從Step0到Step19,當(dāng)然得有個位置記錄一下這個Step號,命令寄存器里面通過觸摸屏寫入要執(zhí)行的命令,就是一樓的12345,然后狀態(tài)寄存器用于指示當(dāng)前這個步的狀態(tài),啟動了,等待了,完成了,出錯了等等,

程序就是從D100開始循環(huán)到D119,跳步條件通過狀態(tài)寄存器實現(xiàn),具體的12345子程序,根據(jù)當(dāng)前的步數(shù)加乘后使用變址的方式獲得參數(shù)和輸出結(jié)果(大白話解釋一下:比如1的程序,啟動的時候要復(fù)位完成點(假設(shè)是這樣),完成后要置位完成點,這個完成點的具體地址要看當(dāng)前的Step號,比如Step5,對應(yīng)的是D125.1,在Step6就是D126.1,通過變址這兩個地址對子程序來說是一樣的,當(dāng)然還要看具體的PLC是否支持)

在這個基礎(chǔ)上擴(kuò)展一下,命令字后面再增加幾個寄存器,還可以把參數(shù)也傳進(jìn)去,都是動態(tài)的
本帖最近評分記錄:
  • 下載積分:+5(阿萱子v)