《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 其他 > 設(shè)計(jì)應(yīng)用 > 基于LonWorks現(xiàn)場(chǎng)總線技術(shù)的組態(tài)控制
基于LonWorks現(xiàn)場(chǎng)總線技術(shù)的組態(tài)控制
摘要: 本文在介紹監(jiān)控組態(tài)軟件和LonWorks網(wǎng)絡(luò)控制技術(shù)的基礎(chǔ)上,,提出一種基于LonWorks網(wǎng)絡(luò)技術(shù)的組態(tài)控制方法,給出其設(shè)計(jì)思想和實(shí)現(xiàn)方法,。
Abstract:
Key words :

    1 引言

  1.1 組態(tài)控制軟件

  組態(tài)控制軟件是可實(shí)現(xiàn)各種控制功能的具有配置性質(zhì)的程序,。通過(guò)組態(tài)就可以實(shí)現(xiàn)預(yù)定的控制方案,。可以使用戶(hù)在不需要編代碼程序的情況下,,便可生成適合自己需求的應(yīng)用系統(tǒng),,這些應(yīng)用系統(tǒng)軟件就是組態(tài)軟件,它由開(kāi)發(fā)人員完成,本文提出了基于LonWorks網(wǎng)絡(luò)控制來(lái)實(shí)現(xiàn)對(duì)組態(tài)軟件的開(kāi)發(fā)方法,,提出了一種基于LonWorks網(wǎng)絡(luò)技術(shù)的組態(tài)方法,,給出其設(shè)計(jì)思想和實(shí)現(xiàn)方法。

  1.2 LonWorks網(wǎng)絡(luò)控制方法 – 節(jié)點(diǎn)

  LON網(wǎng)上的每個(gè)控制節(jié)點(diǎn)稱(chēng)為L(zhǎng)ON節(jié)點(diǎn)或LONWORKS 智能設(shè)備,,它包括一片Neuron芯片,、傳感器和控制設(shè)備、收發(fā)器和電源,。

  Neuron芯片是節(jié)點(diǎn)的核心部分,,它包括一套完整的通信協(xié)議,即LonTalk協(xié)議,,從而確保節(jié)點(diǎn)間使用可靠的通訊標(biāo)準(zhǔn)進(jìn)行互操作,。因?yàn)镹euron芯片可以直接與它所監(jiān)視的傳感器和控制設(shè)備相連,所以一個(gè)Neuron芯片可以傳輸,。

  傳感器或控制設(shè)備的狀態(tài),、執(zhí)行控制算法,和其它Neuron芯片進(jìn)行數(shù)據(jù)交換等,。使用Neuron芯片,,開(kāi)發(fā)人員可以集中精力設(shè)計(jì)并開(kāi)發(fā)出更好的應(yīng)用對(duì)象而無(wú)需耗費(fèi)太多的時(shí)間去設(shè)計(jì)通訊協(xié)議、通訊的軟件和硬件,,這樣減少了開(kāi)發(fā)的工作量,,節(jié)省了大量的開(kāi)發(fā)時(shí)間。

  LonWorks節(jié)點(diǎn)編程是用Neuron C 來(lái)實(shí)現(xiàn)的,,程序要經(jīng)過(guò)編譯和燒錄后才能載入節(jié)點(diǎn)中運(yùn)行;或者也有一些節(jié)點(diǎn)經(jīng)過(guò)編譯可以直接下載到節(jié)點(diǎn)運(yùn)行,。在此我們把組態(tài)的思想引入組態(tài)控制軟件中,為控制網(wǎng)絡(luò)預(yù)先提供豐富的控制功能模塊,,通過(guò)改變網(wǎng)絡(luò)節(jié)點(diǎn)之間的邏輯關(guān)系來(lái)達(dá)到改變網(wǎng)絡(luò)控制功能的目的,。

  1.3 引入組態(tài)到LonWorks控制網(wǎng)絡(luò)的優(yōu)點(diǎn)、特點(diǎn)

  ● 用戶(hù)不需要用Neuron C語(yǔ)言編程,,只要根據(jù)實(shí)際需要進(jìn)行適合自己的組態(tài)配置,。

  ● 實(shí)現(xiàn)的功能多,方便用戶(hù)實(shí)現(xiàn)各種控制功能,。

  ● LonWorks本身帶有通訊協(xié)議,,組網(wǎng)方便、靈活,。

