FreeModbus 移植--REG_INPUT_START 各种寄存器起始地址
来源:互联网 发布:java api中文版下载 编辑:程序博客网 时间:2024/06/01 09:29
实际上modbus协议原本是用在plc上的,plc的第一个数据起始地址就是1。
如果起始地址为0,会导致第一个寄存器数据无法读出,因为你从modbusPoll发出去看上去是从0开始读取的,但是freemodbus转换后起始地址是1,读取数据函数里读取哪个地址使用的地址是
iRegIndex = ( int )( usAddress - REG_INPUT_START );
而usAddress,追溯程序发现:
usRegAddress = ( USHORT )( pucFrame[MB_PDU_FUNC_WRITE_ADDR_OFF] << 8 );
usRegAddress |= ( USHORT )( pucFrame[MB_PDU_FUNC_WRITE_ADDR_OFF + 1] );
usRegAddress++;
所以导致第一个(0号)数据无法读取,如果改成REG_INPUT_START = 1,那么其实地址就是寄存器数值组的buf[0]数据了。
阅读全文
0 0
- FreeModbus 移植--REG_INPUT_START 各种寄存器起始地址
- 移植Freemodbus
- 移植freemodbus
- FreeModbus移植经验分享
- FreeModbus移植 经验分享
- MODBUS之FREEMODBUS移植
- freemodbus移植讲解
- freemodbus移植讲解 ZZ
- 关于Modbus 3区、4区寄存器地址的理解以及Freemodbus中开始地址的设定
- 移植freemodbus到vxworks 6
- FreeModbus在STM32上移植。
- STM32F103/107 移植Freemodbus RTU
- STM32 移植FreeModbus 详细过程
- CC3200 freemodbus-tcp移植过程
- FreeModbus读/写寄存器小Bug
- freemodbus
- freeModbus代码解读及移植笔记
- freeModbus代码解读及移植笔记
- linux面试题
- jni 学习
- 类必须放在包里
- ubuntu14.04 系统docker安装
- HDU 6069 Counting Divisors【素数筛】【约数个数定理】
- FreeModbus 移植--REG_INPUT_START 各种寄存器起始地址
- 枚举的访问权限
- Python学习笔记·Python开发环境配置
- HttpClient源码解析系列:第五篇:HttpClientBuilder中的配置分析
- 从请求中获取当前用户的三种方法
- 《reinforcement learning:an introduction》第十一章《Off-policy Methods with Approximation》总结
- 重复插入
- angularjs Controller之间的通信
- hdu 多校联赛 Rikka with Graph