本篇就MODBUS的設定來說明,
其他原理來類的,就請GOOGLE吧!
或參考這篇:MODBUS介紹
----正文開始-----
第一步:選定硬體通訊方式,RS232/RS485/MODBUS
第二步:設定通訊參數,通訊鮑率/位元數/
第三步:選擇要讀\寫的參數
正常應該完成了。
如果出問題:
第四步:檢查錯誤碼
第五步:用電腦來收/發的資料。
第六步:用示波器來量傳輸訊號。
==================
第一步:選定硬體通訊方式:
依外部裝置跟主控裝置,選定硬體通訊方式。
要注意的事:
RS232通訊只能一站。
RS485跟ETHERNET能多站。
例:
主站(PLC)硬體及接線腳位:COM2/RS485/PIN2 D+/PIN3 D-
從站(外部裝置):RS485/D+ D-
注:通訊方式一定要一致,不可RS232跟RS485通訊。
==============
第二步:設定通訊參數
相關通訊參數:
站號:(主站不需要)
通訊鮑率:9600/19200/38400
資料位元:7/8 位元
同位元檢查:O/E/N
停止位元:1/1.5/2
資料格式:ASCII/RTU (選擇RTU資料位元只能選8位元)
例:
主站(PLC):
通訊鮑率:9600
資料位元:8 位元
同位元檢查:O
停止位元:1
資料格式:RTU
從站(溫控器)
站號:1 (站號不可重覆)
通訊鮑率:9600
資料位元:8 位元
同位元檢查:O
停止位元:1
資料格式:RTU
*通訊參數要一致,不然無法通訊,最好將上敘參數記錄下來,一一設定。
=====================
第三步:選擇要讀\寫的參數
選定我們要讀取的參數,在手冊內查是否有對應的通訊位址:
下圖為台達溫控的手冊:
就在參數旁,直接顯示通訊位址,在紅線內也有提到通訊的功能碼03(重要)
如果是Modicom Format的位址呢?
Modicom Format就已經內含功能碼
4XXXX 是功能碼03,將該值減40001可以得到通訊位址
3XXXX 是功能碼04,將該值減30001可以得到通訊位址。(一般支援03功能碼較多04要另外設定)
參數要注意的地方:
**有些參數只能讀OR寫,如果對該參數執行錯誤的動作,會錯誤。或沒有回應。
====
一般來說到這邊就完成了,大部份不會有問題。
如果出問題了。
====
第四步:檢查錯誤碼
通訊錯誤,通常會回覆通訊錯誤碼。
一般來說:外部設備如果對通訊命令有問題。
1.會將功能碼的最高位元設"1"
例:
如果PLC發的是功能碼03
設備錯誤時,會回傳83,就表示通訊有問題。
2.會將錯誤碼,接在功能碼之後。
除了將功能碼最高位元設"1"
後面也會接錯誤碼,讓使用者方便查詢。
通常在手冊當中可以查到通訊錯誤碼。
*通訊錯誤碼,跟一般的錯誤碼不同,不可搞混。
=========
第五步:用電腦來收發出的資料。
如果PLC發出MODBUS指令,但沒有回傳。
通常是設定有問題,可以先將通訊參數全部確認一次。
有些參數修改,需要重新開關機。(**注意)
都確認過了,那就要用電腦來收PLC的資料,看PLC是否有真的將命令發出。
可以參考這影片:
Rs485檢測工具程式
除了可以收 PLC發出的資料外,
也可以模擬PLC發出的命令,對外部裝置通訊,看是否會回應。
如果電腦發出都不會回應,不是通訊設定有問題,就是通訊硬體錯了。
===========
第六步:用示波器來量傳輸訊號
如果前面的部份都正常,或是PC可以通訊,PLC無法通訊,
最後都可以用示波器來量波型。
MODBUS的指令,最底層,還是利用010101二進制碼在傳送,
所以利用示波器可以查到波型是否正常,有無被干擾。
或是訊號的衰減。
類似:
示波器抓通訊資料
請教一下,若是想要在沒有MODBUS模組的PLC透過RS-485與具有MODBUS功能的裝置(如電錶)做通訊,應該要怎麼做呢?
回覆刪除感謝回答!
Modbus是軟體的協議,
刪除所以硬體跟一般的232、485、ETHERNET並沒有不同。
所以只要有232、485、ETHERNET埠,
雖然有串列通訊指令,就可以達到MODBUS通訊功能了。
MODBUS專用模組是做什麼用!?
其實只是幫你處理,像是CRC檢查碼、LRC檢查碼,
自動發送等等自動的功能。
所以不用專用模組也可以。
我自已本就用三菱非專用MODBUS模組,一般通訊埠,
自已在PLC寫功能碼這些,
就可以通訊了。
原來如此!
刪除我也是使用三菱PLC目前嘗試不靠模組,直接用RS-485通訊。
那請問有什麼通訊的例子可以供我參考嗎?
我想試著寫,但在第一關設定通訊參數這邊就卡關不知道從何下手
當初我在測試時的一些資料:
刪除串列通訊模組 QJ71C24
https://vkinngworld.blogspot.tw/2014/09/qj71c24.html
資料搬移的一些相關指令
https://vkinngworld.blogspot.tw/2015/10/modbus-ascii.html?m=0
用PLC不加通訊模組連接外部485的模組。
回覆刪除要先分解資料串,並用相同的時脈,模擬485格式的資料串送出的時間及間隔。理論上是能達成的。但是還有寫接收的解碼。
個人拙見
如果不加通訊模組,不只是非modbus,是幾乎不太可能的。
刪除因為通訊的基本(最低)鮑率就4800bps(bit per sec)
(再低就非標準了)
代表每個output要有4800次變化,在目前的plc幾乎是不可能的。
所以用通訊模組,來取代modbus模組是可行。
用output(非通訊模組) 應該是不可能。需要更高速的上位。
陳先生您好:
回覆刪除想請問如果三菱的PLC(FX-3U)搭配左側外接模組485ADP-MB模組想與溫溼度感測器做RS-485通訊(已知感測器有485通訊功能),而廠商給我的是感測器的Modbus Protocol,而我一直收不到感測器的485訊號,是否感測器的為只需要另行解碼動作呢?
1.感測器也是要設定的,站號、ASCII/RTU通訊速度、位元....
刪除2.把485ADP-MB設定跟感測器一樣。
3.找出你要讀取資料的位址。例:0000H 或 40001
4.感測器支援的功能碼Command Code,一般常用的是 03,但有的要用04
5.利用ADPRW來讀取
https://vkinngworld.blogspot.tw/2016/05/fx3u-485adp-mb-fx3modbus.html
志豪大哥:
回覆刪除我是岳霖,感謝你發這篇文章。
"所以只要有232、485、ETHERNET埠,
雖然有串列通訊指令,就可以達到MODBUS通訊功能了。"
我想繼續追問這句話,因目前遇到設備(電空比例閥RS-232C),因不清楚是否有MODBUS,但是我若是PLC(RS-232)選擇FX3U-232-BD這款沒有MODBUS的應該也是能通訊?
另外請問,(Slave)設備沒有MODBUS的狀況多嗎? 感覺應該不常見?!
有rs232,沒有支援modbus的也有很多
刪除請教一下,目前想用fx3u-485-bd這塊模組,有辦法抓到modbus的表頭嗎? 是要用rs指令嗎?感謝老師
回覆刪除fx3u-485-bd這塊沒有MODBUS協議,所以要連MODBUS的錶頭,會很累,但也是可以的,
刪除是用RS指令沒錯。
不好意思想問一下
回覆刪除我使用FX3U-485ADP-MB做通訊三菱E720變頻器讀取頻率可以讀到
但無法寫入.我想要外部啟動然後用通訊丟頻率..請問有範例或那裡要注意的地方嘛.感謝感謝
1.如果能讀頻率 應該會寫通訊。
刪除2.不能寫入,有回覆錯誤碼嗎?
3.應該有參數設定,使用通訊寫入的頻率,非一般面板或類比
4.剛看手冊,設定頻率有兩個命令碼,一個讀取一個寫入,有確定寫對地方嗎?