內嵌式可編程控制器(embedued PLC)具有結構緊湊、成本低廉等優(yōu)點,在中小型數控系統(tǒng)中得到了廣泛的應用,但也存在通用性不高、擴充性不強以及對用戶透明度較差等問題。本文根據其工作原理,用C語言建立了內嵌式PLC的集成編程環(huán)境,使這些問題得到了較好的解決。
1 編程軟件的功能和數據流向
編程軟件的主要功能是在I/O接口卡和伺服控制卡等硬件平臺上針對不同的數控系統(tǒng)來完成內嵌式PLC的軟件編程任務。在編程軟件的主界面中,有’‘輸人定義”、‘’輸出定義”、“中間變量”、“參數設置”、“系統(tǒng)組成”、“梯形圖”、“系統(tǒng)退出”等功能項,其中“輸人定義”和“輸出定義”用來定義輸人信號和輸出信號;“中間變量”用來定義PLC邏輯程序中用到的內部變量;“參數設置卜,用來設定數控系統(tǒng)所用到的一些參數;“系統(tǒng)組成‘’的功能是把已經定義過的輸人信號、輸出信號、中間變量以及系統(tǒng)的參數根據所設計的數控系統(tǒng)的大小有選擇地組合在一起,并根據輸人/輸出點數的多少建立映射區(qū)川,形成一個名字為PLC. H的磁盤文件,供其他程序調用;“梯形圖”選項用來對梯形圖進行編輯和編譯,形成數控系統(tǒng)能夠識別的代碼在本系統(tǒng)中,該代碼是一個名字為CPLC.C的C語言程序。該程序能被數控程序或仿形數字化程序調用,經過和PLC的函數庫連接形成一個完整的可執(zhí)行文件。編程軟件的數據流向如圖1所示。
2 信號定義
在編程軟件的主界面中選擇“輸人定義”,其下拉式菜單有兩個子功能“新建”和“打開”。“新建”就是對一塊輸人卡上的32路輸人信號進行定義,此時屏幕上會給出提示信息,讓用戶鍵人輸人卡的基地址,基地址的范圍在000H-3FFH之間,并且不能與系統(tǒng)所占用的地址以及已經定義過的輸人卡的地址相沖突,例如,用戶鍵人的基地址為330貝y在屏幕上從上到下順序排列出該輸人卜上的4個口地址330.331,332,333,每個口地址對應8路輸人信號,用戶可以對這些信號進行定義,信號定義完成后,按壓F2鍵,則該輸人卡的信號以330.adr文件名存于硬盤上。“打開”是用來對已經定義過的一塊輸人卡的信號從硬盤上調出并顯示在屏幕上以便用戶查閱和修改。用同樣的方法在“輸出定義’‘中可以完成輸出信號的定義,
3 梯形圖的編輯和雙向鏈表的存儲結構
編程軟件的“梯形圖”選項用來進行梯形圖的編輯和編譯。本系統(tǒng)將梯形圖的基本符號如動合觸點、動斷觸點等歸納成14種基本圖素,圖素代號為“A”-“N”,排列在屏幕右側,供操作者選擇。屏幕左側為梯形圖編輯窗口,光標可在該窗口內全屏幕搜索定位。梯形圖的每行可編輯9列圖素操作者只需移動淺綠色的光標塊到合適的位置然后在此光標塊上分別鍵人需要輸人的圖素代碼和該圖素代碼所對應的信號代碼,即可存該位置畫出相應的梯形圖符號,并標有信號代碼。梯形圖的編輯有全中文界面和幫助信息,可吏現的功能主要有:梯形圖文件存盤、裝載;圖素的繪制、插入、刪除;圖形瀏覽;梯形圖整行的插入、刪除;錯誤檢測;梯形圖編譯等。由于梯形圖的行數是不能預知的,因此,對梯形圖的編輯采用動態(tài)數據存儲,以雙向鏈表數據結構來記錄梯形圖的所有信息,把梯形圖的每行作為一個鏈結,其結構如下:
其中,BLOCK blk[9]為結構體數組,每一項順序記錄著從第1列到第9列的基本圖素信息,其第9列限定為輸出項,BLOCK的結構如F:
對梯形圖的編輯可以通過對結構體LDA的前后項指針*prior和*next來進行,如圖2所示。
圖2梯形圖雙向鏈表數據結構圖
雙向鏈表結構存放在內存的堆中,所占用的內存空間在程序運行期間可以動態(tài)地變化。用兩個全局指針變量LAD*listhead和LAD*lisitail分別指向雙向鏈表的鏈頭和鏈尾,用全局性指針變量LAD*info來指向正在編輯的鏈結一般情況下,一個完整的梯形圖不可能在一個屏幕內全部顯示出來,而只能以屏幕為單位一屏一屏地顯示(本系統(tǒng)一屏幕顯示10行),因此用fistlin來記錄屏幕當前顯示的梯形圖起始行,用rellin表示光標塊所在行在當前屏幕卜的位置,如果rellin >10或rellin < 1,則把當前屏幕的內容更換整個梯形圖通過LAD的前項指針*prior和后項指針*nex。按照行號順序鏈結在一起。這樣,對梯形圖的各種操作,如修改、刪除、插人等就轉化為對雙向鏈表的相應操作,例如刪除梯形圖的某行,實際卜就是把內存中的梯形圖雙向鏈表的鏈結刪除掉,并且這西操作均可用結構體指針的運算來實現。由于雙向鏈表的每個鏈結都具有向前和向后的指針,既可向前查找,也能向后訪間,因此各類操作十分靈活方便。
4 梯形圖的編譯
編輯好的梯形圖,根據其雙向鏈表中的圖素代號和信號代碼,可形成各種邏輯關系。利用編譯程序、把這種邏輯關系編譯成C程序困,以便嵌入到同樣用C語言編制的數控程序或仿形數字化程序中,完成機床的順序控制。在梯形圖編譯時按照梯形圖的梯級順序進行,編譯過程中要進行語法檢查,主要是檢查所編譯的梯形圖足否鈳臺規(guī)定的格式,如果梯形目不符合格式要求,則會給出錯誤信啟,同時,在編譯過程中還要枝驗梯形嘲中的信號代碼與信號定義模塊PLC。H中所定義的信號是否~致,如果不一致,則提示該信號代碼未定義。用戶通過查看編譯過程中所給出的錯誤信息,進行相應的修改,直到沒有錯誤為止。梯形圖編譯程序的流程圖如圖3所示。
圖3梯形圍編譯程序流程圈
5 結束語
該編程軟件簡化了采用常規(guī)方法時要根據系統(tǒng)不同的硬件配置從底層進行設計的繁瑣步驟,縮短了設計周期,提高丁工作效率。從其在“數控仿形銑床”研制過程中的使用情況來看,取得了令人滿意的效果,為系統(tǒng)的設計、安裝和調試帶來了極大的便利。
(審核編輯: Doris)
分享