📄 modbusreg.c
字号:
#include "Global.h"
#include "ModbusReg.h"
//#include "Flash.h" // 采样设置
#include "Measure.h" // 测量值
//#include "DS1302.h" //时钟
//#include "USART1.h"
/*// Modbus寄存器操作错误代码
#define ERR_OK (0)
#define ERR_ILLEGAL_FUNCTION (1)
#define ERR_ILLEGAL_DATA_ADDRESS (2)
#define ERR_ILLEGAL_DATA_VALUE (3)
#define ERR_SLAVE_DEVICE_FAILURE (4)
#define ERR_ACKNOWLEDGE (5)
#define ERR_SLAVE_DEVICE_BUSY (6)
#define ERR_MEMORY_PARITY_ERROR (8)*/
// 对指定的Modbus寄存器读操作
_EXTERN unsigned int Modbus_RegsiterRead(_IN unsigned int RegisterAddress, _OUT unsigned int * RegisterData)
{
unsigned int Flg_Status = ERR_OK; // 操作状态
unsigned int Tmp_Data; // 存放有存储器读取来的数据, 然后在通过RegisterData指针传出
// 数据读出
switch(RegisterAddress)
{
// 从RAM, ROM, EEPROM存储器读取数据
case MODBUS_SLAVER_STYLE : Tmp_Data = 0x0071; break;
// 数据用(有效数据)
case MODBUS_TEMPERATURE : Tmp_Data = Temperature; break;
case MODBUS_HUMIDITY : Tmp_Data = Humidity; break;
case MODBUS_Dewpiont : Tmp_Data = Dewpiont; break;
case MODBUS_LIGHT_INTENSITY : Tmp_Data = LightIntensity; break;
// 其他非读/不存在的寄存器地址
default:
Tmp_Data = 0xffff;
//Flg_Status = ERR_ILLEGAL_DATA_ADDRESS; // 寄存器地址非法
break;
}
// 数据返回(如果读取过程中没有发生错误, 则返回数据)
if (Flg_Status == ERR_OK) *RegisterData = Tmp_Data;
return Flg_Status;
}
/***********************
// 对指定的Modbus寄存器写操作
_EXTERN unsigned int Modbus_RegsiterWrite(_IN unsigned int RegisterAddress, _IN unsigned int RegisterData)
{
unsigned int Flg_Status = ERR_OK; // 操作状态
// 数据写入
switch(RegisterAddress)
{
// 向RAM, ROM, EEPROM存储器写入数据
case MODBUS_SLAVER_STYLE : Flash_WriteWord(FLASH_SLAVER_STYLE, RegisterData); break;
// 寄存器地址非法
default:
Flg_Status = ERR_ILLEGAL_DATA_ADDRESS;
break;
}
// 数据返回
return Flg_Status;
}
***********************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -