First stable compilation with ModbusRTU and ModbusTCP
This commit is contained in:
69
lib/Core/core.h
Normal file
69
lib/Core/core.h
Normal file
@@ -0,0 +1,69 @@
|
||||
/**
|
||||
* @file core.h
|
||||
* @brief Core constants and definitions for the Industrial Emulator project.
|
||||
* @author Emmanuel Hernandez Cruz
|
||||
* @date 2025-09-06
|
||||
*
|
||||
* This file contains shared constants, enumerations, and definitions that are
|
||||
* used across both the main application firmware and the Core library.
|
||||
* Placing these in a central, shared header prevents duplication and makes
|
||||
* configuration easier.
|
||||
* @note This file is intended to be included in the main `.ino` file.
|
||||
*/
|
||||
#ifndef CORE_H
|
||||
#define CORE_H
|
||||
#include "Equipment/Equipment.h"
|
||||
|
||||
// Include the appropriate Modbus library header based on the build flag.
|
||||
// Define USE_MODBUS_IP in your build flags (e.g., platformio.ini) for Modbus IP.
|
||||
// Otherwise, it will default to Modbus RTU.
|
||||
#if defined(USE_MODBUS_IP)
|
||||
#include <ModbusIP_ESP8266.h> // Or your specific Modbus IP library
|
||||
#else
|
||||
#include <ModbusRTU.h> // Or your specific Modbus RTU library
|
||||
#endif
|
||||
|
||||
const int COIL = 0; /**< @brief 0x: R/W Coil */
|
||||
const int DI = 1; /**< @brief 1x: R Discrete Inputs */
|
||||
const int IR = 3; /**< @brief 3x: R Input Register - Single word */
|
||||
const int IR_10X = 31; /**< @brief 3x: R Input Register - Single word, 10x scaled */
|
||||
const int IR_LONG = 32; /**< @brief 3x: R Input Register - Double word, Long type */
|
||||
const int IR_FLOAT = 33; /**< @brief 3x: R Input Register - Double word, Float encoding */
|
||||
const int HR = 4; /**< @brief 4x: R/W Holding Register - Single word */
|
||||
const int HR_10x = 41; /**< @brief 4x: R/W Holding Register - Single word, 10x scaled */
|
||||
const int HR_LONG = 42; /**< @brief 4x: R/W Holding Register - Double word, Long type */
|
||||
const int HR_FLOAT = 43; /**< @brief 4x: R/W Holding Register - Double word, Float encoding */
|
||||
|
||||
/**
|
||||
* @struct modbusMap
|
||||
* @brief Defines the structure for a single entry in the Modbus map.
|
||||
*/
|
||||
struct modbusMap
|
||||
{
|
||||
int category; /**< @brief The Modbus category (e.g., COIL, HR, IR_FLOAT). */
|
||||
int address; /**< @brief The Modbus address (0-9999). */
|
||||
int value; /**< @brief The initial value for the point. */
|
||||
char description[35];/**< @brief A descriptive name for the point. Used as a key for access. */
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief The main loop previous milliseconds.
|
||||
*/
|
||||
unsigned long previousMillis = 0;
|
||||
|
||||
/**
|
||||
* @brief Global Modbus object instance.
|
||||
* The type is determined at compile time based on the USE_MODBUS_IP flag.
|
||||
*/
|
||||
#if defined(USE_MODBUS_IP)
|
||||
extern ModbusIP mb; // Use ModbusIP class
|
||||
/** @brief An instance of the Equipment class, representing the emulated Equipment unit. */
|
||||
Equipment<ModbusIP> EquipmentInstance(&mb);
|
||||
#else
|
||||
extern ModbusRTU mb; // Use ModbusRTU class
|
||||
/** @brief An instance of the Equipment class, representing the emulated Equipment unit. */
|
||||
Equipment<ModbusRTU> EquipmentInstance(&mb);
|
||||
#endif
|
||||
|
||||
|
||||
#endif // CORE_H
|
||||
Reference in New Issue
Block a user