2. 基于LonWorks的組態(tài)控制

  2.1 組態(tài)軟件生成:

  有的組態(tài)軟件將控制功能模塊稱(chēng)為“軟PLC或Soft PLC”,,也有的稱(chēng)“軟邏輯”。組態(tài)控制軟件編程工具采用圖形化編程語(yǔ)言,,只需用鼠標(biāo)“點(diǎn)擊,、拖動(dòng)”就可以建立一個(gè)可重復(fù)使用的控制方案,,大大減少工程時(shí)間和人力。一個(gè)應(yīng)用程序中可以有很多控制模塊,。開(kāi)發(fā)人員利用Neuron C 語(yǔ)言編制通用控制程序,。通用控制程序由許多基本功能模塊組成,各個(gè)模塊可以實(shí)現(xiàn)不同的控制功能,?;竟δ苣K有若干個(gè)輸入和輸出,每個(gè)輸入和輸出管腳都有唯一的名稱(chēng),,不同種類(lèi)的功能塊其每個(gè)管腳的意義,、取值范圍也不相同。

  控制模塊基本功能塊包括:數(shù)學(xué)運(yùn)算模塊(實(shí)現(xiàn)數(shù)的加,、減,、乘、除,、乘方,、開(kāi)方等基本運(yùn)算);邏輯運(yùn)算模塊(實(shí)現(xiàn)邏輯的與、或,、非,、延時(shí)、選擇開(kāi)關(guān)等功能);變量模塊(提供運(yùn)算的操作數(shù)并存放最終的運(yùn)算結(jié)果)以及常用的控制算法模塊(例如PID控制等),。

  組態(tài)控制軟件存盤(pán)時(shí)自動(dòng)對(duì)程序進(jìn)行編譯,、檢查語(yǔ)法錯(cuò)誤,同時(shí)生成一定格式的消息包,,準(zhǔn)備傳遞給Neuron芯片。這些特定格式的數(shù)據(jù)包有:控制模塊綜合描述(例如所含的控制模塊總個(gè)數(shù),,參數(shù)總個(gè)數(shù),,中間變量總個(gè)數(shù)等),各模塊的描述(例如該模塊的模塊數(shù),,參數(shù)個(gè)數(shù),,中間變量等),各模塊的參數(shù)表,,各模塊代碼表,,各模塊的中間變量存放順序表等。

  組態(tài)Neuron節(jié)點(diǎn)通過(guò)顯式消息與PC機(jī)進(jìn)行通訊,,接收模塊消息包,。該節(jié)點(diǎn)中存有與基本功能模塊相應(yīng)的執(zhí)行模塊代碼,將數(shù)學(xué)模塊,、邏輯模塊,、變量模塊和控制算法模塊等分別寫(xiě)成單獨(dú)的函數(shù),,可按照組態(tài)軟件生成的消息包被調(diào)用,并可將執(zhí)行結(jié)果傳送給PC機(jī)或其它 Neuron節(jié)點(diǎn),。假如組態(tài)中某個(gè)功能塊的參數(shù)發(fā)生了改變,,則重新編譯程序并將最新生成的模塊消息包發(fā)給 Neuron芯片,使之總是執(zhí)行最新的功能塊,,實(shí)現(xiàn)組態(tài)的在線編譯與控制,。組態(tài)Neuron節(jié)點(diǎn)在接收消息時(shí),根據(jù)消息標(biāo)簽將消息數(shù)據(jù)賦給該節(jié)點(diǎn)定義的不同的數(shù)據(jù)結(jié)構(gòu),。只有當(dāng)組態(tài)軟件生成的所有相關(guān)消息被收到后,,功能塊才可以執(zhí)行。

  Neuron各節(jié)點(diǎn)之間通過(guò)網(wǎng)絡(luò)變量進(jìn)行通訊,。在組態(tài)Neuron節(jié)點(diǎn)中,,預(yù)定義一定數(shù)量的網(wǎng)絡(luò)變量,既有輸入類(lèi)型,,也有輸出類(lèi)型,。其總個(gè)數(shù)不超過(guò)Neuron C 語(yǔ)言中允許定義的網(wǎng)絡(luò)變量的總個(gè)數(shù)。

  網(wǎng)絡(luò)變量的使用極大的簡(jiǎn)化了開(kāi)發(fā)和安裝分散系統(tǒng)的處理過(guò)程,,各節(jié)點(diǎn)可以獨(dú)自定義,,然后簡(jiǎn)單地連接在一起或斷開(kāi)某幾個(gè)連接,以構(gòu)成新的LONWORKS應(yīng)用,,大大增加了系統(tǒng)的靈活性,,開(kāi)放性。網(wǎng)絡(luò)變量通過(guò)給節(jié)點(diǎn)相互之間明確的網(wǎng)絡(luò)接口而極大地提高了節(jié)點(diǎn)產(chǎn)品的互操作性,?;ゲ僮餍詭?lái)得好處是:節(jié)點(diǎn)能很方便地安裝到不同類(lèi)型的網(wǎng)絡(luò)中,并保持節(jié)點(diǎn)應(yīng)用的網(wǎng)絡(luò)配置獨(dú)立性,。節(jié)點(diǎn)可以安裝到網(wǎng)絡(luò)中并且只要網(wǎng)絡(luò)變量數(shù)據(jù)類(lèi)型匹配,,就可以邏輯建立地與網(wǎng)絡(luò)上的其它節(jié)點(diǎn)的連接。

  一個(gè)網(wǎng)絡(luò)變量NV(Network Variables)是節(jié)點(diǎn)的一個(gè)對(duì)象,,它可以定義為輸入也可以定義為輸出網(wǎng)絡(luò)變量,。當(dāng)一個(gè)網(wǎng)絡(luò)變量在一個(gè)節(jié)點(diǎn)的應(yīng)用程序中被賦值后,LonTalk協(xié)議將修改了的輸出網(wǎng)絡(luò)變量新值構(gòu)成隱式消息,,透明的傳送到可與之共享數(shù)據(jù)的其它節(jié)點(diǎn)或PC機(jī),。這里的網(wǎng)絡(luò)變量其實(shí)為隱式消息。

  由于每個(gè)網(wǎng)絡(luò)變量的數(shù)據(jù)長(zhǎng)度一經(jīng)確定就不能改變,,且最多只有31B,,所以限制了它的使用范圍。為此,,可考慮同時(shí)使用了Neuron C 提供的顯示消息這一數(shù)據(jù)類(lèi)型,。

  顯式消息的長(zhǎng)度是可變的,,且最長(zhǎng)可以是228B。顯式消息必須使用一個(gè)預(yù)定的對(duì)象來(lái)構(gòu)造,,然后使用顯式函數(shù)以及預(yù)定事件來(lái)處理這些顯式消息,。

  用預(yù)定事件msg_arrives來(lái)接收消息。

  本設(shè)計(jì)中,,由message-code判斷要接收的消息數(shù)據(jù)msg_in.data應(yīng)該存放到那一部分?jǐn)?shù)據(jù)結(jié)構(gòu),。message-code有head, stragehead, code, parameter, index, 和run等。其中,,head為控制模塊頭,,stragehead為控制模塊描述頭,code為接收代碼表,,parameter為接收參數(shù)表,,index為接收索引表,run為接收程序開(kāi)始執(zhí)行命令,。這些消息分別對(duì)應(yīng)組態(tài)軟件編譯生成的消息包格式,。只有當(dāng)組態(tài)Neuron節(jié)點(diǎn)收到全部的模塊消息和執(zhí)行命令run后,模塊才被執(zhí)行,。

  2.2 實(shí)例

  對(duì)于實(shí)現(xiàn)一個(gè)加法運(yùn)算(加法器)來(lái)講,,其組態(tài)功能圖如圖:

 

 

  模塊1為變量模塊(輸入輸出模塊)中的常量模塊,模塊2,、3都為變量模塊(輸入輸出模塊)中的網(wǎng)絡(luò)變量輸入模塊,,模塊4為數(shù)學(xué)運(yùn)算模塊中的加法模塊,模塊5為變量模塊(輸入輸出模塊)中的輸出模塊,。

  若要實(shí)現(xiàn)這樣一個(gè)加法功能,,首先在組態(tài)工具中畫(huà)出如圖2所示的功能組態(tài)圖,經(jīng)編譯后生成所需的模塊代碼,。如模塊頭文件為:

  Varsize 12 0 0 0 0 //中間變量所需暫存單元

  Stragenum 1 //控制模塊個(gè)數(shù)

  Parasize 2 //參數(shù)所需存儲(chǔ)單元

  Codesize 20 //代碼所需存儲(chǔ)單元

  Indexsize 24 //索引所需存儲(chǔ)單元

  Globalsize 0 //全局變量所需存儲(chǔ)單元

  在模塊進(jìn)行執(zhí)行時(shí),,

  1) 執(zhí)行模塊1,將參數(shù)值從參數(shù)表中取值,,放入中間變量表;

  2) 執(zhí)行模塊2,將相應(yīng)的輸入網(wǎng)絡(luò)變量放入中間變量表;

  3) 執(zhí)行模塊3,,將相應(yīng)的輸入網(wǎng)絡(luò)變量放入中間變量表;

  4) 執(zhí)行到模塊4時(shí),,從中間變量表中取使能端的參數(shù),從中間變量表中取輸入端1的參數(shù),,從中間變量表中取輸入端2的參數(shù),,將兩操作數(shù)相加,運(yùn)算結(jié)果放回中間變量表,。

  5) 執(zhí)行模塊5,,從中間變量表中將數(shù)值賦給相應(yīng)的輸出網(wǎng)絡(luò)變量,。

  2.3 數(shù)據(jù)結(jié)構(gòu)

  Ø 代碼結(jié)構(gòu):由4個(gè)字節(jié)組成,分別用16進(jìn)制表示,。

 

 

  Ø 代碼結(jié)構(gòu)的含義:

  第一字節(jié)表示種類(lèi)( category),,即四大模塊(數(shù)學(xué)模塊、邏輯模塊,、變量模塊和控制模塊)中的某一類(lèi);

  第二字節(jié)表示類(lèi)型(kind),,即某一模塊中的具體功能;

  第三和第四字節(jié)表示索引(index)。

  Ø 索引表的結(jié)構(gòu):由二個(gè)字節(jié)組成;在程序中用16進(jìn)制表示,。

 

 

  Ø 索引(index)表的含義:

  I. 占兩個(gè)字節(jié),。

  II. 分別由各個(gè)功能塊的四個(gè)部分組成:

  A. 第一部分表示某個(gè)功能塊由幾個(gè)輸入、輸出集成,,分別對(duì)應(yīng)中間變量表的指針數(shù)值,。

  B. 第二部分表示輸入網(wǎng)絡(luò)變量。本設(shè)計(jì)中輸入數(shù)據(jù)由消息節(jié)點(diǎn)的消息變量發(fā)送,,再由接受節(jié)點(diǎn)接受,,通過(guò)網(wǎng)絡(luò)傳遞到另一個(gè)接受節(jié)點(diǎn)上來(lái),并轉(zhuǎn)化成網(wǎng)絡(luò)變量,,再由網(wǎng)絡(luò)變量送入PTAG表,,以便進(jìn)行運(yùn)算。

  C. 第三部分表示輸出網(wǎng)絡(luò)變量,。運(yùn)算結(jié)果放入PTAG中間變量表,,輸出時(shí)再?gòu)闹虚g變量表中取出運(yùn)算結(jié)果,送入接受方節(jié)點(diǎn)(本節(jié)點(diǎn)上)即NEUM節(jié)點(diǎn)上的輸出網(wǎng)絡(luò)變量,,經(jīng)網(wǎng)絡(luò)上傳遞后,,再由連接后的輸入網(wǎng)絡(luò)變量從另一個(gè)節(jié)點(diǎn)(即消息節(jié)點(diǎn))上可以讀出數(shù)據(jù)。

  D. 第四部分表示常量,。其值由參數(shù)表中取出,,參數(shù)表中的數(shù)據(jù)由消息發(fā)送過(guò)來(lái)。

  III. 各個(gè)功能塊的次序和每個(gè)功能塊中四個(gè)部分的次序,,由組態(tài)的次序決定,。

  第一部分的格式:

 

 

  第二部分(輸入網(wǎng)絡(luò)變量的格式):

 

 

  第三部分(輸出網(wǎng)絡(luò)變量)的格式:

 

 

  第四部分(常量)的格式:

 

 

  Ø 中間變量表的結(jié)構(gòu):由數(shù)據(jù)的類(lèi)型決定字節(jié)長(zhǎng)度。

 

 

  中間變量表通過(guò)賦初值來(lái)確定其結(jié)構(gòu),,此時(shí)中間網(wǎng)絡(luò)變量只有空結(jié)構(gòu),,沒(méi)有數(shù)據(jù),其數(shù)據(jù)等待輸入,,由變量模塊,、取數(shù)據(jù)函數(shù)GET()、設(shè)置數(shù)據(jù)函數(shù)SET()來(lái)完成,。變量模塊中分三個(gè)類(lèi)型,,有常量,、網(wǎng)絡(luò)變量輸入和網(wǎng)絡(luò)變量輸出。這三種類(lèi)型的數(shù)據(jù)最終都要放入中間變量表中,,輸入時(shí),,如是常量,則從參數(shù)表中取出常量,,放入中間變量表中,。參數(shù)表中的數(shù)據(jù)預(yù)先由消息節(jié)點(diǎn)發(fā)送,在讀參數(shù)表時(shí)已讀入數(shù)據(jù),。由READP()程序完成,。

  如不是常量,則由網(wǎng)絡(luò)變量輸入來(lái)接受數(shù)據(jù),,數(shù)據(jù)還是由消息節(jié)點(diǎn)發(fā)送過(guò)來(lái),,用GET()函數(shù)讀入,再由SET()函數(shù)放入PTAG中間變量表,,以備運(yùn)算使用,。

  輸出時(shí),再由中間變量表中取出,,放進(jìn)輸出網(wǎng)絡(luò)變量進(jìn)行輸出,。再由節(jié)點(diǎn)通過(guò)網(wǎng)絡(luò)傳遞到消息節(jié)點(diǎn),通過(guò)消息節(jié)點(diǎn)上的輸入網(wǎng)絡(luò)變量可以觀察運(yùn)算結(jié)果,。

  特別要注意的是:中間變量表的字節(jié)長(zhǎng)度是隨著常量數(shù)據(jù)的類(lèi)型(只有整型和浮點(diǎn)型),、網(wǎng)絡(luò)變量的數(shù)據(jù)類(lèi)型來(lái)確定,因而,,不同的模塊運(yùn)算中間變量表的長(zhǎng)度是不同的,,這也反映在索引表的內(nèi)容上。

  Ø 中間變量(Ptag)表的格式:(一個(gè)模塊)

 

 

  Ø 參數(shù)表的格式:(放常量)

 

 

  要實(shí)現(xiàn)這樣的加法功能,,先在組態(tài)工具中畫(huà)出如上圖的組態(tài)功能圖,,經(jīng)編譯后生成所需的控制模塊代碼。

  如設(shè)計(jì)代碼為:{0,,0,,0,0,,0,,1,0,,2,,0,,1,,0,,4,1,,0,,0,6,,0,,2,0,,10},。索引表設(shè)計(jì)為:{16,0,,16,,0,16,,0,,16,3,,16,,1,16,,6,,16,0,,16,,3,16,,6,,16,9,,16,,9,16,,0},。//16 完全和程序中生成的數(shù)據(jù)類(lèi)型的編程方法有關(guān)。

3 結(jié)束語(yǔ)

  在LonWorks技術(shù)的基礎(chǔ)上實(shí)現(xiàn)組態(tài)控制有著廣闊的發(fā)展空間,。依靠極強(qiáng)的Neuron芯片及LonTalk協(xié)議,,使得組態(tài)控制得以在線編譯并實(shí)時(shí)運(yùn)行。采用消息包的形式向Neuron 芯片傳送組態(tài)控制的模塊,減少了Neuron 編程的工作量以及編譯工作,,增加了系統(tǒng)的靈活性和開(kāi)放性,。為組態(tài)軟件的發(fā)展提供了更為開(kāi)闊的市場(chǎng)。

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。