目前市面上有很多遠(yuǎn)程升級PLC程序的產(chǎn)品,這些設(shè)備的原理大多是VPN。
在PLC的局域網(wǎng)里需要接入一個設(shè)備,這個設(shè)備具有4G聯(lián)網(wǎng)或者通過網(wǎng)線聯(lián)網(wǎng)的功能,這個設(shè)備里面有個VPN的客戶端,啟動后連接到VPN的服務(wù)器端。這樣在你的電腦上需要安裝一個VPN的客戶端,啟動VPN后,你的電腦就和遠(yuǎn)程的PLC的局域網(wǎng)構(gòu)成了一個虛擬局域網(wǎng),這樣就可以實現(xiàn)遠(yuǎn)程下載程序。
今天我說的這個方法,和這個也是有點類似,也需要有個公網(wǎng)服務(wù)器,本地需要一個類似于網(wǎng)關(guān)的設(shè)備,核心點是端口映射,也就是常說的內(nèi)網(wǎng)穿透。
工具簡介-Frp
開始之前,先簡單介紹一下這個內(nèi)網(wǎng)穿透的工具:frp?這是一個開源的工具,采用go開發(fā)的,跨平臺,不管你是arm平臺、x86、還是mips都可以,這三種平臺我都用過。具體的使用方法這里就不詳細(xì)介紹了,參考《分享一個內(nèi)網(wǎng)穿透工具frp》。
原理介紹
我這里是使用的西門子的Smart 200系列的PLC,組態(tài)屏是昆侖通態(tài)。
PLC遠(yuǎn)程
如上圖,左邊部分是通過網(wǎng)關(guān)里的frp將PLC的102端口映射到公網(wǎng)服務(wù)器的10010端口。
右邊部分是用戶使用PLC編程軟件連接這個映射出來的端口的過程,至于中間為什么要加一臺TCP端口轉(zhuǎn)發(fā)的設(shè)備(電腦或者嵌入式設(shè)備),是因為PLC的軟件不支持設(shè)置端口,只能連接默認(rèn)的102端口,所以,這里需要一臺TCP端口轉(zhuǎn)發(fā)設(shè)備,將監(jiān)聽102端口,并將102的數(shù)據(jù)轉(zhuǎn)發(fā)到公網(wǎng)服務(wù)器的10010端口。
有人可能會問,為啥不直接在用戶電腦上啟動一個端口轉(zhuǎn)發(fā)工具,將127.0.0.1 的102端口直接轉(zhuǎn)發(fā)到公網(wǎng)的1001端口?這個我測試了下,連不上,可能和PLC的編程軟件有關(guān)吧,沒有做細(xì)究。
組態(tài)屏遠(yuǎn)程
MCGS組態(tài)軟件連接組態(tài)屏下載軟件的TCP端口是127,這個端口是測試出來的,測試方法也比較簡單:
目標(biāo)機(jī)名那里隨便輸入一個局域網(wǎng)的IP,點擊通訊測試,然后在Windows的cmd命令行輸入命令:
netstat?-nt?|?findstr?192.168.1.218
如下圖結(jié)果:
22端口是我連接的ssh,第2次查詢時多出來一個連接,連接的tcp端口是127,這個端口就是組態(tài)軟件下載程序的端口,我們可以把組態(tài)屏的127端口給映射出來即可。
示例圖:
是不是很奇怪,剛才說的PLC不能用的方法,組態(tài)屏可以用,所以說這個和編程軟件有關(guān)系。
來測試一下:
軟件上提示通訊測試正常,看左邊的端口轉(zhuǎn)發(fā)工具,上面可以顯示出tcp的交互數(shù)據(jù),一不小心把協(xié)議數(shù)據(jù)也抓到了O(∩_∩)O~
tcp端口轉(zhuǎn)發(fā)工具
這個TCP端口轉(zhuǎn)發(fā)工具最新版本參見往期博客《qt5-Tcp端口轉(zhuǎn)發(fā)服務(wù)器更新》https://blog.csdn.net/wuquan_1230/article/details/123727649
這個tcp端口轉(zhuǎn)發(fā)工具用處很多,特別是調(diào)試通信時,觀察通信交互過程中的數(shù)據(jù),非常方便,而且還包含了網(wǎng)絡(luò)調(diào)試助手的功能,也就是說你可以偽造數(shù)據(jù)發(fā)給服務(wù)端或者客戶端!
來張高清圖:
結(jié)束語
使用這個方法是因為正好項目里是用到控制器(網(wǎng)關(guān))+PLC這種方式,所以這樣用起來挺方便,不用再單獨裝一臺PLC的遠(yuǎn)程設(shè)備。這里沒有詳細(xì)介紹frp的配置,frpc是客戶端,運行在網(wǎng)關(guān)設(shè)備里,或者是電腦上都可以,網(wǎng)上好多教程。