modbus3-关于Modicon Modbus Protocol和modscan32
生活随笔
收集整理的這篇文章主要介紹了
modbus3-关于Modicon Modbus Protocol和modscan32
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Modbus 是Modicon 家的東東,所有的規矩都要它說了算。
先看一下modscan32對上文的設備的測試結果
01.
監視到串口的數據如下:
發出:01 01 00 00 00 03 7C 0B ?? ? ? ? ? ? ? ? //01站地址,01功能號,00 00 起始地址,00 03要讀的數據個數
接收:01 01 01 03 11 89 ?? ? ? ? ? ? ? ? ? ? ? ? ? //01站地址,01功能號,01返回的字節數,02即0000 0011 對應1個字節(后3位有效)
02.
監視到串口的數據如下:
發出:01 02 00 00 00 03 38 0B?? ? ? ? ? ? ? ? //01站地址,02功能號,00 00 起始地址,00 03要讀的數據個數
接收:01 02 01 03 E1 89 ?? ? ? ? ? ? ? ? ? ? ???? //01站地址,02功能號,01返回的字節數,03即0000 0011 對應1個字節(后3位有效)
03.
監視到串口的數據如下:
發出:01 03 00 00 00 03 05 CB ?? ? ? ? ? ? ? ? //01站地址,03功能號,00 00 起始地址,00 03要讀的數據個數
接收:01 03 06 00 00 00 01 00 02 F1 74??? //01站地址,03功能號,06返回的字節數,00 00 00 01 00 02 對應6個字節3個數
04.
監視到串口的數據如下:
發出:01 04 00 00 00 03 B0 0B ?? ? ? ? ? ? ? ? //01站地址,04功能號,00 00 起始地址,00 03要讀的數據個數
接收:01 04 06 00 00 00 01 00 02 B0 92??? //01站地址,04功能號,06返回的字節數,00 00 00 01 00 02 對應6個字節3個數
可以看到,modscan32
讀modbus地址00001時,使用的是01功能號,并且發出的起始地址是0
讀modbus地址10001時,使用的是02功能號,并且發出的起始地址是0
讀modbus地址30001時,使用的是04功能號,并且發出的起始地址是0
讀modbus地址40001時,使用的是03功能號,并且發出的起始地址是0
恩,這是modicon modbus 地址的規范。40001屬于應用層,功能號部分應該屬于"數據鏈路層"
最終交付給客戶的地址都應該是如40001等形式的modbus地址,比如你如果定義40001為冰機蒸發器出水溫度,對于一般的軟件如modscan32,ModbusSerialDAServer都是采用modbus標準協議來寫的,所以他們讀取40001時,會發03功能號和地址0,所以在設備的響應程序里應該在接到03功能號和地址0的時候將這個溫度值發出。
即對應關系是:modbu地址--->功能號,地址--->設備內部定義的變量
另外對modbus功能碼:
01讀取線圈狀態,線圈為可讀可寫,比如plc中的DO可讀可寫,也可以是plc或單片機的某個內部位變量。
02讀取輸入狀態,輸入為只讀,比如plc中DI的狀態
03讀取保持寄存器,保持寄存器為可讀可寫,比如plc中的AO通道,也可以是plc或單片機的某個內部變量
04讀取輸入寄存器,輸入寄存器為只讀,比如plc中的AI通道
05強制單個線圈
06強制單個保持寄存器
對modbus的功能碼后的地址:
對于單片機可以是實際的某個寄存器,也可以是某個內部變量,按需選擇。
refer to
Modicon Modbus Protocol Reference Guide
http://bbs.cechina.cn/thread-81236.html
**********************************************************************************************************************************************************************************
modscan32沒有寫功能,就試著對照著它也寫了一個基于view/document的modbus讀寫小工具,取名叫modscan36。
http://blog.csdn.net/luck_good/article/details/6973651
先看一下modscan32對上文的設備的測試結果
01.
監視到串口的數據如下:
發出:01 01 00 00 00 03 7C 0B ?? ? ? ? ? ? ? ? //01站地址,01功能號,00 00 起始地址,00 03要讀的數據個數
接收:01 01 01 03 11 89 ?? ? ? ? ? ? ? ? ? ? ? ? ? //01站地址,01功能號,01返回的字節數,02即0000 0011 對應1個字節(后3位有效)
02.
監視到串口的數據如下:
發出:01 02 00 00 00 03 38 0B?? ? ? ? ? ? ? ? //01站地址,02功能號,00 00 起始地址,00 03要讀的數據個數
接收:01 02 01 03 E1 89 ?? ? ? ? ? ? ? ? ? ? ???? //01站地址,02功能號,01返回的字節數,03即0000 0011 對應1個字節(后3位有效)
03.
監視到串口的數據如下:
發出:01 03 00 00 00 03 05 CB ?? ? ? ? ? ? ? ? //01站地址,03功能號,00 00 起始地址,00 03要讀的數據個數
接收:01 03 06 00 00 00 01 00 02 F1 74??? //01站地址,03功能號,06返回的字節數,00 00 00 01 00 02 對應6個字節3個數
04.
監視到串口的數據如下:
發出:01 04 00 00 00 03 B0 0B ?? ? ? ? ? ? ? ? //01站地址,04功能號,00 00 起始地址,00 03要讀的數據個數
接收:01 04 06 00 00 00 01 00 02 B0 92??? //01站地址,04功能號,06返回的字節數,00 00 00 01 00 02 對應6個字節3個數
可以看到,modscan32
讀modbus地址00001時,使用的是01功能號,并且發出的起始地址是0
讀modbus地址10001時,使用的是02功能號,并且發出的起始地址是0
讀modbus地址30001時,使用的是04功能號,并且發出的起始地址是0
讀modbus地址40001時,使用的是03功能號,并且發出的起始地址是0
恩,這是modicon modbus 地址的規范。40001屬于應用層,功能號部分應該屬于"數據鏈路層"
最終交付給客戶的地址都應該是如40001等形式的modbus地址,比如你如果定義40001為冰機蒸發器出水溫度,對于一般的軟件如modscan32,ModbusSerialDAServer都是采用modbus標準協議來寫的,所以他們讀取40001時,會發03功能號和地址0,所以在設備的響應程序里應該在接到03功能號和地址0的時候將這個溫度值發出。
即對應關系是:modbu地址--->功能號,地址--->設備內部定義的變量
另外對modbus功能碼:
01讀取線圈狀態,線圈為可讀可寫,比如plc中的DO可讀可寫,也可以是plc或單片機的某個內部位變量。
02讀取輸入狀態,輸入為只讀,比如plc中DI的狀態
03讀取保持寄存器,保持寄存器為可讀可寫,比如plc中的AO通道,也可以是plc或單片機的某個內部變量
04讀取輸入寄存器,輸入寄存器為只讀,比如plc中的AI通道
05強制單個線圈
06強制單個保持寄存器
對modbus的功能碼后的地址:
對于單片機可以是實際的某個寄存器,也可以是某個內部變量,按需選擇。
refer to
Modicon Modbus Protocol Reference Guide
http://bbs.cechina.cn/thread-81236.html
**********************************************************************************************************************************************************************************
modscan32沒有寫功能,就試著對照著它也寫了一個基于view/document的modbus讀寫小工具,取名叫modscan36。
http://blog.csdn.net/luck_good/article/details/6973651
轉載于:https://www.cnblogs.com/-song/archive/2011/11/05/3331935.html
總結
以上是生活随笔為你收集整理的modbus3-关于Modicon Modbus Protocol和modscan32的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安装centos6.0 未找到任何驱动器
- 下一篇: modbus4-232 485 单机 多