fm_ccjy/Board/Inc/mf.h

63 lines
2.1 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef __MF_H_
#define __MF_H_
#include "main.h"
#define MF4700_ADDR 0x01
#define MF5003_ADDR 0x02
#define MF5008_ADDR 0x03
//功能码
#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 //指定数据,用于自动校零和解除写保护
#define Clear_Data 0x0001 //指定数据,用于清除累积流量
extern uint8_t mf4700_buf[36];
extern uint8_t mf5003_buf[36];
extern uint8_t mf5008_buf[36];
void read_mf4700_flow(void);
void read_mf5000_flow(void);
void mf4700_zero(void);
void read_mf4701_flow(void);
void mf5000_zero(void);
void read_mf5003_flow(void);
void read_mf5008_flow(void);
void mf_read(void);
void mf_clear(void);
void mf_rx_cb(void);
#endif