新手上路
- 积分
- 45
- 金钱
- 45
- 注册时间
- 2019-3-26
- 在线时间
- 19 小时
|
发表于 2019-10-1 14:47:29
|
显示全部楼层
本帖最后由 张朋 于 2019-10-1 16:34 编辑
////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Modbus寄存器和单片机寄存器的映射关系
//vu32 *Modbus_InputIO[100]; //输入开关量寄存器指针(这里使用的是位带操作)
//vu32 *Modbus_OutputIO[100]; //输出开关量寄存器指针(这里使用的是位带操作)
u16 *Modbus_HoldReg[1000]; //保持寄存器指针
u32 testData1=256,testData2=512;
void Modbus_RegMap(void)
{
//输入开关量寄存器指针指向
// Modbus_InputIO[0]=(vu32*)&PEin(4);//KEY0
// Modbus_InputIO[1]=(vu32*)&PEin(3);//KEY1
// Modbus_InputIO[2]=(vu32*)&PEin(2);//KEY2
// Modbus_InputIO[3]=(vu32*)&PAin(0);//KEY3
//输出开关量寄存器指针指向
// Modbus_OutputIO[0]=(vu32*)&PBout(5);//LED0
// Modbus_OutputIO[1]=(vu32*)&PEout(5);//LED1
//保持寄存器指针指向
Modbus_HoldReg[0]=(u16*)&testData1;//测试数据1
Modbus_HoldReg[1]=((u16*)&testData1)+1;//测试数据1
Modbus_HoldReg[2]=(u16*)&testData2;//测试数据2
Modbus_HoldReg[3]=((u16*)&testData2)+1;//测试数据2
你好请教一个问题,我用MODBUS POLL这一个当的主机,单片机做的从机,测的第一个是256,第二个我感觉应该是257结果是0
0 256
1 0 //这一个我感觉应该是257不是吗,我看后面加个1
2 512
3 0
4 10320 //这些我看没有定义,是算初值吗
5 10320
6 10320
这是测试的结果,但是还有一个问题就是我用0x10这一个写多寄存器把里面的值改了,按理说值应该是我改过的不是吗,我把他改成0x03令后他又变成现在这一种了,不解,高手能指点一二吗,万分感谢! |
|