Files
kkelomatic_home/docs/codesys/codesys.md
nearxos bf7bd56fe7 Initial commit: Home automation docs and CODESYS project
- 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>
2026-02-07 21:52:46 +02:00

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

Debugging

  • How to monitor network variables
  • How to view I/O states
  • Log file locations

Status: Template - needs configuration details