⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 modbusreg.c

📁 传一个我们项目中用到得Modbus程序
💻 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 + -