75 lines
1.9 KiB
C
75 lines
1.9 KiB
C
#include "mf.h"
|
|
|
|
|
|
/*
|
|
*发送:[硬件地址][03][起始地址高][起始地址低][总寄存器数高][总寄存器数低][CRC低][CRC高]
|
|
*返回:[硬件地址][03][字节数][寄存器0高][寄存器0低][寄存器1高][寄存器1低][寄存器n高][寄存器n低][CRC低][CRC高]
|
|
*/
|
|
void read_mf(uint8_t local_addr, uint16_t start_addr, uint16_t read_len)
|
|
{
|
|
uint8_t tx_buf[20] = {0},tx_len = 0;
|
|
uint16_t CRC_Num = 0;
|
|
|
|
tx_buf[tx_len ++] = local_addr;
|
|
tx_buf[tx_len ++] = Read_Hold;
|
|
tx_buf[tx_len ++] = (uint8_t)(start_addr >> 8);
|
|
tx_buf[tx_len ++] = (uint8_t)(start_addr & 0xFF);
|
|
tx_buf[tx_len ++] = (uint8_t)(read_len >> 8);
|
|
tx_buf[tx_len ++] = (uint8_t)(read_len & 0xFF);
|
|
|
|
CRC_Num = ModbusCRC16(tx_buf,tx_len);
|
|
tx_buf[tx_len ++] = (uint8_t)(CRC_Num & 0xFF);
|
|
tx_buf[tx_len ++] = (uint8_t)(CRC_Num >> 8);
|
|
|
|
usart6_send(tx_buf,tx_len);
|
|
}
|
|
|
|
/*
|
|
*发送:[硬件地址][06][寄存器地址高][寄存器地址低][寄存器值高][寄存器值低][CRC低][CRC高]
|
|
*返回:[硬件地址][06][寄存器地址高][寄存器地址低][寄存器值高][寄存器值低][CRC低][CRC高]
|
|
*/
|
|
void write_mf(uint8_t local_addr, uint16_t reg_addr, uint16_t write_data)
|
|
{
|
|
uint8_t tx_buf[20] = {0},tx_len = 0;
|
|
uint16_t CRC_Num = 0;
|
|
|
|
tx_buf[tx_len ++] = local_addr;
|
|
tx_buf[tx_len ++] = Write_Single;
|
|
tx_buf[tx_len ++] = (uint8_t)(reg_addr >> 8);
|
|
tx_buf[tx_len ++] = (uint8_t)(reg_addr & 0xFF);
|
|
tx_buf[tx_len ++] = (uint8_t)(write_data >> 8);
|
|
tx_buf[tx_len ++] = (uint8_t)(write_data & 0xFF);
|
|
|
|
CRC_Num = ModbusCRC16(tx_buf,tx_len);
|
|
tx_buf[tx_len ++] = (uint8_t)(CRC_Num & 0xFF);
|
|
tx_buf[tx_len ++] = (uint8_t)(CRC_Num >> 8);
|
|
|
|
usart6_send(tx_buf,tx_len);
|
|
}
|
|
|
|
//读mf4700瞬时流量
|
|
void read_mf4700_flow(void)
|
|
{
|
|
read_mf(MF4700_ADDR,MF4700_Ins_Flow_Addr,2);
|
|
}
|
|
|
|
//读mf5600瞬时流量
|
|
void read_mf5000_flow(void)
|
|
{
|
|
read_mf(MF5000_ADDR,MF5000_Ins_Flow_Addr,2);
|
|
}
|
|
|
|
//mf4700自动校零
|
|
void mf4700_zero(void)
|
|
{
|
|
write_mf(MF4700_ADDR,MF4700_Auto_Zero_Addr,General_Data);
|
|
}
|
|
|
|
//mf5600自动校零
|
|
void mf5000_zero(void)
|
|
{
|
|
write_mf(MF5000_ADDR,MF5000_Auto_Zero_Addr,General_Data);
|
|
}
|
|
|
|
|