3.8 KiB
3.8 KiB
| title | description | keywords | ||||||
|---|---|---|---|---|---|---|---|---|
| SAKO VFD Component | Documentation for the SAKO Variable Frequency Drive component interface |
|
SAKO VFD
Path: src/components/SAKO_VFD.cpp
Revision History: Initial documentation
The SAKO_VFD component provides an interface for controlling and monitoring SAKO Variable Frequency Drives over RS485 using Modbus RTU protocol. It enables setting frequency, controlling motor direction, reading operational status, and retrieving fault information.
REQUIREMENTS
Hardware
- ESP32 or compatible microcontroller
- RS485 transceiver hardware
- SAKO VFD connected to RS485 bus
Software
- ENABLE_RS485 flag must be defined in config.h
- ModbusRTU library for communication
FEATURES
- Control motor speed by setting frequency in 0.01 Hz units
- Start and stop motor operation
- Change motor direction (forward/reverse)
- Monitor operational parameters:
- Current frequency
- Set frequency
- Output current
- Output power (kW)
- Output torque percentage
- Read VFD status and fault codes
- Automatic retract operation with state machine
- Integration with Modbus TCP for remote control
DEPENDENCIES
- Component - Base component functionality
- ModbusRTU - RS485 Modbus communication
- ModbusTypes - Modbus data type definitions
- xstatistics - Statistics collection for VFD parameters
graph TD
SAKOVFD[SAKO_VFD] --> RTUBase[RTU_Base]
RTUBase --> Component[Component]
SAKOVFD --> ModbusRTU[ModbusRTU]
SAKOVFD --> Statistics[xstatistics]
BEHAVIOUR
stateDiagram-v2
[*] --> Stopped
Stopped --> Accelerating: run()
Accelerating --> Running
Running --> Decelerating: stop()
Decelerating --> Stopped
Running --> Reversing: reverse()
Reversing --> Running
Error --> Stopped: resetFault()
Stopped --> Retract: retract()
Retract --> Braking
Braking --> ReverseStopped
ReverseStopped --> Reversing
Reversing --> BrakeReversing
BrakeReversing --> Retracted
Retracted --> [*]
state Error {
[*] --> FaultCode
}
TODOS
PERFORMANCE
- Consider implementing a more efficient polling mechanism for less critical parameters
- Add caching of VFD parameters with configurable refresh rates
- Implement rate limiting for write operations to prevent overloading the RS485 bus
SECURITY
- Add validation for input values before sending to the VFD
- Implement error handling for unexpected responses from the VFD
- Consider adding authentication for control operations
COMPLIANCE
- Ensure compliance with industrial standards for VFD control
- Add proper error handling and recovery mechanisms
- Implement data logging for compliance with maintenance requirements
RECOMMENDATIONS
- Set appropriate read intervals based on system requirements
- Implement proper error handling for Modbus communication failures
- Consider adding more advanced control features like PID control for motor speed
- Use statistics tracking to monitor performance and detect potential issues
EXAMPLE
This example shows how to initialize and mount a SAKO_VFD component in a system:
#ifdef ENABLE_SAKO_VFD
sakoVFD = new SAKO_VFD(
MB_SAKO_VFD_SLAVE_ID, // Modbus slave ID of the VFD
MB_SAKO_VFD_READ_INTERVAL // Polling interval in milliseconds
);
if (sakoVFD)
{
components.push_back(sakoVFD);
Log.infoln(F("SAKO VFD initialized. SlaveID:%d, ReadInterval:%d ms"),
MB_SAKO_VFD_SLAVE_ID, MB_SAKO_VFD_READ_INTERVAL);
}
else
{
Log.errorln(F("SAKO VFD initialization failed."));
}
#endif
References
- SAKO VFD User Manual (refer to manufacturer documentation)
- Modbus RTU specification for register definitions