Recently, surfing the web, I found for an industrial automation software house located in Italy: Axel Software.

I had the chance to test their IEC61131-3 development environment, Logic Lab: free, powerful and lightweight

LogicLab IDE12

I tested for the version Using it I get a good surprise: it permits to develop Arduino Due and Raspberry Pi (B,B+,2,3) applications


Here some extract from "LLExec RaspberryPI HOWTO" text guide

LLExec RaspberryPI HOWTO

You can proceed in two alternative ways: - 1) program a SD or uSD card with a full Raspbian image, already configured to run LLExec PLC runtime. - 2) install LLExec PLC runtime on a standard Raspbian image.

Here follow, how to turn your Pi into a 100% working PLC:

  • Download  standard Raspian Image from  Raspberry Pi website  
  • Prepare a bootable SD card for the Pi: unzip the Raspian Image then write it to the SD card with Win32DiskImager
  • Download LogicLab tool suite from Axelsw website
  • Install LogicLab suite (it takes a minute) in your Windows PC

LogicLab IDE13


  • Download latest LLExec runtime from Axelsw website (I got for version 2.13.8)
  • Unzip the runtime files and upload them to the Pi (/data/plc/ directory) with FTP (SFTP)
  • The LLExec is not licensed by default: the LLExec runtime will run in demo-mode: this means that is fully operational for 30 minutes. But for educational purpose, Axelsw provides the license (refer to  section "Demo mode and licensing")
  • Install the runtime license (LLExec.key) obtained from Axelsw by copying it (FTP) to the /data/plc/ directory
  • Enable LLExec as a startup service by using the "LLExecDaemon" contained into/data/plc/ directory  as following described:
    • copy the LLExecDaemon from /data/plc/ to /etc/init.d/  with this command sudo cp /data/plc/LLExecDaemon /etc/init.d/
    • get the LLExecDaemon  executable with sudo chmod 0755 /etc/init.d/LLExecDaemon
    • install the LLExecDaemon script with sudo systemctl enable LLExecDaemon . NOTE: in case of return message "update-rc.d: error: no runlevel symlinks to modify, aborting" you need to enter sudo update-rc.d LLExecDaemon remove then sudo systemctl enable LLExecDaemon
    • make the script bootable in automatic by sudo update-rc.d LLExecDaemon defaults
    • reboot the pi with sudo reboot
  • As well as automatically (by rebooting the Pi), it's possible to manually start / stop the LLExec runtime with these commands:
    • cd /etc/init.d
    • start the runtime ./LLExecDaemon start
    • stop the runtime ./LLExecDaemon stop
  • Open the LogicLab suite, then create a new empty project based on Raspberry target (v.2.2)

LogicLab V2.2

    • then select your Pi model on the scroll down list (in my case I'm using a PI 2)

LogicLab IDE11

  •  then create task , function, logic as a usual 61131-3 IDE.


  • In my sample I also add a Master Modbus. Into the "Resources", "Ethernet" flags the "Modbus TCP Master"


  • Then "Add" a generic Modbus node (slave) and configure it (IP addr,...)




  • Add some Modbus functions (ex. Read Hoding Registers, Write,...) and link address to the project internal variables

LogicLabIDE6    LogicLabIDE7


  • Read


  • Write


 Rebuild, download then go online and enjoy it!