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