firmware-base/docs/profiles/TemperatureProfile.md

84 lines
2.8 KiB
Markdown

---
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
```