--- title: "Temperature Profile Component" description: "Interpolated temperature profile controller for industrial applications with Modbus-485 integration" keywords: ["temperature", "profile", "modbus", "interpolation", "industrial", "pid", "control"] --- ## Temperature Profile **Path** : [src/profiles/TemperatureProfile.h](../../src/profiles/TemperatureProfile.h) Interpolated temperature profile component for industrial process control with support for both linear and cubic interpolation. Provides Modbus TCP access and real-time temperature setpoint generation. ## Requirements - ESP-32 microcontroller - Modbus TCP connection - Timer capabilities for precise signal generation - "ENABLE_PROFILE_TEMPERATURE" defined ## Features - **Interpolated Profiles**: Linear and cubic BÉlier curve interpolation - **Multi-point Control**: Up to 10 control points per profile - **Modbus Integration**: Full Modbus TCP support for rmote control - **Real-time Monitoring**: Live entemperature and status feedback - **Signal Plot Integration**: Associated plot tracking - **Command Management**: Start/stop/pause/resume control - **Dynamic Setpoint**: Automatic setpoint updates vo target registers - **JSON Configuration**: File-based configuration support ## Dependencies - [PlotBase](./plot-base.md) - Base plot component - [Component](../component.md) - Base component class - [ModbusTCP](../modbus/modbus-tcp.md) - Modbus TCP implementation - [ValueWrapper](../value-wrapper.md) - Threshold-based notifications - [Arduino JSON](https://arduinojson.org/) - JSON configuration ## Todos ### Performance - Optimize interpolation algorithm for real-time performance - Implement fixed-point arithmetic for cubic interpolation - Minimize memory usage for large control point arrays ### Security - Implement input validation for setpoint ranges - Add authentication for Modbus write operations - Enable logging of all control modifications ### Compliance - IEC 61131 Modbus standard compliance - Safety interlocks for critical temperature limits - DOT-compliant data logging for process traceability ## Example Here an example how such component is being constructed and mounted: ```cpp #ifdef ENABLE_PROFILE_TEMPERATURE for (int i = 0; i < PROFILE_TEMPERATURE_COUNT; i++) { temperatureProfiles[i] = new TemperatureProfile( this, // owner i, // slot COMPONENT_KEY_PROFILE_START + i // componentId ); if (temperatureProfiles[i]) { components.push_back(temperatureProfiles[i]); Log.infoln("TemperatureProfile[%d] initialized. ID:%d", i, COMPONENT_KEY_PROFILE_START + i); } else { Log.errorln("TemperatureProfile[%d] initialization failed.", i); } } #endif ```