/** * @file MODBUS_S_LOW_ATY.h * * @param Project DEVICE_GENERAL_ATY_LIB * * @author ATY * * @copyright * - Copyright 2017 - 2025 MZ-ATY * - This code follows: * - MZ-ATY Various Contents Joint Statement - * * https://mengze.top/MZ-ATY_VCJS * - CC 4.0 BY-NC-SA - * * https://creativecommons.org/licenses/by-nc-sa/4.0/ * - Your use will be deemed to have accepted the terms of this statement. * * @brief Familiar functions of modbus for all device * * @version * - 1_01_221029 > ATY * -# Preliminary version, first Release ******************************************************************************** */ #ifndef __MODBUS_S_LOW_ATY_H #define __MODBUS_S_LOW_ATY_H #include "INCLUDE_ATY.h" #include "ALGO_CRC_ATY.h" /******************************* For user *************************************/ // set --model-large at 51 #ifndef MODBUS_REG_HOLDING_SIZE #define MODBUS_REG_HOLDING_SIZE 100 #endif #ifndef MODBUS_ADDR #define MODBUS_ADDR 0x01 #endif /******************************************************************************/ struct MODBUS_S_LOW_ATY_Dev { uint8_t addr; uint8_t size; // todo: not used uint16_t mbRegs[MODBUS_REG_HOLDING_SIZE]; uint8_t bigEndian; // 1 for big endian(51 core) uint8_t(*uartSendBytes)(); uint8_t setFlag; uint8_t lock; uint8_t debugEnable; int (*LOG)(); }; #define MODBUS_FUNC_READ_COILS 0x01 #define MODBUS_FUNC_READ_DISCRETE_INPUTS 0x02 #define MODBUS_FUNC_READ_HOLDING_REGISTERS 0x03 #define MODBUS_FUNC_READ_INPUT_REGISTERS 0x04 #define MODBUS_FUNC_WRITE_SINGLE_COIL 0x05 #define MODBUS_FUNC_WRITE_SINGLE_HOLDING_REGISTERS 0x06 #define MODBUS_FUNC_WRITE_MULTY_HOLDING_REGISTERS 0x10 union mbFloatChange{ float f_t; uint8_t u8_t[4]; }; uint8_t Modbus_Process(uint8_t* buf, uint8_t len, struct MODBUS_S_LOW_ATY_Dev* dev); void UpdateMbRegsFromFloat(float* floatBuf, struct MODBUS_S_LOW_ATY_Dev* dev); void TransMbRegsToFloat(float* floatBuf, struct MODBUS_S_LOW_ATY_Dev* dev); #endif /* __MODBUS_S_LOW_ATY_H */ /******************************** End Of File *********************************/