Automation Studio是貝加萊公司的控制軟件開發平台,軟件可運行在貝加萊的基於PC的控制器上,基於Automation Studio我們可構建一個完整的控制軟件構建、測試和仿真運行平台。本文以一個簡單的例子介紹用Automation Studio進行基於C++的控制軟件開發環境搭建和仿真運行。
- 我們的目標:
1)用C++寫一個用戶程序,該程序被實時控制器的一個實時任務所調用,每100ms執行一次。
2)用組態工具畫一個可視化界面,把用戶程序中的一些變量和界面上的控件關聯起來。
3)把C++程序和可視化界面都下載到具體的硬件中去,並運行。
為達到上述目的,在一個實際項目開發中(以貝加萊系統為例),我們通常需要三個硬件平台:
1)一台裝有windows的筆記本,安裝好Automation Studio開發軟件,工程師用於軟件開發。
2)一台安裝在現場的實時控制器,裝有實時操作系統(Vxworks)。
3)一塊安裝在現場的觸摸屏作為人機界面,實現操作的輸入和狀態顯示。
在教學過程中為每個人都配齊上述硬件成本比較高,我們采用變通的方法,在我們的筆記本電腦上,安裝一個ARSim軟件,來模擬一個實際的控制器硬件,再安裝一個VNC Viewer軟件,用來模擬一塊觸摸屏。它們之間通過TCP/IP通信,因為都在一台電腦上,所以都通過本地IP地址127.0.0.1來訪問。
軟件安裝
Automation Studio軟件可到貝加萊官網上進行下載,試用期為30天,本文所用版本為v4.2.1,ARSim仿真軟件已包含在內。。
VNC Viewer可采用各種開源軟件,比如Real VNC
創建新工程
打開Automation Studio,點擊File -> New Project,在對話框中選擇新工程路徑並命名工程名,我們建立一個rtcsd1的新工程,如下圖所示。
主界面如下圖所示
接下來我們要添加一個C++程序,雙擊右側的Program圖標創建一個C++程序,將程序名修改為Program_cpp,如下圖所示
點擊Cyclic.cpp,添加自己的代碼如下:
#include <bur/plctypes.h>
#ifdef _DEFAULT_INCLUDES
#include <AsDefault.h>
#endif
#include "complex.h"
using namespace std;
unsigned long bur_heap_size = 0xFFFF;
complex c1(20, 10);
complex c2(1,1);
void _CYCLIC ProgramCyclic(void)
{
c1 = c1 + c2;
x = c1.real();
y = c1.imag();
}
這里我們實例化兩個Complex復數對象,Complex類是我們之前自己編寫的,定義在頭文件complex.h里,我們把complex.h文件拷貝到Program_cpp程序的子目錄中,並在Cyclic.cpp文件里添加:
#include "complex.h"
在函數ProgramCyclic()中,我們把復數c1的實部和虛部分別賦給變量x和y,我們把x和y的定義放在單獨的變量定義文件Variables.var中,如下圖所示:
C++程序的編寫我們已經完成了,大家注意到,在這段程序里,沒有main()函數,這是因為通常我們編寫的程序生成二進制文件后,運行時是作為一個獨立的進程被操作系統調用的。而在這里,函數ProgramCyclic()前面有一個修飾關鍵字_CYCLIC,表明這個程序將被控制器實時操作系統的一個周期性實時任務所調用。點擊軟件左側工程導航器的Configuration View選項卡,並雙擊PC_any下的Cpu.sw文件,如下圖所示,可以看到實時操作系統有八個周期性任務,我們把VisuProgram_cpp程序放入第一個周期任務,循環周期為100ms。
C++程序的編寫我們告一段落,下面我們來設計可視化人機界面,首先添加一個可視化對象VC4 Visualisation,命名為Visu
點擊軟件左側工程導航器的PhysicalView選項卡,導航器顯示的樹狀結構是我們的仿真控制器硬件ARSim的硬件資源,右鍵點擊第一個網卡ETH,選擇Configuration,在彈出的界面中,將Visu對象映射到一個VNC Server中去,如下圖所示。
編輯Visu畫面,創建4個控件,如下圖所示:
接下來我們把兩個顯示控件與變量x,y鏈接起來,如下圖所示
點擊菜單Project -> Build Configuration,編譯工程,成功后軟件詢問是否把該工程下載到控制器硬件(這里是仿真控制器ARSim)中去,點擊Transfer按鈕進行下載,如下圖所示。
下載完成后,程序將自動在ARSim中運行,現在我們需要通過VNC Viewer瀏覽人機界面,雙擊VNC Viewer,輸入本地IP:127.0.0.1,將看到如下的運行畫面。
x和y的值實時顯示在畫面上,並且每個100ms增加1,這個和我們的程序設計和配置是一致的。
更詳細的操作介紹,可參見貝加萊文檔。當完成上述練習后,就對Automation Studio的基本開發環境有了初步了解,可進一步調用STL、貝加萊提供的功能庫以及自定義庫來完成C++軟件開發。