本文轉載自(zì)CSDN 作者:姚家灣
PART 1
背景資料
EcoStruxure Automation Expert的(de)三層架構
施耐(nài)德電氣的EcoStruxure Automation Expert(簡(jiǎn)稱為EAE),是(shì)一個自動化平台(tái),他們稱之為軟件為中心的工業自動化。EAE具有三層架構。從底層的(de)PLC,變頻器,傳感器到邊緣控(kòng)製的軟件dPAC,到頂(dǐng)層的應用,分析和服務。
EcoStruxure Automation Expert基本(běn)組成
軟件dPAC 的特性
EcoStruxure Automation Expert軟件dPAC是先進的多平台IEC61499為基礎的控製運行時,它包括:
●基於事件,網絡透(tòu)明的自動化能力
●原生過程告警支持
●modbus/TCP客戶端和服務器
●OPC UA服務器
●Ethernet/IP(在v20.2中支持有限平台
EcoStruxure Automation Expert軟件dPAC在一個標準PC上使能一個開放(fàng),靈活(huó),可擴展,高度集成IEC61499運(yùn)行時。從低成本的(de)嵌入式係統(tǒng)到高性能IT服務器(qì)。
運行時在工業邊緣提供了集成和運行先進IT工具(jù),程序庫和應用的(de)開放平台。這是通過TCP/UDP socket和直接鏈接DLL庫的方式實現(xiàn)的。
這個公(gōng)共運行時集成硬件解決方案(àn),比如Altivar 變頻器,Modicon M251 dPAC,Modicon M580 dPAC,加(jiā)上(shàng)linux係統(tǒng)上(shàng)基於容(róng)器的虛擬軟件運行時。
EcoStruxure Automation Expert的Linux軟件dPAC兼容實(shí)時Linux內核,並且支持每台機器上多個運(yùn)行時同時運(yùn)行,它們通過modbus/TCP和Ethernet/IP通信。
軟件(jiàn)dPAC 的運行環境
由此可見,Linux下的運行時有兩個版本:
●X86-64版本是Intel X86下的版本
●Arm HF版本是32位Arm版(bǎn)本。arm hf arm hard float的簡寫(xiě)。
這就意味著Soft dPAC不僅能夠在Intel X86計算機上運行,也可以在Arm嵌入式平台上運行(háng),比如樹莓PI4,RK3399,H6等Arm板上運行。
Soft dPAC要求在docker容器中(zhōng)運行。施耐德電氣提供的是一個docker容器(qì)的image。直接(jiē)可(kě)以在docker中安裝成(chéng)為容(róng)器運行。
這是一件令人興奮的(de)事情,我們可以在各種邊緣(yuán)計算(suàn)機上部署Soft dPAC,甚至可以將它們部署(shǔ)在雲端(duān)。和其它微(wēi)服務協同(tóng)操作。構建(jiàn)一(yī)個開發性係統。
構建(jiàn)邊(biān)緣計算(suàn)架(jià)構
有了docker版本的Soft dPAC,就可以將它部署到邊緣服務器上麵,並且與(yǔ)docker容器中(zhōng)的其它(tā)微服務協同操作。下麵是一個典型的架構圖:
前麵提到,Soft dPAC提供了3種方式(shì)與外部程序交(jiāo)互
●動態庫DLL直接調用
●modbus TCP
●TCP/UDP方式。
docker容器中程序以微服(fú)務的方式運行,所有(yǒu)的微服務通過一個統一的消息係統實現消息交換。比如(rú)RabbitMQ,MQTT等。為此,我們要設計(jì)一個Soft Gateway程序將Soft dPAC TCP傳輸的數據(jù)轉換成微服務消息,通過message bus信息交換(huàn)。在這(zhè)裏我們選擇簡單MQTT作為消息總線。
PART 2
測試過程
安裝(zhuāng)-解壓
解壓出(chū)EAE V20.2後有一(yī)個文件,這就是Linux版(bǎn)本(běn)Soft dPAC的壓(yā)縮包:
tar zxvf ./softdpac.tar
安裝image
sudo python3 install.py
啟動容器運行
按照文檔中的提示是運行startSoftdPAC.sh
sudo sh startSoftdPAC.sh
--ipbase 192.168.31.95
--itname enp1s0
--image-name softdpac:x86-v20.2-20315-1064
--nbcontainer 1
不過具(jù)體過程(chéng)中(zhōng)發現docker的端口(kǒu)51499沒有暴露除了來,直接使用物理端(duān)口IP地址(zhǐ)也不是很好。可以使用docker的方(fāng)式直(zhí)接安裝。我采用portainer 基於web的容器(qì)管理工具(jù)。
PART 3
modbus/TCP 通信
在EAE中,有一個Modbus Software Gateway,可(kě)以實現與外部modbus TCP server的通信。這就可以連接第(dì)三方的遠程IO模塊,也(yě)可以連接其(qí)它的應(yīng)用程序(xù)。
在EAE中,modbus是作為硬(yìng)件功能塊來實現的。需要在device List窗口中,指定設備擊右鍵選擇 HW Configuration.
出現下麵窗口,選擇 Standard.IoModbus.MODBUS.
於是在HW Configuration中出現MODBUS項目。
下一步,在MODBUS端口添加設備,在MODBUS 下(xià)擊右鍵,出現(xiàn)下(xià)麵窗口。選擇MODBUSGENTCPS。
添加的MODBUSGENTCPS相當於Slave MODBUS設備。它內部的讀寫寄存器在一個XML 中定義。比如modbusmap.xml。如下麵所示
最後還需要添加一個Standard.IoModbus.MODBUSSLAVEND.(不要忘記,我(wǒ)就是忘了,一直(zhí)搞不通)
該文件可以存儲在Project文件夾中。下一步指向MODBUSGENTCPS1擊右鍵,選(xuǎn)擇(zé)Modbus Gateway。彈(dàn)出一個文件選擇窗口。選擇(zé) modbusmap.xml.
經過上(shàng)麵一係列添加(jiā)之後,HW Configuration是這樣(yàng)的(de):
我們(men)還需要設置上麵窗口中所有項目的屬性(property),它們包括:
MODBUS,
MODBUSGENTCPS1,
VAL_OUT1_MODBUSGENTCPS1
VAL_OUT2_MODBUSGENTCPS1
VAL_IN1_MODBUSGENTCPS1
VAL_IN2_MODBUSGENTCPS1
下麵是(shì)相關項目的屬性窗(chuāng)口。
MODBUS屬性
MODBUSGENTCPS1屬性
VAL_OUT1_MODBUSGENTCPS1 /VAL_OUT2_MODBUSGENTCPS1屬性
VAL_IN1_MODBUSGENTCPS1 /VAL_IN2_MODBUSGENTCPS1的屬性
要反複檢查,不要(yào)遺留。要不然也搞不定。
設置完(wán)成後,點擊HW Configuration邊上的(de)Mapping,這時切(qiē)換到RES窗口,發現在裏麵添加了兩個功能塊MODBUSGENTCPS MBRead和MODBUSGENTCPS MBWrite.你可以添加連線如(rú)下圖。
GO語言編寫了(le)一個簡單(dān)的modbus server
PART 4
TCP/UDP 通信
modbusTCP協議比較適合soft dPAC連接遠(yuǎn)程IO模塊,而TCP/UDP更適合於軟件交換數據。EAE 有一個NETIO功能(néng)塊提供給用戶建立特定的TCP,UDP通信(xìn)。這個功能塊意(yì)義非(fēi)凡,使用戶可以實現與非EAE程序的通信。
下麵(miàn)是一(yī)個簡單的例子:
ENDPOINT設置外部應用的協議類型和(hé)IP地(dì)址,端口。在EAE的文檔中解釋有點淩亂。我(wǒ)設置為 TCP Client模式,在9200端口接收數據,在與Soft dPAC同一台主機上向9201發(fā)送數據。
'TCP:9200;127.0.0.1:9201'
外部的測試程序采用GO 語言編寫,代碼如下:
運行的(de)結果如下:
PART 5
一個簡單(dān)的軟件網關(Soft Gateway)
Soft dPAC隻是提供了一個簡單的TCP,UDP和modbusTCP通信機製(zhì)。為了實現Soft dPAC與容器中的其(qí)它微服務通信(xìn)。需要設計(jì)一個軟(ruǎn)件網關,將TCP數據轉化成為(wéi)微服務的消息總線協(xié)議。為了簡單演示,我們(men)實現了一個TCP/MQTT的軟件網關(Soft Gateway),它采用Go語言編寫。
MQTT代理使用開源Eclipse Mosquitto。
(未完成,敬請期待吧!)