用gx-designer3寫(xiě)的觸摸屏,gx-developer寫(xiě)的PLC程序。
功能有機種存儲、、查看、選定、搜索、修改和刪除。
關(guān)鍵是思路,程序稍微修改一下既可以套用了。盡可能地模塊化吧。
附件里包括觸摸屏程序、PLC程序和程序思路文檔。
2017/8/31更
之前把程序上傳后也沒(méi)怎么理會(huì )了。前幾天把壓縮包發(fā)給同事時(shí),打開(kāi)發(fā)現上傳的程序搞錯了,程序里面既沒(méi)有注釋也不完整。對于那些已經(jīng)下載程序的朋友們表達歉意。
抱歉了,浪費你們的時(shí)間了!下面我把有注釋的程序更換了,在這之前順便把重名檢測功能加上去了,并且用gt simulator仿真過(guò),本人暫時(shí)沒(méi)有發(fā)現bug。如有發(fā)現的朋友,可以跟我說(shuō)一下。
關(guān)于思路的那個(gè)文檔我也整理了一下,因為原來(lái)的文檔是我記錄思路的第一現場(chǎng),散亂。
思路如下
這個(gè)程序適應于生產(chǎn)型號調用、存儲和查看等功能。因為PLC代碼的可移植性太差了,思路就顯得尤為重要了。下面的內容就是本程序的思路。
首先明白調用,存儲和查看之間該怎樣處理數據。首先確定一個(gè)型號需要多少存儲空間。這里確定一個(gè)型號為10個(gè)寄存器。在寄存器里給各個(gè)功能分配存儲空間,各種功能就是對空間里的信息進(jìn)行讀寫(xiě)。這里分配D1000到D1009為設定區域,D1010到D1019為調用區域,D1020到D2000為存儲空間。接下來(lái)解釋各個(gè)區域有什么作用。
設定區域顧名思義,在存儲前對型號進(jìn)行各種參數的設定。例如,型號名稱(chēng)為ABC,定位參數X軸為100,Y軸為200,Z軸為300,單相電機或三相電機。這些數據都在這個(gè)區域設定完畢,再按照一定的規律存儲到D1020至D2000之間的空間。這個(gè)區域還需根據實(shí)際情況進(jìn)一步細分D1000至D1009之間的空間的功能。程序里將D1000至D1002分配為型號名稱(chēng),D1003為X軸,D1004為Y軸,D1005為Z軸,D1006.0為單相電機,D1006.1為三相電機。此外,在設定區域內可搜索名稱(chēng)輸入框中的型號,設定區域還可以用作查看已存儲型號的參數。
調用區域,正常生產(chǎn)時(shí),所需要的數據從調用區域讀取。該區域細分功能與設定區域細分功能是一樣的,并且一一對應的。調用區域在我的理解里算是一個(gè)接口吧,其他的程序就從這個(gè)區域讀取相應的數據,用作生產(chǎn)。設立這個(gè)區域還有一個(gè)原因就是為了和設定區域以及存儲區域進(jìn)行隔離。為了避免在操作設定區域和存儲區域時(shí),影響正常生產(chǎn)。
存儲區域這個(gè)就是存儲已經(jīng)設定好的型號,相當于數據庫功能。根據每個(gè)型號分配的寄存器個(gè)數,每個(gè)型號在存儲區域內占有10個(gè)寄存器。排列如下,D1020至D1029,D1030至D1039,如此類(lèi)推。
各個(gè)區域之間的數據處理。
設定區域>存儲區域>調用區域
存儲區域>設定區域
上面表示三個(gè)區域之間的關(guān)系,箭頭方向表示數據寫(xiě)入方向,并且一個(gè)箭頭代表一個(gè)BMOV指令。
按下存儲按鈕,將設定區域寫(xiě)入存儲區域。
型號編號有變動(dòng)、搜索成功和選定,將存儲區域的數據寫(xiě)入設定區域,顯示。
按下選定按鈕,將存儲區域的數據寫(xiě)入調用區域,。
按下刪除按鈕,將清零當前顯示的型號和清空設定區域。
按下清空按鈕,清空設定區域。
根據上面的動(dòng)作,寫(xiě)好三個(gè)BMOV指令至關(guān)重要。
以上是大體的方向,下面的內容將涉及到各個(gè)功能的細節,以及曾經(jīng)遇到的問(wèn)題。
設定區域有一個(gè)型號編號輸入框,要想查看已存儲型號的參數,只需要輸入相對于的型號編號即可。
1,設定區域要清零。
因為預先給每個(gè)型號分配的寄存器個(gè)數超過(guò)了實(shí)際需要的個(gè)數,并且沒(méi)使用到的寄存器在人機界面上是無(wú)法對其進(jìn)行讀寫(xiě)的。清空主要是在存儲前對這部分寄存器進(jìn)行清零。
2,搜索只對型號名稱(chēng)進(jìn)行搜索,對于型號參數不搜索。
搜索成功后,將搜索到的內容顯示在設定區域。這里只需要將搜索到的型號的編號反饋給設定區域的編號輸入寄存器即可。
存儲前要對準備存儲的型號名稱(chēng)進(jìn)行重名檢查及空白名稱(chēng)檢查。重名檢查也需要逐一對比,這部分功能與搜索有重疊,在搜索的基礎上稍微修改即可。但有一點(diǎn)應該注意的,就是重名檢查要跳過(guò)當前編號的型號。具體來(lái)說(shuō)就是,將原本存儲在編號8的A型號存儲在編號8的空間上并沒(méi)有違反重名規則。
空白名稱(chēng)檢查,在程序里名稱(chēng)以ASCII碼存放的,在A(yíng)SCII中空白字符并不是0000,所以空白名稱(chēng)檢查要考慮這種情況的出現。在人機界面中,一個(gè)寄存器在A(yíng)SCII碼顯示框為空白的情況有兩種,一種是x00,一種是x20。假設ASCII碼輸入框為4位,但只輸入一個(gè)A。這是對于寄存器來(lái)說(shuō)可不是只有一個(gè)字符A,而依然是4個(gè)字符,只是一個(gè)為A,其他三個(gè)為空字符。但是空字符在寄存器內表示的數值卻不是x00,而是x20。
目前我遇到的問(wèn)題都已經(jīng)解決了。
[ 此帖被勤工儉學(xué)在2017-08-31 21:16重新編輯 ]