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