本發(fā)明屬于圖形化編程領(lǐng)域,具體涉及一種圖形化程序頁面的在線編輯且即時(shí)生效的方法。
背景技術(shù):
圖形化編程由于直觀、易于理解、操作方便,已經(jīng)在嵌入式裝置程序開發(fā)中進(jìn)行了應(yīng)用。當(dāng)前的圖形化編程分為離線編輯、在線調(diào)試2個(gè)環(huán)節(jié),即在客戶端軟件打開頁面,進(jìn)行編輯后,形成相關(guān)產(chǎn)物,下載到運(yùn)行環(huán)境,然后進(jìn)行在線調(diào)試,對(duì)于頁面邏輯搭建是否正確,不能立即進(jìn)行互動(dòng)校驗(yàn)判斷。而在工業(yè)過程控制領(lǐng)域,迫切需要連接上裝置后,進(jìn)行在線編程且能立即生效,在旁置跳閘出口的情況下,當(dāng)新建刪除符號(hào)、數(shù)據(jù)連線后,能夠立即在頁面上查看到數(shù)據(jù)值和效果,便于編程人員立即判斷編程邏輯是否達(dá)到預(yù)期,從而增量式的修改和調(diào)試,需要一種在線編輯且即時(shí)生效的方法,本案由此產(chǎn)生。
目前,有的圖形化編程工具實(shí)現(xiàn)了在線編輯的功能,但其需要用戶手動(dòng)選擇下載操作,且下載的是整個(gè)圖形化程序頁面,甚至是整個(gè)應(yīng)用程序。不僅操作繁瑣不夠流暢,而且可能給運(yùn)行環(huán)境中的未修改程序帶來額外擾動(dòng)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的,在于提供一種圖形化程序頁面的在線編輯即時(shí)生效的方法,滿足工業(yè)控制領(lǐng)域?qū)崟r(shí)編輯調(diào)試的需求,實(shí)現(xiàn)所見即所得的功能。為了達(dá)成上述目的,本發(fā)明的解決方案是:
一種在線編輯即時(shí)生效的邏輯組態(tài)方法,包括如下步驟:
步驟1,客戶端與裝置建立通訊連接,并確認(rèn)當(dāng)前待編輯的圖形化程序頁面和運(yùn)行環(huán)境中對(duì)應(yīng)的圖形化程序頁面是否一致,若不一致,則進(jìn)行同步;
步驟2,客戶端獲取當(dāng)前頁面中鼠標(biāo)和鍵盤事件,分析出各種編輯操作,并形成報(bào)文下發(fā)給運(yùn)行環(huán)境;
步驟3,運(yùn)行環(huán)境解析各種編輯操作報(bào)文,即時(shí)調(diào)整頁面數(shù)據(jù)區(qū)、數(shù)據(jù)連接關(guān)系和運(yùn)行函數(shù)隊(duì)列;
步驟4,運(yùn)行環(huán)境周期上送當(dāng)前編輯頁面的數(shù)據(jù)區(qū)運(yùn)行值,客戶端在符號(hào)輸入輸出管腳、連接線上實(shí)時(shí)顯示運(yùn)行值;
步驟5,客戶端和裝置斷開連接前,可選下發(fā)保存報(bào)文,運(yùn)行環(huán)境將內(nèi)存中的圖形化程序頁面保存為文件。
所述步驟1中,客戶端通過報(bào)文通訊,比較待編輯圖形化程序頁面和運(yùn)行環(huán)境中對(duì)應(yīng)的圖形化程序頁面的循環(huán)冗余校驗(yàn)碼值,確認(rèn)是否一致。
所述步驟1中,運(yùn)行環(huán)境包括嵌入式實(shí)時(shí)運(yùn)行環(huán)境、pc機(jī)虛擬仿真運(yùn)行環(huán)境,支持管理運(yùn)行多個(gè)等級(jí)的任務(wù),每個(gè)任務(wù)運(yùn)行多個(gè)圖形化程序頁面。
所述步驟2中,通過獲取待編輯頁面中鼠標(biāo)的單擊、雙擊、釋放事件和鍵盤事件,提取圖形化符號(hào)的新建和刪除動(dòng)作、連接線的新建和刪除動(dòng)作、連接關(guān)系修改動(dòng)作、符號(hào)屬性修改動(dòng)作,并生成不同種類的編輯操作報(bào)文,即時(shí)下發(fā)給運(yùn)行環(huán)境。
所述步驟3中,運(yùn)行環(huán)境解析新建符號(hào)報(bào)文,獲取符號(hào)類型、實(shí)例名;根據(jù)符號(hào)類型從內(nèi)置的符號(hào)程序庫中獲取其數(shù)據(jù)結(jié)構(gòu)模板和功能函數(shù)指針,并在圖形化程序頁面的內(nèi)存數(shù)據(jù)區(qū)中順序查找大小匹配的空閑區(qū)域,分配該符號(hào)的數(shù)據(jù)區(qū);若空閑區(qū)域空間不足,則在內(nèi)存數(shù)據(jù)區(qū)的末尾創(chuàng)建分配;將該符號(hào)對(duì)應(yīng)的函數(shù)指針、實(shí)例名和數(shù)據(jù)區(qū)地址信息添加到運(yùn)行函數(shù)隊(duì)列,以便實(shí)時(shí)運(yùn)算任務(wù)運(yùn)行調(diào)用。
所述步驟3中,運(yùn)行環(huán)境解析刪除符號(hào)報(bào)文,獲取符號(hào)類型、實(shí)例名;根據(jù)實(shí)例名,在圖形化程序頁面的內(nèi)存數(shù)據(jù)區(qū)中查找對(duì)應(yīng)的符號(hào)數(shù)據(jù)區(qū),并置為空閑狀態(tài);從運(yùn)行函數(shù)隊(duì)列中刪除該符號(hào)的功能函數(shù)。
所述步驟3中,運(yùn)行環(huán)境解析新建連接線報(bào)文,獲取連接線源端對(duì)應(yīng)的符號(hào)實(shí)例名和輸出變量名、目的端對(duì)應(yīng)的符號(hào)實(shí)例名和輸入變量名,查找對(duì)應(yīng)變量的內(nèi)存區(qū)域,將目的端對(duì)應(yīng)變量的引用地址設(shè)置為源端對(duì)應(yīng)變量的地址,目的端符號(hào)的功能函數(shù)運(yùn)行時(shí),利用該引用地址獲取源端變量的實(shí)時(shí)值參與運(yùn)算。
所述步驟3中,運(yùn)行環(huán)境解析刪除連接線報(bào)文,獲取連接線源端對(duì)應(yīng)的符號(hào)實(shí)例名和輸出變量名、目的端對(duì)應(yīng)的符號(hào)實(shí)例名和輸入變量名,查找到對(duì)應(yīng)變量的內(nèi)存區(qū)域,將目的端對(duì)應(yīng)變量的引用地址設(shè)置為空,目的符號(hào)的功能函數(shù)運(yùn)行時(shí),利用該輸入變量的默認(rèn)值參與運(yùn)算。
所述步驟3中,運(yùn)行環(huán)境解析連接關(guān)系修改報(bào)文,即修改連接線源端、目的端的報(bào)文,轉(zhuǎn)換為新建連接線、刪除連接線的報(bào)文處理。
所述步驟3中,運(yùn)行環(huán)境解析修改符號(hào)屬性的報(bào)文,即修改符號(hào)的實(shí)例名、修改符號(hào)變量值;根據(jù)符號(hào)的舊實(shí)例名,查找到運(yùn)行函數(shù)隊(duì)列,將其中舊實(shí)例名修改為新實(shí)例名;對(duì)于修改符號(hào)變量值,根據(jù)符號(hào)實(shí)例名和變量名查找對(duì)應(yīng)變量內(nèi)存區(qū),并寫入新值。
采用上述方案后,客戶端進(jìn)行在線編輯邏輯組態(tài)時(shí),只需要1-2個(gè)運(yùn)行周期的時(shí)間,即可完成下發(fā)到運(yùn)行環(huán)境并即時(shí)生效,同時(shí)將生效后的實(shí)時(shí)數(shù)據(jù)回傳至客戶端即時(shí)顯示的過程;實(shí)現(xiàn)了在線編輯所見即所得的組態(tài)效果。同時(shí)由于僅下發(fā)編輯操作相關(guān)的符號(hào)和連線等信息,對(duì)運(yùn)行環(huán)境中的圖形化程序影響最小,從根本上達(dá)到無擾的效果。本發(fā)明在工業(yè)控制的應(yīng)用開發(fā)中進(jìn)行了應(yīng)用,提高了在線編輯調(diào)試的效率。
附圖說明
圖1是本發(fā)明中在線編輯即時(shí)生效流程圖;
圖2是本發(fā)明中新建、刪除符號(hào)時(shí)數(shù)據(jù)區(qū)處理示意圖;
圖3是本發(fā)明中新建、刪除符號(hào)時(shí)運(yùn)行函數(shù)隊(duì)列處理示意圖;
圖4是本發(fā)明中新建、刪除連接線時(shí)處理示意圖。
具體實(shí)施方式
以下將結(jié)合附圖,對(duì)本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)說明。
如圖1所示,其實(shí)現(xiàn)步驟如下:
(1)客戶端與裝置建立通訊連接,并確認(rèn)當(dāng)前待編輯的圖形化程序頁面和運(yùn)行環(huán)境中對(duì)應(yīng)的圖形化程序頁面是否一致,若不一致,則進(jìn)行同步??蛻舳送ㄟ^報(bào)文比較待編輯圖形化程序頁面和運(yùn)行環(huán)境中對(duì)應(yīng)的圖形化程序頁面的crc值,確認(rèn)是否一致。如若不一致,可選擇下載或上裝,實(shí)現(xiàn)同步,確保一致。
(2)客戶端獲取當(dāng)前頁面中鼠標(biāo)和鍵盤事件,分析出各種編輯操作,并形成報(bào)文下發(fā)給運(yùn)行環(huán)境。通過獲取待編輯頁面中鼠標(biāo)的單擊、雙擊、釋放事件和鍵盤事件,形成圖形化符號(hào)的新建和刪除動(dòng)作、連接線的新建和刪除動(dòng)作、連接關(guān)系修改動(dòng)作、符號(hào)屬性修改動(dòng)作,將上述編輯動(dòng)作生成不同種類的編輯操作報(bào)文,即時(shí)下發(fā)給運(yùn)行環(huán)境。
(3)運(yùn)行環(huán)境根據(jù)如下詳細(xì)步驟解析編輯操作報(bào)文,即時(shí)調(diào)整頁面數(shù)據(jù)區(qū)、數(shù)據(jù)連接關(guān)系和運(yùn)行隊(duì)列。
(3.1)解析新建符號(hào)報(bào)文,運(yùn)行環(huán)境的內(nèi)存區(qū)處理示意如圖2所示,運(yùn)行環(huán)境的運(yùn)行函數(shù)隊(duì)列處理示意如圖3所示。首先獲取符號(hào)類型、實(shí)例名;根據(jù)符號(hào)類型從內(nèi)置的符號(hào)程序庫中獲取其數(shù)據(jù)結(jié)構(gòu)模板和功能函數(shù)指針,并在圖形化程序頁面的內(nèi)存數(shù)據(jù)區(qū)中順序查找大小匹配的空閑區(qū)域,分配該符號(hào)的數(shù)據(jù)區(qū);若空閑區(qū)域空間不足,則在內(nèi)存數(shù)據(jù)區(qū)的末尾創(chuàng)建分配;將該符號(hào)對(duì)應(yīng)的函數(shù)指針、實(shí)例名和數(shù)據(jù)區(qū)地址信息添加到運(yùn)行函數(shù)隊(duì)列,以便實(shí)時(shí)運(yùn)算任務(wù)運(yùn)行調(diào)用。
(3.2)解析刪除符號(hào)報(bào)文,獲取符號(hào)類型、實(shí)例名;根據(jù)實(shí)例名,在圖形化程序頁面的內(nèi)存數(shù)據(jù)區(qū)中查找對(duì)應(yīng)的符號(hào)數(shù)據(jù)區(qū),并置為空閑狀態(tài);若相鄰的區(qū)域?yàn)榭臻g狀態(tài),則進(jìn)行合并;從運(yùn)行函數(shù)隊(duì)列中刪除該符號(hào)的功能函數(shù)。
(3.3)解析新建連接線報(bào)文,客戶端和運(yùn)行環(huán)境的處理同步如圖4所示。首先獲取連接線源端對(duì)應(yīng)的符號(hào)實(shí)例名和輸出變量名、目的端對(duì)應(yīng)的符號(hào)實(shí)例名和輸入變量名,查找對(duì)應(yīng)變量的內(nèi)存區(qū)域,將目的端對(duì)應(yīng)變量的引用地址設(shè)置為源端對(duì)應(yīng)變量的地址,目的端符號(hào)的功能函數(shù)運(yùn)行時(shí),利用該引用地址獲取源端變量的實(shí)時(shí)值參與運(yùn)算。
(3.4)解析刪除連接線報(bào)文,獲取連接線源端對(duì)應(yīng)的符號(hào)實(shí)例名和輸出變量名、目的端對(duì)應(yīng)的符號(hào)實(shí)例名和輸入變量名,查找到對(duì)應(yīng)變量的內(nèi)存區(qū)域,將目的端對(duì)應(yīng)變量的引用地址設(shè)置為空,目的符號(hào)的功能函數(shù)運(yùn)行時(shí),利用該輸入變量的默認(rèn)值參與運(yùn)算。
(3.5)解析連接關(guān)系修改報(bào)文,即修改連接線源端、目的端的報(bào)文,轉(zhuǎn)換為新建連接線、刪除連接線的報(bào)文處理。
(3.6)解析修改符號(hào)屬性的報(bào)文,即修改符號(hào)的實(shí)例名、修改符號(hào)變量值;根據(jù)符號(hào)的舊實(shí)例名,查找到運(yùn)行函數(shù)隊(duì)列,將其中舊實(shí)例名修改為新實(shí)例名;對(duì)于修改符號(hào)變量值,根據(jù)符號(hào)實(shí)例名和變量名查找對(duì)應(yīng)變量內(nèi)存區(qū),并寫入新值。
(4)運(yùn)行環(huán)境周期上送當(dāng)前編輯頁面的數(shù)據(jù)區(qū)運(yùn)行值,客戶端在符號(hào)輸入輸出管腳、連接線上實(shí)時(shí)顯示運(yùn)行值。
(5)客戶端和裝置斷開連接前,可選下發(fā)保存報(bào)文,運(yùn)行環(huán)境將內(nèi)存中的圖形化程序頁面保存為文件。
以上實(shí)施例僅為說明本發(fā)明的技術(shù)思想,不能以此限定本發(fā)明的保護(hù)范圍,凡是按照本發(fā)明提出的技術(shù)思想,在技術(shù)方案基礎(chǔ)上所做的任何改動(dòng),均落入本發(fā)明保護(hù)范圍之內(nèi)。