This fork has been modified from upstream to enable PiPLC compatibility. Hopefully these changes can be made upstream compatible and subsequently merged. This fork might however include hardcoded changes during testing.
- Swapped out libmodbus with RPI specialized fork for testing
- Hardcoded a GPIO (currently
BCM 6
) to be the Modbus RTU enable pin
OpenPLC is an open-source Programmable Logic Controller that is based on easy to use software. Our focus is to provide a low cost industrial solution for automation and research. OpenPLC has been used in many research papers as a framework for industrial cyber security research, given that it is the only controller to provide the entire source code. The OpenPLC Project consists of two sub-projects:
git clone https://github.com/chrismettal/OpenPLC_v3.git
cd OpenPLC_v3
./install.sh [platform]
Where [platform]
can be:
win
- Install OpenPLC on Windows over Cygwin
linux
- Install OpenPLC on a Debian-based Linux distribution
docker
- Used by the Dockerfile
(i.e. doesn't invoke sudo
)
rpi
- Install OpenPLC on a Raspberry Pi
custom
- Skip all specific package installation and tries to install OpenPLC assuming your system already has all dependencies met. This option can be useful if you're trying to install OpenPLC on an unsuported Linux platform or had manually installed all the dependency packages before.
When using Ubuntu: make sure docker for Ubuntu
is installed
When using Linux Mint 21: make sure docker for Linux Mint 21
is installed
# instead of running install.sh as stated above, run:
docker build -t openplc:v3 .
Devices can be passed to the docker
daemon using the -v
flag (e.g. -v /dev/ttyACM0:/dev/ttyACM0
)
docker run -it --rm --privileged -p 8080:8080 openplc:v3
To build with EtherCAT capability try ./install.sh linux ethercat
for more information see utils/ethercat_src