專利名稱:一種梯形圖內(nèi)嵌組態(tài)算法的實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及梯形圖內(nèi)嵌入組態(tài)算法技術(shù),特別地,涉及一種自動生成梯形 圖內(nèi)嵌組態(tài)算法的技術(shù)。
背景技術(shù):
長期以來PLC與DCS控制系統(tǒng)各自在離散和過程行業(yè)都占有主要地位。然 而,隨著自動化技術(shù)的進(jìn)步,尤其是自動化系統(tǒng)通信技術(shù)的飛越式發(fā)展,兩者 正在呈現(xiàn)融合與集成的趨勢。隨著DCS與PLC功能的不斷發(fā)展和完善,新型的 DCS與新型的PLC,都有向?qū)Ψ娇繑n的趨勢。新型的DCS已有了很強(qiáng)的順序控 制功能;而新型的PLC,在處理閉環(huán)控制方面性能較好,而且無論在控制器方 面還是網(wǎng)絡(luò)方面都能做到冗余。二者能組成大型網(wǎng)絡(luò),適用范圍已有很大的交 叉,技術(shù)上相互融合。
發(fā)明內(nèi)容
本發(fā)明的目的在于針對現(xiàn)有的梯形圖控制范圍太小與控制要求的越來越高 的現(xiàn)象,提供一種梯形圖內(nèi)嵌組態(tài)算法的實(shí)現(xiàn)方法,能實(shí)現(xiàn)梯形圖控制與組態(tài) 控制的無縫結(jié)合。
本發(fā)明的目的是通過以下技術(shù)方案來實(shí)現(xiàn)的 一種梯形圖內(nèi)嵌組態(tài)算法的 實(shí)現(xiàn)方法,包括如下步驟
(1) 使用者通過組態(tài)策略生成器進(jìn)行組態(tài)設(shè)計(jì),系統(tǒng)對設(shè)計(jì)結(jié)果進(jìn)行描述;
(2) 解析器對描述文件進(jìn)行解析,對解析結(jié)果進(jìn)行格式化處理;
(3) 根據(jù)解析結(jié)果,生成數(shù)據(jù)和源代碼;
(4) 將源代碼與數(shù)據(jù)內(nèi)嵌入梯形圖中;
(5) 將梯形圖與組態(tài)一起編譯生成目標(biāo)指令集;
(6) 生成的指令集下載到目標(biāo)平臺運(yùn)行。本發(fā)明的有益效果是通過梯形圖內(nèi)嵌入組態(tài)算法技術(shù),可以實(shí)現(xiàn)梯形圖 控制與組態(tài)控制的無縫結(jié)合,擴(kuò)大了控制范圍與提高控制的靈活度。
圖1是梯形圖內(nèi)嵌組態(tài)算法結(jié)構(gòu)框圖; 圖2是梯形圖內(nèi)嵌組態(tài)算法設(shè)計(jì)流程圖; 圖3是梯形圖內(nèi)嵌組態(tài)算法內(nèi)核框圖; 圖4是一個組態(tài)設(shè)計(jì)的示例圖; 圖5是組態(tài)分析示例圖; 圖6是組態(tài)語言示例圖; 圖7是組態(tài)數(shù)據(jù)流向示例圖; 圖8是組態(tài)代碼自動生成示例圖; 圖9是搶占式任務(wù)調(diào)度示例圖。
具體實(shí)施例方式
本發(fā)明的一種梯形圖內(nèi)嵌組態(tài)算法的實(shí)現(xiàn)方法。整體框架如圖3所示,通 過操作系統(tǒng)各個模塊實(shí)現(xiàn)組態(tài)任務(wù)、梯形圖任務(wù)與其它任務(wù)的調(diào)度與切換,使 系統(tǒng)協(xié)調(diào)而且有序的運(yùn)行。操作系統(tǒng)上層可分為三大模塊設(shè)備驅(qū)動模塊、通 訊協(xié)議模塊、通訊事件處理模塊,實(shí)現(xiàn)任務(wù)所需的底層驅(qū)動模塊。通過硬件抽 象層(HIUD)對硬件層進(jìn)行抽象,由HIUD層完成底層驅(qū)動的調(diào)用,實(shí)現(xiàn)組態(tài)與 梯形圖程序的硬件無關(guān)性,方便移植。該方法結(jié)構(gòu)參見圖l,包括如下步驟 1.使用者通過組態(tài)策略生成器進(jìn)行組態(tài)設(shè)計(jì),系統(tǒng)對設(shè)計(jì)結(jié)果進(jìn)行描述(圖2 步驟101)。
通過PC機(jī)上組態(tài)策略生成器軟件進(jìn)行組態(tài)算法模塊的拖拉、連線、參數(shù) 設(shè)定設(shè)計(jì),自動生成組態(tài)算法的XML描述文件。具體步驟如下 1.1通過圖形化拖拉設(shè)計(jì)生成組態(tài)頁面,如圖4所示。 1.2將組態(tài)進(jìn)行解析成各個正確而又有序的控制算法序列,如圖6所示。 解析組態(tài)采用自底向上的方式,也就是從輸出控件為起點(diǎn),向前進(jìn)行搜 索,如圖5所示。搜索算法具體如下
1.2.1將一系列輸出模塊放入母堆棧中。
1.2.2彈出一個輸出模塊,建立一個子堆棧,并將輸出模塊壓入棧中。此時,輸出模塊為當(dāng)前模塊。
1.2.3分析當(dāng)前模塊的輸入線段,按輸入的先后順序?qū)⑤斎肽K依次壓入 母堆棧中。
1.2.4檢查母堆棧中是否還有模塊,沒有則搜索結(jié)束,最后得到的子堆棧 就是組態(tài)算法序列;有則彈出模塊,并設(shè)為當(dāng)前模塊,壓入子堆棧中;
如當(dāng)前結(jié)點(diǎn)為輸入模塊,則進(jìn)入第4步;如當(dāng)前結(jié)點(diǎn)不是輸入模塊,則
進(jìn)入第3步。
1.3依次將得到的組態(tài)序列中的組態(tài)算法與參數(shù)用XML語言描述到文件中。 2解析器對描述文件進(jìn)行解析,對解析結(jié)果進(jìn)行格式化處理(圖2步驟102)。
采用XSLT模板對描述文件進(jìn)行匹配生成代碼,并產(chǎn)生幾個相關(guān)的XML 文件。過程如圖8所示。具體步驟如下 2.1采用XSLT模板對描述文件進(jìn)行匹配生成控制程序塊,包括參數(shù)的初始 化,控制算法的裁剪,控制算法的組態(tài)??刂扑惴ǖ慕M態(tài),關(guān)鍵在于數(shù)據(jù)流的 關(guān)系。每個組態(tài)算法模塊中至少包含一個輸入或輸出,各個模塊之間的聯(lián)系就 是數(shù)據(jù)流的流向關(guān)系,在這里,用棧數(shù)據(jù)結(jié)構(gòu)進(jìn)行表示這種關(guān)系,如圖7所示, 包括以下三點(diǎn)規(guī)則
2丄1輸入表示彈出棧動作,輸入的點(diǎn)數(shù)決定彈出棧的數(shù)據(jù)個數(shù)。 2丄2輸出表示壓入棧動作,輸出的點(diǎn)數(shù)決定壓入棧的數(shù)據(jù)個數(shù)。 2丄3數(shù)據(jù)入棧時,按順序入棧;數(shù)據(jù)出棧對變量進(jìn)行賦值時,則要按 反序進(jìn)行賦值。
2.2根據(jù)上位機(jī)用戶設(shè)定的地址表,生成組態(tài)到梯形圖的地址映射表。 2.3結(jié)合地址表與參數(shù)列表,生成數(shù)據(jù)表,這些數(shù)據(jù)是寫入到FLASH中, 是可讀可寫的變量。針對用戶要求修改的參數(shù)集合,必須給這些參數(shù)分配地址, 以便用戶在設(shè)計(jì)人機(jī)界面時可以進(jìn)行配置而進(jìn)行修改。內(nèi)存按功能不同,可分 為兩塊梯形圖內(nèi)存與組態(tài)內(nèi)存,用連續(xù)的空間分配這兩塊內(nèi)存。這些參數(shù)在 下載時更新相應(yīng)的FLASH區(qū),上電時將FLASH中的數(shù)據(jù)搬到RAM中,運(yùn)行 時用戶可修改其值,斷電時將RAM中的數(shù)據(jù)再搬回到FLASH中,以達(dá)到更新 的目的。
2.4根據(jù)用戶調(diào)用組態(tài)算法情況生成組態(tài)算法包,組態(tài)算法包是組態(tài)算法集 合的子集,是通過裁剪得到需要的算法。上位機(jī)每個算法控件綁定一個控制算 法,當(dāng)拖拉時就會相應(yīng)地生成控制算法。 3根據(jù)解析結(jié)果,生成數(shù)據(jù)和源代碼(圖2步驟103)。
根據(jù)用戶調(diào)用組態(tài)的情況,將所用的組態(tài)代碼與XML文件進(jìn)一步解析,
7生成與梯形圖融合的數(shù)據(jù)與代碼。具體步驟如下 3.1將用戶所用的組態(tài)算法包進(jìn)行匹配融合,保證組態(tài)算法包中不存在相同 的控制算法。
3.2添加用戶所用的組態(tài)控制程序代碼。將步驟2中所生成控制程序代碼文
件加入到梯形圖程序中。
3.3組合用戶所用的地址表,并依次遞增劃分內(nèi)存,生成地址代碼部份。
3.4組合用戶所用的數(shù)據(jù)表,生成數(shù)據(jù)代碼部份。 4將源代碼與數(shù)據(jù)內(nèi)嵌入梯形圖中(圖2步驟104)。該步驟具體步驟如下
4.1在梯形圖軟件設(shè)計(jì)中,劃分出組態(tài)的執(zhí)行區(qū)。梯形圖中有快速邏輯區(qū)與 慢速邏輯區(qū),是根據(jù)梯形圖執(zhí)行周期長短設(shè)置的,現(xiàn)加入組態(tài)邏輯區(qū),組態(tài)的 執(zhí)行周期比梯形圖的慢速邏輯執(zhí)行周期長。
4.2將組態(tài)算法以控件形式拖拉到組態(tài)執(zhí)行區(qū)中,并可拖拉多個組態(tài)算法。
4.3根據(jù)組態(tài)算法調(diào)用情況,調(diào)用相關(guān)文件和生成相關(guān)代碼與數(shù)據(jù)。具體步 驟參見步驟3。
4.4根據(jù)執(zhí)行周期不同,梯形圖與組態(tài)形成多任務(wù)調(diào)度。任務(wù)調(diào)度機(jī)制如下 4.4.1任務(wù)調(diào)度介紹多任務(wù)內(nèi)核使用中斷驅(qū)動,基于優(yōu)先級的任務(wù) 調(diào)度機(jī)制,具有較快的上下文切換和較低的中斷延遲。這里采用的是基 于優(yōu)先級的搶占式和先來先服務(wù)調(diào)度算法。
4.4.2基于優(yōu)先級的搶占式任務(wù)可分為梯形圖快速邏輯任務(wù)、梯形 圖慢速邏輯任務(wù)、組態(tài)任務(wù),每個任務(wù)都有一優(yōu)先級,內(nèi)核把CPU分配 給優(yōu)先級最高的就緒任務(wù),當(dāng)一個任務(wù)占有CPU正在運(yùn)行時,若另一個 優(yōu)先級比它更高的任務(wù)來臨時,則內(nèi)核就切換當(dāng)前任務(wù)的現(xiàn)場到較高優(yōu) 先級任務(wù)的現(xiàn)場,高優(yōu)先級任務(wù)搶占了CPU。在圖9中,快速邏輯任務(wù) 優(yōu)先級為高,慢速邏輯任務(wù)優(yōu)先級為中,組態(tài)任務(wù)優(yōu)先級為低。組態(tài)任 務(wù)最先運(yùn)行,但它被慢速邏輯任務(wù)與快速邏輯任務(wù)打斷,因此最后才運(yùn) 行完畢。
4.4.3先來先服務(wù)(任務(wù)隊(duì)列)介紹當(dāng)任務(wù)的優(yōu)先級相同時,就會 形成任務(wù)隊(duì)列,每個任務(wù)隊(duì)列里的任務(wù)根據(jù)進(jìn)入隊(duì)列的時間先后依次占 用CPU。
4.4.4上下文切換介紹當(dāng)任務(wù)切換時,要對現(xiàn)場進(jìn)行保護(hù),保存當(dāng) 前的寄存器;當(dāng)任務(wù)切換回來時,要對寄存器中的值進(jìn)行恢復(fù)操作。 5將梯形圖與組態(tài)一起編譯生成目標(biāo)指令集(圖2步驟105)。
調(diào)用第三方編譯器,將步驟3自動生成的代碼與其它代碼一起編譯,生成目標(biāo)平臺所能識別的指令集,也就是二進(jìn)制代碼。
6生成的指令集下載到目標(biāo)平臺運(yùn)行(圖2步驟106)。
將步驟5所生成二進(jìn)制代碼,通過串口方式下載到目標(biāo)平臺,也就是單 片機(jī)中。
以上所述僅為本發(fā)明一個實(shí)施例子,但不能以此限制本發(fā)明范圍,凡依據(jù) 本發(fā)明所做的結(jié)構(gòu)上的變化、功能模塊的增刪,只要不失本發(fā)明的要義所在, 都應(yīng)視為落入本發(fā)明保護(hù)范圍之內(nèi)受到制約。
權(quán)利要求
1、一種梯形圖內(nèi)嵌組態(tài)算法的實(shí)現(xiàn)方法,其特征在于,包括如下步驟(1)使用者通過組態(tài)策略生成器進(jìn)行組態(tài)設(shè)計(jì),系統(tǒng)對設(shè)計(jì)結(jié)果進(jìn)行描述。(2)解析器對描述文件進(jìn)行解析,對解析結(jié)果進(jìn)行格式化處理。(3)根據(jù)解析結(jié)果,生成數(shù)據(jù)和源代碼。(4)將源代碼與數(shù)據(jù)內(nèi)嵌入梯形圖中。(5)將梯形圖與組態(tài)一起編譯生成目標(biāo)指令集。(6)生成的指令集下載到目標(biāo)平臺運(yùn)行。
2、 根據(jù)權(quán)利要求l所述梯形圖內(nèi)嵌組態(tài)算法的實(shí)現(xiàn)方法,其特征在于,所述步 驟(1)具體如下(A ) 通過圖形化拖拉設(shè)計(jì)生成組態(tài)頁面。(B) 將組態(tài)進(jìn)行解析成各個正確而又有序的控制算法序列解析組態(tài)采用自底向上的方式,也就是從輸出控件為起點(diǎn),向前進(jìn)行搜索。(C) 依次將得到的組態(tài)序列中的組態(tài)算法與參數(shù)用XML語言描述到文件中。
3、 根據(jù)權(quán)利要求2所述梯形圖內(nèi)嵌組態(tài)算法的實(shí)現(xiàn)方法,其特征在于,所述步驟(B)中,所述搜索具體如下(a) 將一系列輸出模塊放入母堆棧中。(b) 彈出一個輸出模塊,建立一個子堆棧,并將輸出模塊壓入棧中。 此時,輸出模塊為當(dāng)前模塊。(c) 分析當(dāng)前模塊的輸入線段,按輸入的先后順序?qū)⑤斎肽K依次壓 入母堆棧中。(d) 檢查母堆棧中是否還有模塊,沒有則搜索結(jié)束,最后得到的子堆 棧就是組態(tài)算法序列;有則彈出模塊,并設(shè)為當(dāng)前模塊,壓入子堆 棧中;如當(dāng)前結(jié)點(diǎn)為輸入模塊,則進(jìn)入步驟(d);如當(dāng)前結(jié)點(diǎn)不是 輸入模塊,則進(jìn)入步驟(c)。
4、 根據(jù)權(quán)利要求l所述梯形圖內(nèi)嵌組態(tài)算法的實(shí)現(xiàn)方法,其特征在于,所述步 驟(2)采用XSLT模板對描述文件進(jìn)行匹配生成代碼,并產(chǎn)生幾個相關(guān)的XML 文件,具體如下(A)采用XSLT模板對描述文件進(jìn)行匹配生成控制程序塊,包括參數(shù)的初 始化,控制算法的裁剪,控制算法的組態(tài)。控制算法的組態(tài),關(guān)鍵在于數(shù)據(jù) 流的關(guān)系。每個組態(tài)算法模塊中至少包含一個輸入或輸出,各個模塊之間的 聯(lián)系就是數(shù)據(jù)流的流向關(guān)系,在這里,用棧數(shù)據(jù)結(jié)構(gòu)進(jìn)行表示這種關(guān)系,包括以下三點(diǎn)規(guī)則(a) 輸入表示彈出棧動作,輸入的點(diǎn)數(shù)決定彈出棧的數(shù)據(jù)個數(shù)。(b) 輸出表示壓入桟動作,輸出的點(diǎn)數(shù)決定壓入棧的數(shù)據(jù)個數(shù)。(C)數(shù)據(jù)入棧時,按順序入棧;數(shù)據(jù)出棧對變量進(jìn)行賦值時,則要按反 序進(jìn)行賦值。(B) 根據(jù)上位機(jī)用戶設(shè)定的地址表,生成組態(tài)到梯形圖的地址映射表。(C) 結(jié)合地址表與參數(shù)列表,生成數(shù)據(jù)表,這些數(shù)據(jù)是寫入到FLASH中, 是可讀可寫的變量。針對用戶要求修改的參數(shù)集合,必須給這些參數(shù)分配地 址,以便用戶在設(shè)計(jì)人機(jī)界面時可以進(jìn)行配置而進(jìn)行修改。內(nèi)存按功能不同, 可分為兩塊梯形圖內(nèi)存與組態(tài)內(nèi)存,用連續(xù)的空間分配這兩塊內(nèi)存。這些 參數(shù)在下載時更新相應(yīng)的FLASH區(qū),上電時將FLASH中的數(shù)據(jù)搬到RAM 中,運(yùn)行時用戶可修改其值,斷電時將RAM中的數(shù)據(jù)再搬回到FLASH中, 以達(dá)到更新的目的。(D) 根據(jù)用戶調(diào)用組態(tài)算法情況生成組態(tài)算法包,組態(tài)算法包是組態(tài)算法 集合的子集,是通過裁剪得到需要的算法。上位機(jī)每個算法控件綁定一個控 制算法,當(dāng)拖拉時就會相應(yīng)地生成控制算法。
5、 根據(jù)權(quán)利要求l所述梯形圖內(nèi)嵌組態(tài)算法的實(shí)現(xiàn)方法,其特征在于,所述步 驟(3)根據(jù)用戶調(diào)用組態(tài)的情況,將所用的組態(tài)代碼與XML文件進(jìn)一步解析, 生成與梯形圖融合的數(shù)據(jù)與代碼,具體如下(A) 將用戶所用的組態(tài)算法包進(jìn)行匹配融合,保證組態(tài)算法包中不 存在相同的控制算法。(B) 添加用戶所用的組態(tài)控制程序代碼。將步驟2中所生成控制程 序代碼文件加入到梯形圖程序中。(C) 組合用戶所用的地址表,并依次遞增劃分內(nèi)存,生成地址代碼 部份。(D) 組合用戶所用的數(shù)據(jù)表,生成數(shù)據(jù)代碼部份。
6、 根據(jù)權(quán)利要求l所述梯形圖內(nèi)嵌組態(tài)算法的實(shí)現(xiàn)方法,其特征在于,所述步 驟(4)具體如下(A) 在梯形圖軟件設(shè)計(jì)中,劃分出組態(tài)的執(zhí)行區(qū)。梯形圖中有快速邏 輯區(qū)與慢速邏輯區(qū),是根據(jù)梯形圖執(zhí)行周期長短設(shè)置的,現(xiàn)加入組態(tài)邏 輯區(qū),組態(tài)的執(zhí)行周期比梯形圖的慢速邏輯執(zhí)行周期長。(B) 將組態(tài)算法以控件形式拖拉到組態(tài)執(zhí)行區(qū)中,并可拖拉多個組態(tài)算法。(C) 根據(jù)組態(tài)算法調(diào)用情況,調(diào)用相關(guān)文件和生成相關(guān)代碼與數(shù)據(jù)。(D) 根據(jù)執(zhí)行周期不同,梯形圖與組態(tài)形成多任務(wù)調(diào)度。
全文摘要
本發(fā)明公開了一種梯形圖內(nèi)嵌組態(tài)算法的實(shí)現(xiàn)方法,包括組態(tài)算法構(gòu)件化、組態(tài)算法包的自動生成、組態(tài)算法中參數(shù)的內(nèi)存分配與映射、邏輯控制任務(wù)與過程控制任務(wù)的任務(wù)調(diào)度;對組態(tài)算法進(jìn)行抽象化、原子化,剝離成一個個構(gòu)件,采用控件的表現(xiàn)形式,實(shí)現(xiàn)控制算法的組態(tài);本發(fā)明可以實(shí)現(xiàn)邏輯控制與過程控制的無縫結(jié)合,擴(kuò)大工業(yè)控制的范圍與提高控制的靈活度。
文檔編號G05B19/05GK101566839SQ20091009915
公開日2009年10月28日 申請日期2009年6月1日 優(yōu)先權(quán)日2009年6月1日
發(fā)明者義 嚴(yán), 良 李, 趙建勇, 鄔惠峰 申請人:杭州電子科技大學(xué)