IEC 61499 開發工具4diac 能夠建立自己的功能塊。不過,新的功能塊類型一般是採用ST 語言編寫,然後Export 成爲C++。需要和4diac 的運行時一起編譯之後,才能使用。比較耗費時間,也需要許多compiller 工具和背景知識。4diac 也提供了一種無需編譯,直接下載到Forte 運行的方式,它叫做"Dynamic type load "方式。
事實上,這種方式是4diac_ide 將新建的功能塊類型轉換成爲lua 語言的程序。由Forte內部的lua 解釋器去解釋執行新建功能塊的lua 代碼。
4diac 文檔上有關於dynamic type load 的描述:
https://www.eclipse.org/4diac/en_help.php?helppage=html/4diacIDE/dynamicTypeLoader.html
不過,4diac 的文檔有個特點,講的很簡單,說的很少,不過說的都是對的。
在4diac 文檔中 是在windows 的 MINGW64 下編譯的。而我是在ubuntu Linux下編譯Forte 的。有一些不同
luajit 的安裝
git clone http://luajit.org/git/luajit-2.0.5.git
cd luajit-2.0.5
make
sudo make install
CMake 參數配置
設置g++ luajit-5.1 庫
然後,configuration ,generate 再編譯
按說就可以了。但是自己建的一個Template for a Basic Function Block Type 的功能塊死活無法運行。搞了幾天都不行。最後,可怕的事情終於發生了。莫名其妙地OK了。
估計有幾個個小問題:
1 每次修改lua 功能塊之後,要從新運行一次forte
2 在菜單windows/preference/4diac-die/connection constrainer 勾選 forte typecasts選項。
3 將4diac-ide 升級到1.12.2
其他我就實在想不出改了什麼?算是交差了吧!下面再試試Lua 的編程,希望不要再出什麼幺蛾子
設計了一個類似E_SWITCH 的4路MUX4.運行正常。