1 引言
1.1 組態控制軟件
組態控制軟件是可實現各種控制功能的具有配置性質的程序。通過組態就可以實現預定的控制方案。可以使用戶在不需要編代碼程序的情況下,便可生成適合自己需求的應用系統,這些應用系統軟件就是組態軟件,它由開發人員完成,本文提出了基于LonWorks網絡控制來實現對組態軟件的開發方法,提出了一種基于LonWorks網絡技術的組態方法,給出其設計思想和實現方法。
1.2 LonWorks網絡控制方法 – 節點
LON網上的每個控制節點稱為LON節點或LONWORKS 智能設備,它包括一片Neuron芯片、傳感器和控制設備、收發器和電源。
Neuron芯片是節點的核心部分,它包括一套完整的通信協議,即LonTalk協議,從而確保節點間使用可靠的通訊標準進行互操作。因為Neuron芯片可以直接與它所監視的傳感器和控制設備相連,所以一個Neuron芯片可以傳輸。
傳感器或控制設備的狀態、執行控制算法,和其它Neuron芯片進行數據交換等。使用Neuron芯片,開發人員可以集中精力設計并開發出更好的應用對象而無需耗費太多的時間去設計通訊協議、通訊的軟件和硬件,這樣減少了開發的工作量,節省了大量的開發時間。
LonWorks節點編程是用Neuron C 來實現的,程序要經過編譯和燒錄后才能載入節點中運行;或者也有一些節點經過編譯可以直接下載到節點運行。在此我們把組態的思想引入組態控制軟件中,為控制網絡預先提供豐富的控制功能模塊,通過改變網絡節點之間的邏輯關系來達到改變網絡控制功能的目的。
1.3 引入組態到LonWorks控制網絡的優點、特點
● 用戶不需要用Neuron C語言編程,只要根據實際需要進行適合自己的組態配置。
● 實現的功能多,方便用戶實現各種控制功能。
● LonWorks本身帶有通訊協議,組網方便、靈活。
2. 基于LonWorks的組態控制
2.1 組態軟件生成:
有的組態軟件將控制功能模塊稱為“軟PLC或Soft PLC”,也有的稱“軟邏輯”。組態控制軟件編程工具采用圖形化編程語言,只需用鼠標“點擊、拖動”就可以建立一個可重復使用的控制方案,大大減少工程時間和人力。一個應用程序中可以有很多控制模塊。開發人員利用Neuron C 語言編制通用控制程序。通用控制程序由許多基本功能模塊組成,各個模塊可以實現不同的控制功能。基本功能模塊有若干個輸入和輸出,每個輸入和輸出管腳都有唯一的名稱,不同種類的功能塊其每個管腳的意義、取值范圍也不相同。
控制模塊基本功能塊包括:數學運算模塊(實現數的加、減、乘、除、乘方、開方等基本運算);邏輯運算模塊(實現邏輯的與、或、非、延時、選擇開關等功能);變量模塊(提供運算的操作數并存放最終的運算結果)以及常用的控制算法模塊(例如PID控制等)。
組態控制軟件存盤時自動對程序進行編譯、檢查語法錯誤,同時生成一定格式的消息包,準備傳遞給Neuron芯片。這些特定格式的數據包有:控制模塊綜合描述(例如所含的控制模塊總個數,參數總個數,中間變量總個數等),各模塊的描述(例如該模塊的模塊數,參數個數,中間變量等),各模塊的參數表,各模塊代碼表,各模塊的中間變量存放順序表等。
組態Neuron節點通過顯式消息與PC機進行通訊,接收模塊消息包。該節點中存有與基本功能模塊相應的執行模塊代碼,將數學模塊、邏輯模塊、變量模塊和控制算法模塊等分別寫成單獨的函數,可按照組態軟件生成的消息包被調用,并可將執行結果傳送給PC機或其它 Neuron節點。假如組態中某個功能塊的參數發生了改變,則重新編譯程序并將最新生成的模塊消息包發給 Neuron芯片,使之總是執行最新的功能塊,實現組態的在線編譯與控制。組態Neuron節點在接收消息時,根據消息標簽將消息數據賦給該節點定義的不同的數據結構。只有當組態軟件生成的所有相關消息被收到后,功能塊才可以執行。
Neuron各節點之間通過網絡變量進行通訊。在組態Neuron節點中,預定義一定數量的網絡變量,既有輸入類型,也有輸出類型。其總個數不超過Neuron C 語言中允許定義的網絡變量的總個數。
網絡變量的使用極大的簡化了開發和安裝分散系統的處理過程,各節點可以獨自定義,然后簡單地連接在一起或斷開某幾個連接,以構成新的LONWORKS應用,大大增加了系統的靈活性,開放性。網絡變量通過給節點相互之間明確的網絡接口而極大地提高了節點產品的互操作性。互操作性帶來得好處是:節點能很方便地安裝到不同類型的網絡中,并保持節點應用的網絡配置獨立性。節點可以安裝到網絡中并且只要網絡變量數據類型匹配,就可以邏輯建立地與網絡上的其它節點的連接。
一個網絡變量NV(Network Variables)是節點的一個對象,它可以定義為輸入也可以定義為輸出網絡變量。當一個網絡變量在一個節點的應用程序中被賦值后,LonTalk協議將修改了的輸出網絡變量新值構成隱式消息,透明的傳送到可與之共享數據的其它節點或PC機。這里的網絡變量其實為隱式消息。
由于每個網絡變量的數據長度一經確定就不能改變,且最多只有31B,所以限制了它的使用范圍。為此,可考慮同時使用了Neuron C 提供的顯示消息這一數據類型。
顯式消息的長度是可變的,且最長可以是228B。顯式消息必須使用一個預定的對象來構造,然后使用顯式函數以及預定事件來處理這些顯式消息。
用預定事件msg_arrives來接收消息。
本設計中,由message-code判斷要接收的消息數據msg_in.data應該存放到那一部分數據結構。message-code有head, stragehead, code, parameter, index, 和run等。其中,head為控制模塊頭,stragehead為控制模塊描述頭,code為接收代碼表,parameter為接收參數表,index為接收索引表,run為接收程序開始執行命令。這些消息分別對應組態軟件編譯生成的消息包格式。只有當組態Neuron節點收到全部的模塊消息和執行命令run后,模塊才被執行。
2.2 實例
對于實現一個加法運算(加法器)來講,其組態功能圖如圖:
模塊1為變量模塊(輸入輸出模塊)中的常量模塊,模塊2、3都為變量模塊(輸入輸出模塊)中的網絡變量輸入模塊,模塊4為數學運算模塊中的加法模塊,模塊5為變量模塊(輸入輸出模塊)中的輸出模塊。
若要實現這樣一個加法功能,首先在組態工具中畫出如圖2所示的功能組態圖,經編譯后生成所需的模塊代碼。如模塊頭文件為:
Varsize 12 0 0 0 0 //中間變量所需暫存單元
Stragenum 1 //控制模塊個數
Parasize 2 //參數所需存儲單元
Codesize 20 //代碼所需存儲單元
Indexsize 24 //索引所需存儲單元
Globalsize 0 //全局變量所需存儲單元
在模塊進行執行時,
1) 執行模塊1,將參數值從參數表中取值,放入中間變量表;
2) 執行模塊2,將相應的輸入網絡變量放入中間變量表;
3) 執行模塊3,將相應的輸入網絡變量放入中間變量表;
4) 執行到模塊4時,從中間變量表中取使能端的參數,從中間變量表中取輸入端1的參數,從中間變量表中取輸入端2的參數,將兩操作數相加,運算結果放回中間變量表。
5) 執行模塊5,從中間變量表中將數值賦給相應的輸出網絡變量。
2.3 數據結構
Ø 代碼結構:由4個字節組成,分別用16進制表示。
Ø 代碼結構的含義:
第一字節表示種類( category),即四大模塊(數學模塊、邏輯模塊、變量模塊和控制模塊)中的某一類;
第二字節表示類型(kind),即某一模塊中的具體功能;
第三和第四字節表示索引(index)。
Ø 索引表的結構:由二個字節組成;在程序中用16進制表示。

