1. 程式人生 > 其它 >特定場景下的PLC 遠端控制和資料讀取

特定場景下的PLC 遠端控制和資料讀取

最近有位博友提出了一種應用場景,根據工作中實際遇到的類似的產品應用場景,記錄下自己的解決方案。

場景: 需要在雲端控制和採集各個站點的PLC資料。各個站點是分散的,每個站點有公網訪問能力。部分PLC站點裝置不知一臺,分散站點的PLC沒有固定IP。

方案一:

在這種場景下,其實最優和高效的解決方案是,使用物聯網閘道器+MQTT的方式最可靠。這種方案比較簡單,在每個站點的PLC上層加上物理網閘道器,閘道器與PLC裝置進行資料通訊。物聯網閘道器一般支援多種資料協議,包括像Modbus等工控協議。

所以使用物聯網閘道器 就不需要考慮裝置層的協議解析問題,這部分工作閘道器內已經整合過了,然後閘道器多數會以MQTT的形式傳送資料,MQTT報文多數為JSON格式的明文。所以採集只需按照不同廠家的閘道器的上傳格式解析json字串就能拿到資料,

控制的話流程也是這樣,按照指定的格式拼裝JSON字串通過MQTT傳送即可,MQTT服務的搭建我在之前的部落格中介紹過,這裡不在贅述。

所以使用物聯網閘道器可以省去很大一部分工作量,但是缺點就是閘道器的費用是一筆不小的支出。還有就是現場沒有寬頻網路的話就需要使用物理網絡卡,通過3/4/5G通道傳輸。這樣的話流量費也是比較大的支出。

所以專案經費充足,穩定性要求高的話可以採用這種方案。

方案二:

這裡重點介紹下經濟實惠的方案二。方案二採用Modbus協議直讀的方式.

簡單介紹下大致思路,首先站點分散,每臺PLC沒有固定IP,這樣的話傳統方式,在雲伺服器安裝組態然後再去給各個PLC建點,讀取資料的方式顯然走不通。因為再雲伺服器找不到各個站點的PLC,在這種情景下,雲伺服器對各個PLC是可見的,

因為雲伺服器有公網IP,各個站點可以訪問,但是雲伺服器無法訪問到各個裝置,因為他們不在一個局域網裡。

所以傳統路線是無法獲取資料。考慮下別的思路。

在這裡考慮用到虛擬串列埠+Modbus 直讀的方式實現,這也是在類似專案遇到相同問題後的解決方案。在中小型規模的情況下滿足使用需求,資料採集響應時間在5s內,當然也可以對程式進一步優化達到更好的效果。

具體方法:

步驟一,開啟虛擬串列埠工具,監聽TCP埠,注意選擇TCPServer,埠選擇已經對映過的且公網能訪問的埠即可,

第二步:在與PLC相連的DTU上配置好 IP和埠,就是上面配置的監聽埠。這樣的話站點PLC 就通過TCP的形式和伺服器建立起了連線。說到這裡大家應該就清楚了,通過DTU和虛擬串列埠的目的,就是間接的將PLC與伺服器連線在一起,這就好比通過一根無形

的串列埠線將PLC與伺服器連線在一起,這樣的話。接下來就該怎麼讀取就怎麼讀了,直接通過modbus從虛擬串列埠讀取就可以了。控制也是一樣。

我這裡用Modsim模擬PLC

Modsim 連線串列埠三 COM3,這裡TCPClient 就是實際應用中的DTU,連線到伺服器的 8234 埠。這樣PLC就與伺服器連線上了。

然後,這裡伺服器我用kepserver 建了2個點模擬讀取,

讀取成功

這裡大家可能會有疑問,如果多臺PLC怎麼辦,其實是一樣的,但是這裡的多臺PLC需要通過PLC 的DeviceID來區分。 多臺PLC也是統一發到伺服器的一個監聽埠的。

這樣,這種思路的PLC資料讀取的方式就結束了。其實效果還是可以的。