- Reorganized project: codesys/, docs/codesys|redesign|integration|reference/, scripts/ - CODESYS project and exports in codesys/ - Documentation index in docs/README.md - Redesign and light naming configuration - Water boiler control and safety design Co-authored-by: Cursor <cursoragent@cursor.com>
174 lines
5.9 KiB
Markdown
174 lines
5.9 KiB
Markdown
# CODESYS Configuration
|
|
|
|
## Overview
|
|
|
|
CODESYS is an industrial control system running on a Raspberry Pi, managing physical I/O through a Beckhoff EtherCAT IO card.
|
|
|
|
## Hardware
|
|
|
|
- **Platform**: Raspberry Pi (CODESYS Control for Raspberry Pi MC SL)
|
|
- **CODESYS Version**: 4.15.0.0
|
|
- **SDK Version**: 3.5.21.0
|
|
- **Device Name**: codesys-home
|
|
- **EtherCAT Master**: Version 4.9.0.0
|
|
- **EtherCAT Devices**:
|
|
- **EK1100**: EtherCAT Coupler (2A E-Bus) - Beckhoff
|
|
- **EL1809**: 16Ch. Digital Input 24V, 3ms - Beckhoff (16 input channels)
|
|
- **Output Module**: 16 digital output channels (16#1A00 - 16#1A0F)
|
|
|
|
## Network Variables
|
|
|
|
CODESYS communicates with Node-RED using network variables. These variables are shared over the network and allow bidirectional communication.
|
|
|
|
### Variables Sent to Node-RED (NVL_Sender)
|
|
|
|
**Protocol**: UDP
|
|
**Task**: EtherCAT_Task
|
|
**List Identifier**: 1
|
|
**Transmission**: Cyclic, T#50ms interval
|
|
|
|
| Variable Name | Type | Description |
|
|
|--------------|------|-------------|
|
|
| `l_masterBedroom` | struct_lights | Master bedroom lights |
|
|
| `l_masterBathroom` | struct_lights | Master bathroom lights |
|
|
| `l_bedroom_1` | struct_lights | Bedroom 1 lights |
|
|
| `l_bedroom_2` | struct_lights | Bedroom 2 lights |
|
|
| `l_bathroom` | struct_lights | Bathroom lights |
|
|
| `l_hallway` | struct_lights | Hallway lights |
|
|
| `l_pantry` | struct_lights | Pantry lights |
|
|
| `l_kitchen` | struct_lights | Kitchen lights |
|
|
| `l_livingRoom` | struct_lights | Living room lights |
|
|
| `l_dinningRoom` | struct_lights | Dining room lights |
|
|
| `l_entrance` | struct_lights | Entrance lights |
|
|
| `l_guestWc` | struct_lights | Guest WC lights |
|
|
| `l_outVeranda` | struct_lights | Outdoor veranda lights |
|
|
| `l_outFront` | struct_lights | Outdoor front lights |
|
|
| `l_outSide` | struct_lights | Outdoor side lights |
|
|
| `l_outBack` | struct_lights | Outdoor back lights |
|
|
|
|
### Variables Received from Node-RED (NVL_Receiver)
|
|
|
|
**Protocol**: UDP
|
|
**Task**: EtherCAT_Task
|
|
**List Identifier**: 3
|
|
**Transmission**: Cyclic, T#50ms interval
|
|
|
|
| Variable Name | Type | Description |
|
|
|--------------|------|-------------|
|
|
| `masterBedroom` | struct_switches | Master bedroom switches |
|
|
| `masterBathroom` | struct_switches | Master bathroom switches |
|
|
| `bedroom_1` | struct_switches | Bedroom 1 switches |
|
|
| `bedroom_2` | struct_switches | Bedroom 2 switches |
|
|
| `bathroom` | struct_switches | Bathroom switches |
|
|
| `hallway` | struct_switches | Hallway switches |
|
|
| `pantry` | struct_switches | Pantry switches |
|
|
| `kitchen` | struct_switches | Kitchen switches |
|
|
| `livingRoom` | struct_switches | Living room switches |
|
|
| `dinningRoom` | struct_switches | Dining room switches |
|
|
| `entrance` | struct_switches | Entrance switches |
|
|
| `guestWc` | struct_switches | Guest WC switches |
|
|
| `outVeranda` | struct_switches | Outdoor veranda switches |
|
|
| `outFront` | struct_switches | Outdoor front switches |
|
|
| `outSide` | struct_switches | Outdoor side switches |
|
|
| `outBack` | struct_switches | Outdoor back switches |
|
|
|
|
## I/O Configuration
|
|
|
|
### EtherCAT IO Card
|
|
|
|
- **EK1100**: EtherCAT Coupler (Beckhoff)
|
|
- **EL1809**: 16-channel Digital Input 24V (Beckhoff)
|
|
- **Output Module**: 16 digital output channels
|
|
- **Scan Rate**: EtherCAT_Task (50ms cyclic)
|
|
|
|
### Relay Mapping
|
|
|
|
| Relay # | Device Controlled | Function | Notes |
|
|
|---------|-------------------|----------|-------|
|
|
| 1 | [To be filled] | [To be filled] | |
|
|
| 2 | [To be filled] | [To be filled] | |
|
|
| ... | | | |
|
|
|
|
### Water Boiler Control
|
|
|
|
- **Relay Assignment**: [To be filled]
|
|
- **Control Logic**: [To be filled]
|
|
- **Safety Features**: [To be filled]
|
|
|
|
## Control Logic
|
|
|
|
### Lighting Control
|
|
|
|
The lighting control is implemented using the `fb_switch` function block. Each room has one instance that processes switch inputs and generates light control outputs.
|
|
|
|
**Function Block**: `fb_switch`
|
|
- **Input**: `struct_switches` (received from Node-RED)
|
|
- Individual switches: `sw_1` through `sw_6`
|
|
- Global commands: `all_on`, `all_off`
|
|
- **Output**: `struct_lights` (sent to Node-RED)
|
|
- Light outputs: `l_1` through `l_6`
|
|
|
|
**Toggle Button**: `fb_toogleButton`
|
|
- Implements toggle functionality with debouncing
|
|
- Uses timing functions (TP, TOF) and counters (CTU, CTD)
|
|
- Each switch press toggles the corresponding light state
|
|
|
|
**Per-Room Configuration**:
|
|
- Each room can control up to 6 individual lights
|
|
- Global commands allow turning all lights on/off in a room
|
|
- Switch inputs come from Zigbee switches via Node-RED/MQTT
|
|
|
|
See [fb_switch Documentation](../redesign/fb_switch-documentation.md) for detailed information.
|
|
|
|
### Water Boiler Control
|
|
|
|
[Description of water boiler control logic, schedules, safety features]
|
|
|
|
## Network Configuration
|
|
|
|
- **IP Address**: [To be filled]
|
|
- **Subnet**: [To be filled]
|
|
- **Network Variable Port**: [To be filled]
|
|
- **EtherCAT Network**: [To be filled]
|
|
|
|
## Project Structure
|
|
|
|
- **Project Location**: `Home_Automation (1).project` (binary format)
|
|
- **Program Organization Units (POUs)**:
|
|
- **PLC_PRG**: Main program using `fb_switch` function blocks
|
|
- **fb_toogleButton**: Toggle button function block
|
|
- **fb_switch**: Switch control function block
|
|
- **Libraries Used**:
|
|
- IoStandard (System)
|
|
- SM3_Basic, SM3_CNC, SM3_CamBuilder, SM3_Robotics (3S/CODESYS)
|
|
- Standard, CmpLog (System)
|
|
|
|
### Exporting Project Information
|
|
|
|
The binary `.project` file cannot be directly analyzed. To extract project information:
|
|
|
|
1. **Export to XML format** - See [CODESYS Export Guide](codesys-export-guide.md) for detailed instructions
|
|
2. **Use the parser script** - Run `scripts/parse-codesys-xml.py` on exported XML files
|
|
3. **Manual extraction** - Open in CODESYS IDE and document manually
|
|
|
|
**Recommended Export:**
|
|
- Export as **CODESYS XML (*.export)** for complete project information
|
|
- Export as **PLCopen XML (*.xml)** for program structure
|
|
|
|
## Troubleshooting
|
|
|
|
### Common Issues
|
|
|
|
- [Issue 1]: [Solution]
|
|
- [Issue 2]: [Solution]
|
|
|
|
### Debugging
|
|
|
|
- How to monitor network variables
|
|
- How to view I/O states
|
|
- Log file locations
|
|
|
|
---
|
|
|
|
**Status**: Template - needs configuration details
|