#ifndef __MF_H_ #define __MF_H_ #include "main.h" #define MF4700_ADDR 0x01 #define MF5000_ADDR 0x02 //功能码 #define Read_Hold 0x03 //读取一个或多个连续的保持寄存器的值 #define Write_Single 0x06 //把具体二进制值装入一个保持寄存器 #define Error_Diag 0x08 //检查主设备与流量计之间的通讯是否正常 #define Write_Multi 0x16 //把具体二进制值装入多个连续的保持寄存器 //寄存器地址 #define MF4700_Modbus_Addr 0x01 //Modbus地址 #define MF4700_Ins_Flow_Addr 0x02 //瞬时流量 0x02~0x03 #define MF4700_Cum_Flow_Addr 0x04 //累积总量 0x04~0x06 #define MF4700_Baud_Rate_Addr 0x15 //波特率 #define MF4700_GCF_Addr 0x16 //GCF 气体修正系数 #define MF4700_Res_Tim_Addr 0x17 //响应时间 #define MF4700_Auto_Zero_Addr 0x27 //自动校零 写入指定数据0xAA55 #define MF4700_Upper_Limit_Alarm 0x31 //下限报警 #define MF4700_Lower_Limit_Alarm 0x33 //上限报警 #define MF4700_Write_Protec 0x14 //写保护寄存器 写入指定数据0xAA55 #define MF5000_Modbus_Addr 0x81 //Modbus地址 #define MF5000_Ins_Flow_Addr 0x3A //瞬时流量 0x3A~0x3B #define MF5000_Cum_Flow_Addr 0x3C //累积总量 0x3C~0x3E #define MF5000_Baud_Rate_Addr 0x82 //波特率 #define MF5000_GCF_Addr 0x8B //GCF 气体修正系数 #define MF5000_Unit_Addr 0x90 //单位 #define MF5000_Code_Addr 0xAE //密码 0xAE~0xAF #define MF5000_Auto_Zero_Addr 0xF0 //自动校零 写入指定数据0xAA55 #define MF5000_Clear_Addr 0xF2 //清除累计总量 写入指定数据0x0001 #define MF5000_Write_Protec 0xFF //写保护寄存器 写入指定数据0xAA55 /*在除Modbus地址和波特率外的其他修改操作前,均需先操作写保护寄存器,临时关闭写保护功能。 在完成一次修改操作60秒内,如果没有其他修改操作,写保护功能会自动打开*/ #define General_Data 0xAA55 //指定数据,用于自动校零和解除写保护 void read_mf4700_flow(void); void read_mf5000_flow(void); void mf4700_zero(void); void mf5000_zero(void); #endif