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