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