本文(wen)轉載(zai)自CSDN 作者:姚(yao)家(jia)灣(wan)
PART 1
背景資料
EcoStruxure Automation Expert的三層架構
施耐德電氣的(de)(de)EcoStruxure Automation Expert(簡稱為EAE),是一個自動(dong)化平臺,他們稱之為軟件為中心(xin)的(de)(de)工業(ye)自動(dong)化。EAE具有三層(ceng)架構。從底層(ceng)的(de)(de)PLC,變頻器(qi),傳感器(qi)到邊緣控(kong)制的(de)(de)軟件dPAC,到頂層(ceng)的(de)(de)應用,分(fen)析和服務。
EcoStruxure Automation Expert基本組成
軟件dPAC 的特性
EcoStruxure Automation Expert軟件dPAC是先進的(de)(de)多(duo)平(ping)臺IEC61499為基礎的(de)(de)控(kong)制(zhi)運行時(shi),它包括:
●基于事件,網(wang)絡透明的自(zi)動化能力
●原(yuan)生(sheng)過程告(gao)警支持
●modbus/TCP客(ke)戶端和服務器
●OPC UA服務器
●Ethernet/IP(在(zai)v20.2中支持有限平臺(tai)
EcoStruxure Automation Expert軟(ruan)件dPAC在(zai)一個標準(zhun)PC上使能(neng)一個開放,靈活,可(ke)擴展(zhan),高(gao)度集成(cheng)IEC61499運行時。從低成(cheng)本(ben)的(de)嵌入式系(xi)統到高(gao)性能(neng)IT服務器。
運行時(shi)在工(gong)業邊緣提供了集(ji)成和(he)運行先進IT工(gong)具,程序庫和(he)應用的開放平臺。這(zhe)是通過TCP/UDP socket和(he)直(zhi)接(jie)鏈(lian)接(jie)DLL庫的方式實現的。
這個公(gong)共運行時集成(cheng)硬件解決方案(an),比如Altivar 變頻器,Modicon M251 dPAC,Modicon M580 dPAC,加上linux系統上基于(yu)容(rong)器的虛擬(ni)軟(ruan)件運行時。
EcoStruxure Automation Expert的Linux軟(ruan)件dPAC兼容實時Linux內核,并且(qie)支持每臺機(ji)器(qi)上多個運行時同(tong)時運行,它們(men)通過modbus/TCP和Ethernet/IP通信。
軟件dPAC 的運行環境
由(you)此可見,Linux下的運行時有兩個版本:
●X86-64版本(ben)是Intel X86下的版本(ben)
●Arm HF版本是32位Arm版本。arm hf arm hard float的簡寫(xie)。
這就意味著Soft dPAC不僅(jin)能夠在Intel X86計算(suan)機(ji)上運行,也可(ke)以在Arm嵌(qian)入式平臺上運行,比如樹莓PI4,RK3399,H6等Arm板(ban)上運行。
Soft dPAC要求在docker容器(qi)(qi)中運(yun)行(xing)(xing)。施(shi)耐德電(dian)氣提供的是一個(ge)docker容器(qi)(qi)的image。直接可以在docker中安裝(zhuang)成為容器(qi)(qi)運(yun)行(xing)(xing)。
這(zhe)是一件令人興奮(fen)的事情,我們可(ke)以在各種邊緣(yuan)計算機上部署Soft dPAC,甚至可(ke)以將(jiang)它(ta)們部署在云(yun)端。和其它(ta)微服務(wu)協(xie)同操作。構建一個(ge)開(kai)發性系統。
構建邊緣計算架構
有(you)了docker版(ban)本(ben)的Soft dPAC,就可以將它(ta)部(bu)署到邊緣服(fu)務(wu)器上面,并(bing)且與docker容器中的其它(ta)微(wei)服(fu)務(wu)協同操作(zuo)。下面是(shi)一個典型的架構圖(tu):
前面提(ti)到,Soft dPAC提(ti)供了3種方式與外部程序交互
●動(dong)態庫(ku)DLL直接調用
●modbus TCP
●TCP/UDP方式。
docker容(rong)器(qi)中程序(xu)(xu)以微服(fu)(fu)務(wu)的方式運行(xing),所有的微服(fu)(fu)務(wu)通過一(yi)個(ge)統(tong)(tong)一(yi)的消(xiao)息(xi)系統(tong)(tong)實現消(xiao)息(xi)交(jiao)(jiao)換。比(bi)如RabbitMQ,MQTT等。為此,我(wo)們要設(she)計一(yi)個(ge)Soft Gateway程序(xu)(xu)將Soft dPAC TCP傳(chuan)輸的數據(ju)轉換成微服(fu)(fu)務(wu)消(xiao)息(xi),通過message bus信息(xi)交(jiao)(jiao)換。在這里我(wo)們選(xuan)擇簡單MQTT作為消(xiao)息(xi)總線。
PART 2
測試過程
安裝-解壓
解壓(ya)出(chu)EAE V20.2后有一個文(wen)件,這就是Linux版本Soft dPAC的壓(ya)縮包:
tar zxvf ./softdpac.tar
安裝image
sudo python3 install.py
啟動容器運行
按照文檔中的提示(shi)是運行startSoftdPAC.sh
sudo sh startSoftdPAC.sh
--ipbase 192.168.31.95
--itname enp1s0
--image-name softdpac:x86-v20.2-20315-1064
--nbcontainer 1
不過具體過程(cheng)中發現docker的(de)(de)端(duan)口51499沒有暴(bao)露(lu)除了來,直(zhi)接使用物理(li)端(duan)口IP地址也(ye)不是很好。可以(yi)使用docker的(de)(de)方式直(zhi)接安裝。我采用portainer 基于web的(de)(de)容器(qi)管(guan)理(li)工具。
PART 3
modbus/TCP 通信
在(zai)EAE中,有一個Modbus Software Gateway,可以(yi)實現與外(wai)部modbus TCP server的通信。這就(jiu)可以(yi)連(lian)接(jie)第三方的遠(yuan)程(cheng)IO模塊(kuai),也可以(yi)連(lian)接(jie)其它的應用程(cheng)序(xu)。
在EAE中(zhong),modbus是作為硬件(jian)功能塊來實(shi)現的(de)。需(xu)要在device List窗口中(zhong),指定設備擊右鍵選擇(ze) HW Configuration.
出現下面窗口(kou),選擇 Standard.IoModbus.MODBUS.
于是在HW Configuration中出現MODBUS項目。
下一步,在(zai)MODBUS端(duan)口添加設備,在(zai)MODBUS 下擊右(you)鍵,出現(xian)下面窗口。選擇MODBUSGENTCPS。
添加(jia)的MODBUSGENTCPS相當于(yu)Slave MODBUS設備。它(ta)內部的讀寫寄存器在一(yi)個XML 中定義。比(bi)如modbusmap.xml。如下面所示
最后還需(xu)要添加一個Standard.IoModbus.MODBUSSLAVEND.(不要忘(wang)記,我就是忘(wang)了,一直搞(gao)不通)
該文(wen)件(jian)可以存儲在Project文(wen)件(jian)夾中。下一(yi)(yi)步指向(xiang)MODBUSGENTCPS1擊右鍵,選(xuan)擇(ze)Modbus Gateway。彈(dan)出一(yi)(yi)個文(wen)件(jian)選(xuan)擇(ze)窗口。選(xuan)擇(ze) modbusmap.xml.
經過(guo)上面一(yi)系(xi)列添(tian)加之后,HW Configuration是這樣的:
我(wo)們(men)還需要設置上(shang)面(mian)窗口(kou)中所有項目的屬性(property),它們(men)包括:
MODBUS,
MODBUSGENTCPS1,
VAL_OUT1_MODBUSGENTCPS1
VAL_OUT2_MODBUSGENTCPS1
VAL_IN1_MODBUSGENTCPS1
VAL_IN2_MODBUSGENTCPS1
下面是相關項(xiang)目的屬性窗口。
MODBUS屬性
MODBUSGENTCPS1屬性
VAL_OUT1_MODBUSGENTCPS1 /VAL_OUT2_MODBUSGENTCPS1屬性
VAL_IN1_MODBUSGENTCPS1 /VAL_IN2_MODBUSGENTCPS1的屬性
要反復(fu)檢查,不要遺留(liu)。要不然也搞不定。
設置完成(cheng)后(hou),點擊HW Configuration邊上(shang)的(de)Mapping,這時切(qie)換到RES窗(chuang)口(kou),發現(xian)在里面(mian)添加(jia)了兩個(ge)功能塊MODBUSGENTCPS MBRead和MODBUSGENTCPS MBWrite.你可以添加(jia)連線如下圖。
GO語言(yan)編(bian)寫了一個(ge)簡單(dan)的modbus server
PART 4
TCP/UDP 通信
modbusTCP協議比較適(shi)合(he)soft dPAC連(lian)接遠程IO模(mo)塊,而TCP/UDP更(geng)適(shi)合(he)于軟件交換數據。EAE 有(you)一個NETIO功(gong)能塊提供給用戶(hu)建立特定的TCP,UDP通信(xin)。這個功(gong)能塊意義非凡,使(shi)用戶(hu)可以實現(xian)與非EAE程序(xu)的通信(xin)。
下面是(shi)一個簡單的例(li)子(zi):
ENDPOINT設(she)(she)置(zhi)外(wai)部應用的協議類(lei)型和IP地(di)址,端口。在(zai)(zai)EAE的文檔中解釋有點凌亂。我設(she)(she)置(zhi)為 TCP Client模式,在(zai)(zai)9200端口接收數據(ju),在(zai)(zai)與Soft dPAC同一臺主機上(shang)向9201發送(song)數據(ju)。
'TCP:9200;127.0.0.1:9201'
外部(bu)的測(ce)試程序采用GO 語(yu)言編(bian)寫,代碼如下:
運行(xing)的(de)結果如下:
PART 5
一個簡單的軟件網關(Soft Gateway)
Soft dPAC只是(shi)提(ti)供(gong)了(le)(le)一(yi)個簡單(dan)的TCP,UDP和modbusTCP通信機(ji)制。為(wei)了(le)(le)實(shi)現(xian)Soft dPAC與容器(qi)中的其它(ta)微服務通信。需要設計一(yi)個軟(ruan)件網(wang)關,將TCP數據轉化成為(wei)微服務的消(xiao)息總(zong)線(xian)協議。為(wei)了(le)(le)簡單(dan)演示(shi),我們實(shi)現(xian)了(le)(le)一(yi)個TCP/MQTT的軟(ruan)件網(wang)關(Soft Gateway),它(ta)采用(yong)Go語言編寫。
MQTT代理使用(yong)開源Eclipse Mosquitto。
(未完成(cheng),敬請期待吧!)