本文轉載自CSDN 作者:姚家(jiā)灣
PART 1
背景資料
EcoStruxure Automation Expert的三層架構
施耐德電氣的EcoStruxure Automation Expert(簡稱(chēng)為EAE),是一個自動化平台,他們(men)稱之為軟件為中心的工業自動化。EAE具有三層架構。從底層的PLC,變頻器,傳感器到邊緣控製的軟件dPAC,到頂層的應(yīng)用,分析和服務。

EcoStruxure Automation Expert基本(běn)組成

軟件dPAC 的特性
EcoStruxure Automation Expert軟件dPAC是先進(jìn)的多平台IEC61499為基礎的控製運行時,它(tā)包括:
●基於事件,網絡透明的自動化能力
●原生過程告警支持
●modbus/TCP客戶端和(hé)服務器(qì)
●OPC UA服務(wù)器
●Ethernet/IP(在v20.2中支持有限(xiàn)平台
EcoStruxure Automation Expert軟件dPAC在一個標準PC上(shàng)使能一個開放,靈活,可擴展,高(gāo)度集成IEC61499運行時。從低成本的嵌入(rù)式係統到高性能IT服務器。
運行時在工業邊緣提供了集成和運行先進IT工具,程序庫和應用(yòng)的開放平台。這是(shì)通過TCP/UDP socket和直接鏈接DLL庫的方式實(shí)現的。
這個公共運(yùn)行時集成硬件(jiàn)解決方案(àn),比如Altivar 變頻器,Modicon M251 dPAC,Modicon M580 dPAC,加上linux係統上基於容器的虛擬軟(ruǎn)件運行時。
EcoStruxure Automation Expert的Linux軟件(jiàn)dPAC兼容實(shí)時Linux內核,並且支持每台機器上多個運行時同時運行,它們通過modbus/TCP和Ethernet/IP通(tōng)信。
軟件dPAC 的運行環(huán)境

由此可見,Linux下的運行時有兩個版本:
●X86-64版本是Intel X86下的版本
●Arm HF版本是32位Arm版(bǎn)本。arm hf arm hard float的簡寫。
這就意味(wèi)著Soft dPAC不僅能夠在Intel X86計算機上運行,也可以在Arm嵌入式平台上運行,比如樹(shù)莓PI4,RK3399,H6等(děng)Arm板上運行。
Soft dPAC要求在docker容器中運行(háng)。施(shī)耐德電(diàn)氣提供的是一個docker容(róng)器的image。直接可以在docker中安裝成為容器運行。
這是一件令人興奮的事情,我們可以在各種邊緣計算機上部署Soft dPAC,甚(shèn)至可以將它們部署在(zài)雲端。和其它微服(fú)務協同(tóng)操(cāo)作。構建(jiàn)一個開發性係統。
構建邊緣計算架構
有了docker版本(běn)的(de)Soft dPAC,就可以將它部署到邊緣(yuán)服務器上(shàng)麵,並且與docker容器中的其它微服務協(xié)同操作。下麵是一個典型的架(jià)構圖:

前麵提到,Soft dPAC提供了3種方式與外(wài)部程序交互
●動態庫DLL直接調用
●modbus TCP
●TCP/UDP方式。
docker容器中程序以微服務的方式運行,所有的微服務通過一(yī)個統一的消息係統實現消息交換。比如RabbitMQ,MQTT等。為此,我們要設計一個Soft Gateway程(chéng)序將Soft dPAC TCP傳輸的數據轉換成微服務消息,通過message bus信息交換(huàn)。在這(zhè)裏我(wǒ)們選擇簡單MQTT作為消息總線。
PART 2
測試過程
安裝-解壓
解壓出EAE V20.2後有一個文件,這就是Linux版本Soft dPAC的壓縮包:
tar zxvf ./softdpac.tar
安裝image
sudo python3 install.py
啟動容器運行
按照文檔中的提示是(shì)運行startSoftdPAC.sh
sudo sh startSoftdPAC.sh
--ipbase 192.168.31.95
--itname enp1s0
--image-name softdpac:x86-v20.2-20315-1064
--nbcontainer 1
不過具體過程中發現docker的(de)端口51499沒有暴露除了(le)來,直接使用物理端口IP地址也不(bú)是很好。可(kě)以(yǐ)使用docker的方式直接安裝。我采(cǎi)用portainer 基於web的容器管理工(gōng)具。

PART 3
modbus/TCP 通信
在EAE中,有一個Modbus Software Gateway,可以實現與外部modbus TCP server的通信。這(zhè)就可以連接第三方的遠程IO模塊,也可以連接其(qí)它的應用程序。

在EAE中,modbus是作為硬件功能塊(kuài)來實現的。需要(yào)在device List窗(chuāng)口中,指定設備擊右鍵選擇 HW Configuration.

出現下麵窗口(kǒu),選擇 Standard.IoModbus.MODBUS.

於是在HW Configuration中出現MODBUS項目。
下一步,在MODBUS端口添加設備,在MODBUS 下擊右鍵(jiàn),出現下(xià)麵窗口。選擇MODBUSGENTCPS。

添加的MODBUSGENTCPS相當(dāng)於Slave MODBUS設備(bèi)。它內部(bù)的(de)讀寫寄存器在一個(gè)XML 中定義。比如modbusmap.xml。如下麵所示(shì)
最後還需要添加一個Standard.IoModbus.MODBUSSLAVEND.(不要忘記,我就是忘了,一直搞不通)

該(gāi)文件可以存儲在Project文件夾中。下一步指向(xiàng)MODBUSGENTCPS1擊右(yòu)鍵,選擇Modbus Gateway。彈出一個(gè)文件選擇窗口。選擇 modbusmap.xml.

經過上麵一係列添加之後,HW Configuration是這樣的:

我們還需要設置上麵窗口中所有項目的屬性(property),它們包括:
MODBUS,
MODBUSGENTCPS1,
VAL_OUT1_MODBUSGENTCPS1
VAL_OUT2_MODBUSGENTCPS1
VAL_IN1_MODBUSGENTCPS1
VAL_IN2_MODBUSGENTCPS1
下麵是(shì)相(xiàng)關項目的屬性窗口。
MODBUS屬性

MODBUSGENTCPS1屬性

VAL_OUT1_MODBUSGENTCPS1 /VAL_OUT2_MODBUSGENTCPS1屬性

VAL_IN1_MODBUSGENTCPS1 /VAL_IN2_MODBUSGENTCPS1的屬(shǔ)性

要反複檢查,不(bú)要遺留。要不然也搞不定。
設置完成後,點擊HW Configuration邊上的Mapping,這時切換到RES窗口,發現在裏麵添加了兩(liǎng)個功能塊MODBUSGENTCPS MBRead和MODBUSGENTCPS MBWrite.你可(kě)以添加連線如下圖(tú)。

GO語言編寫了一個簡單的modbus server

PART 4
TCP/UDP 通信
modbusTCP協議比較適合soft dPAC連接遠程IO模塊,而TCP/UDP更適合(hé)於軟件交換(huàn)數據。EAE 有(yǒu)一個NETIO功能塊提供給用戶建立特定的TCP,UDP通信。這個功能塊意義非凡,使用戶(hù)可以實現與非EAE程序的通信。
下麵是一個簡單的例子:

ENDPOINT設置外部應用的協議類型和IP地址,端口。在EAE的文檔中解釋有點淩亂。我設置為 TCP Client模式,在9200端口接收數據,在與Soft dPAC同一台主(zhǔ)機上向9201發送數據。
'TCP:9200;127.0.0.1:9201'
外部的測試程序采用GO 語言編寫,代碼如下:

運行的結果如下:

PART 5
一個簡(jiǎn)單的軟件網關(Soft Gateway)
Soft dPAC隻是提供了一個(gè)簡單的TCP,UDP和modbusTCP通信機製。為了實現Soft dPAC與容器中的其它微服(fú)務通信。需要設計一個軟件(jiàn)網關,將TCP數據(jù)轉化成為微服(fú)務(wù)的消(xiāo)息總線協議。為了(le)簡單演示,我們實現了一個TCP/MQTT的軟件網關(Soft Gateway),它采用Go語言編寫。
MQTT代理使用開源(yuán)Eclipse Mosquitto。
(未完成(chéng),敬請(qǐng)期待吧!)