sunzengli
級別: 論壇先鋒
|
我現在有6個遠程站,相隔幾百米,走modbus rtu通訊,2個站共用一個電柜,變頻器控制水泵,一個變頻器一個站對應一個水泵,一備一用,備用的在不使用時,電源是關閉的。這樣在輪詢時就會產生問題,主站PLC這邊并不知道遠程站是哪個泵在啟用,由于有變頻器沒有上電,所以是通訊不上的,導致輪詢時間非常長,我現在不知道用什么辦法能排除這種影響,只有一根485通訊線和遠程電柜交互數據,想不到好的處理辦法。 請各位指點一二,謝謝。 |
---|---|
|
sunzengli
級別: 論壇先鋒
|
就只沒辦法知道啊,什么辦法能知道呢?再拉一根線?好幾百米,很麻煩。 |
---|---|
|
不小心遇見你
自動項目、PLC、視覺、通訊等工控軟件開發QQ3515716
級別: 工控俠客
|
一看你就是沒有經驗 盡量考慮全面一些。這些都是我根據你的描述做出的自己理解,若有出入,請忽略 1、首先輪詢時如果通訊失敗有錯誤代碼反饋,一般無法聯系主機或者主句無響應,只能認為離線,注意這里的離線是兩種我們歸為一種,沒電離線和斷線離線。注意這里是根據錯誤代碼判斷 2、離線后,做一個標志不再訪問該該站,因為你是2個站,一個bool即可,bool設置為ture,然后訪問2號站,如果2號站訪問成功就訪問,訪問不成功,就把bool設置為false,接著訪問1站。 3、注意這里有2個問題: a、否訪問成功時,還需判斷運行狀態,最好有能判斷運行狀態的,那個bool和這個運行狀態也要關聯,只有通訊OK且設備運行時才繼續訪問,否則來回的切換。比如1和2號站都訪問成功且沒有運行,這時候就報設備未運行。 b、兩個都訪問不成功時,敲黑板:我說的是訪問不成功時(就不存在運行狀態的判斷了),短時間內輪序次數超過2次即可報異常,比如設備均為運行 |
|
---|---|---|
|
sunzengli
級別: 論壇先鋒
|
對于操作工來說,這很難,一個是距離很遠,判斷要過去看,另外一個,對于操作工來說,哪個站要斷開他并不一定清楚地知道。 |
---|---|
|
sunzengli
級別: 論壇先鋒
|
沒電離線和斷線離線是兩種代碼?你確定嗎? |
---|---|
本帖最近評分記錄: |
gxtmdb82164
級別: 論壇先鋒
|
你這里本質上是控制電源和動力電源沒分開的問題,但是你線都已經拉了,這個事情只能迂回解決了~ 標準解決方案中,從站的通信模塊或者從站模塊的供電屬于控制電源,要么直接從主站和通信線一起拉出來,要么在從站和動力電源分開,動力電源是可以下電的,而且下電以后是有反饋的。如果按這個方案,你看你的問題不就解決了~ 但是木已成舟了,現在還有一些迂回的方案可以解決。 1、最簡單,自己寫輪詢,縮短等待時間,這個應該是有效果的,因為你從站并不多。而且這里有個小技巧就是,確認不在線的總站可以用更低的頻率去connect,比如2s、5s甚至10s,這樣可以相當大程度上實現通信的自動恢復,而且不影響正常的周期性數據讀寫。 2、在每個從站加一個IO模塊檢測變頻器在線情況,然后這個模塊要保證不下電的,也就是說這幾個IO模塊始終在線,讀寫變頻器前先讀IO模塊,看看哪個在線哪個不在線。 ps:都2024年了,推薦所有需要拉幾百米線的場合全部從485換到以太網(家用以太網標準是150M,請確認使用了工規以太網設備),你這個情況如果是以太網且不說網絡容量沒有限制,單是供電這個問題POE加上就原地解決了。而且即便是終端設備是RTU,現在以太網轉RTU也便宜的要死,很多智能型網關模塊都可以替代PLC做數據輪詢,你這個場景下直接從網關就能讀到設備是否在線,如果在線,數據也都給你準備好了,更簡單~ |
---|---|
|
喊聲靚仔
級別: 正式會員
|
聲明2個變量,從站1超時,從站2超時。判斷從站的超時次數把這2個變量置True,然后在你的輪詢程序里面加上這2個條件的判斷,如果從站1超時為True,流程步就跳過從站1的數據收發就好了 |
---|---|
|