- 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>
5.9 KiB
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_1throughsw_6 - Global commands:
all_on,all_off
- Individual switches:
- Output:
struct_lights(sent to Node-RED)- Light outputs:
l_1throughl_6
- Light outputs:
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 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_switchfunction blocks - fb_toogleButton: Toggle button function block
- fb_switch: Switch control function block
- PLC_PRG: Main program using
- 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:
- Export to XML format - See CODESYS Export Guide for detailed instructions
- Use the parser script - Run
scripts/parse-codesys-xml.pyon exported XML files - 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
Debugging
- How to monitor network variables
- How to view I/O states
- Log file locations
Status: Template - needs configuration details