Ø 索引(index)表的含義:
I. 占兩個字節。
II. 分別由各個功能塊的四個部分組成:
A. 第一部分表示某個功能塊由幾個輸入、輸出集成,分別對應中間變量表的指針數值。
B. 第二部分表示輸入網絡變量。本設計中輸入數據由消息節點的消息變量發送,再由接受節點接受,通過網絡傳遞到另一個接受節點上來,并轉化成網絡變量,再由網絡變量送入PTAG表,以便進行運算。
C. 第三部分表示輸出網絡變量。運算結果放入PTAG中間變量表,輸出時再從中間變量表中取出運算結果,送入接受方節點(本節點上)即NEUM節點上的輸出網絡變量,經網絡上傳遞后,再由連接后的輸入網絡變量從另一個節點(即消息節點)上可以讀出數據。
D. 第四部分表示常量。其值由參數表中取出,參數表中的數據由消息發送過來。
III. 各個功能塊的次序和每個功能塊中四個部分的次序,由組態的次序決定。
第一部分的格式:

第二部分(輸入網絡變量的格式):

第三部分(輸出網絡變量)的格式:
第四部分(常量)的格式:

Ø 中間變量表的結構:由數據的類型決定字節長度。

中間變量表通過賦初值來確定其結構,此時中間網絡變量只有空結構,沒有數據,其數據等待輸入,由變量模塊、取數據函數GET()、設置數據函數SET()來完成。變量模塊中分三個類型,有常量、網絡變量輸入和網絡變量輸出。這三種類型的數據最終都要放入中間變量表中,輸入時,如是常量,則從參數表中取出常量,放入中間變量表中。參數表中的數據預先由消息節點發送,在讀參數表時已讀入數據。由READP()程序完成。
如不是常量,則由網絡變量輸入來接受數據,數據還是由消息節點發送過來,用GET()函數讀入,再由SET()函數放入PTAG中間變量表,以備運算使用。
輸出時,再由中間變量表中取出,放進輸出網絡變量進行輸出。再由節點通過網絡傳遞到消息節點,通過消息節點上的輸入網絡變量可以觀察運算結果。
特別要注意的是:中間變量表的字節長度是隨著常量數據的類型(只有整型和浮點型)、網絡變量的數據類型來確定,因而,不同的模塊運算中間變量表的長度是不同的,這也反映在索引表的內容上。
Ø 中間變量(Ptag)表的格式:(一個模塊)

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

要實現這樣的加法功能,先在組態工具中畫出如上圖的組態功能圖,經編譯后生成所需的控制模塊代碼。
如設計代碼為:{0,0,0,0,0,1,0,2,0,1,0,4,1,0,0,6,0,2,0,10}。索引表設計為:{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 完全和程序中生成的數據類型的編程方法有關。
3 結束語
在LonWorks技術的基礎上實現組態控制有著廣闊的發展空間。依靠極強的Neuron芯片及LonTalk協議,使得組態控制得以在線編譯并實時運行。采用消息包的形式向Neuron 芯片傳送組態控制的模塊,減少了Neuron 編程的工作量以及編譯工作,增加了系統的靈活性和開放性。為組態軟件的發展提供了更為開闊的市場。