forked from thiagoralves/OpenPLC_v3
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
cb922e1
commit 1b10e97
Showing
2,742 changed files
with
568,737 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,24 @@ | ||
# OpenPLC_v3 | ||
OpenPLC Runtime version 3 | ||
# OpenPLC Runtime version 3 | ||
OpenPLC is an open-source [Programmable Logic Controller](https://en.wikipedia.org/wiki/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](https://scholar.google.com/scholar?as_ylo=2014&q=openplc&hl=en&as_sdt=0,1) 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 three sub-projects: | ||
1. [Runtime](https://github.com/thiagoralves/OpenPLC_v3) | ||
2. [Programming editor](http://www.openplcproject.com/downloads) | ||
3. [HMI builder](http://www.openplcproject.com/reference-installing-scadabr) | ||
<br/> | ||
To install: | ||
<br/> | ||
git clone https://github.com/thiagoralves/OpenPLC_v3.git | ||
<br/> | ||
cd OpenPLC_v3 | ||
<br/> | ||
./install.sh [platform] | ||
<br/> | ||
where [platform] can be | ||
<br/> | ||
**win** - Install OpenPLC on Windows over Cygwin | ||
<br/> | ||
**linux** - Install OpenPLC on a Debian-based Linux distribution | ||
<br/> | ||
**rpi** - Install OpenPLC on a Raspberry Pi | ||
<br/> | ||
**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. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,253 @@ | ||
#!/bin/bash | ||
if [ $# -eq 0 ]; then | ||
echo "" | ||
echo "Error: You must provide a platform name as argument" | ||
echo "" | ||
echo "Usage: ./install.sh [platform] where [platform] can be" | ||
echo " win Install OpenPLC on Windows over Cygwin" | ||
echo " linux Install OpenPLC on a Debian-based Linux distribution" | ||
echo " rpi Install OpenPLC on a Raspberry Pi" | ||
echo " custom Skip all specific package installation and tries to install" | ||
echo " OpenPLC assuming your system already has all dependencies met." | ||
echo " This option can be useful if you're trying to install OpenPLC" | ||
echo " on an unsuported Linux platform or had manually installed" | ||
echo " all the dependency packages before." | ||
echo "" | ||
exit 1 | ||
fi | ||
|
||
if [ "$1" == "win" ]; then | ||
echo "Installing OpenPLC on Windows" | ||
cp ./utils/apt-cyg/apt-cyg ./ | ||
cp ./utils/apt-cyg/wget.exe /bin | ||
install apt-cyg /bin | ||
apt-cyg install lynx | ||
rm -f /bin/wget.exe | ||
apt-cyg install wget gcc-core gcc-g++ git pkg-config automake autoconf libtool make python2 python2-pip sqlite3 | ||
lynx -source https://bootstrap.pypa.io/get-pip.py > get-pip.py | ||
python get-pip.py | ||
pip install flask | ||
pip install flask-login | ||
|
||
echo "" | ||
echo "[MATIEC COMPILER]" | ||
cp ./utils/matiec_src/bin_win32/*.* ./webserver/ | ||
if [ $? -ne 0 ]; then | ||
echo "Error compiling MatIEC" | ||
echo "OpenPLC was NOT installed!" | ||
exit 1 | ||
fi | ||
|
||
echo "" | ||
echo "[ST OPTIMIZER]" | ||
cd utils/st_optimizer_src | ||
g++ st_optimizer.cpp -o st_optimizer | ||
cp ./st_optimizer.exe ../../webserver/ | ||
if [ $? -ne 0 ]; then | ||
echo "Error compiling ST Optimizer" | ||
echo "OpenPLC was NOT installed!" | ||
exit 1 | ||
fi | ||
cd ../.. | ||
|
||
echo "" | ||
echo "[GLUE GENERATOR]" | ||
cd utils/glue_generator_src | ||
g++ glue_generator.cpp -o glue_generator | ||
cp ./glue_generator.exe ../../webserver/core | ||
if [ $? -ne 0 ]; then | ||
echo "Error compiling Glue Generator" | ||
echo "OpenPLC was NOT installed!" | ||
exit 1 | ||
fi | ||
cd ../.. | ||
|
||
echo "" | ||
echo "[OPEN DNP3]" | ||
cd webserver/core | ||
mv dnp3.cpp dnp3.disabled | ||
if [ $? -ne 0 ]; then | ||
echo "Error disabling OpenDNP3" | ||
echo "OpenPLC was NOT installed!" | ||
exit 1 | ||
fi | ||
mv dnp3_dummy.disabled dnp3_dummy.cpp | ||
if [ $? -ne 0 ]; then | ||
echo "Error disabling OpenDNP3" | ||
echo "OpenPLC was NOT installed!" | ||
exit 1 | ||
fi | ||
cd ../.. | ||
|
||
echo "" | ||
echo "[FINALIZING]" | ||
cd webserver/scripts | ||
./change_hardware_layer.sh blank | ||
./compile_program.sh blank_program.st | ||
cp ./start_openplc.sh ../../ | ||
|
||
|
||
|
||
elif [ "$1" == "linux" ]; then | ||
echo "Installing OpenPLC on Linux" | ||
sudo apt-get update | ||
sudo apt-get install build-essential pkg-config bison flex autoconf automake libtool make git python2.7 python-pip sqlite3 cmake | ||
|
||
echo "" | ||
echo "[MATIEC COMPILER]" | ||
cd utils/matiec_src | ||
autoreconf -i | ||
./configure | ||
make | ||
cp ./iec2c ../../webserver/ | ||
if [ $? -ne 0 ]; then | ||
echo "Error compiling MatIEC" | ||
echo "OpenPLC was NOT installed!" | ||
exit 1 | ||
fi | ||
cd ../.. | ||
|
||
echo "" | ||
echo "[ST OPTIMIZER]" | ||
cd utils/st_optimizer_src | ||
g++ st_optimizer.cpp -o st_optimizer | ||
cp ./st_optimizer ../../webserver/ | ||
if [ $? -ne 0 ]; then | ||
echo "Error compiling ST Optimizer" | ||
echo "OpenPLC was NOT installed!" | ||
exit 1 | ||
fi | ||
cd ../.. | ||
|
||
echo "" | ||
echo "[GLUE GENERATOR]" | ||
cd utils/glue_generator_src | ||
g++ glue_generator.cpp -o glue_generator | ||
cp ./glue_generator ../../webserver/core | ||
if [ $? -ne 0 ]; then | ||
echo "Error compiling Glue Generator" | ||
echo "OpenPLC was NOT installed!" | ||
exit 1 | ||
fi | ||
cd ../.. | ||
|
||
echo "" | ||
echo "[OPEN DNP3]" | ||
cd utils/dnp3_src | ||
echo "creating swapfile..." | ||
sudo dd if=/dev/zero of=swapfile bs=1M count=1000 | ||
sudo mkswap swapfile | ||
sudo swapon swapfile | ||
cmake ../dnp3_src | ||
make | ||
sudo make install | ||
if [ $? -ne 0 ]; then | ||
echo "Error installing OpenDNP3" | ||
echo "OpenPLC was NOT installed!" | ||
exit 1 | ||
fi | ||
sudo ldconfig | ||
echo "removing swapfile..." | ||
sudo swapoff swapfile | ||
sudo rm -f ./swapfile | ||
cd ../.. | ||
|
||
echo "" | ||
echo "[FINALIZING]" | ||
cd webserver/scripts | ||
./change_hardware_layer.sh blank_linux | ||
./compile_program.sh blank_program.st | ||
cp ./start_openplc.sh ../../ | ||
|
||
|
||
|
||
elif [ "$1" == "rpi" ]; then | ||
echo "Installing OpenPLC on Raspberry Pi" | ||
sudo apt-get update | ||
sudo apt-get install build-essential pkg-config bison flex autoconf automake libtool make git python2.7 python-pip sqlite3 cmake wiringpi | ||
|
||
echo "" | ||
echo "[MATIEC COMPILER]" | ||
cd utils/matiec_src | ||
autoreconf -i | ||
./configure | ||
make | ||
cp ./iec2c ../../webserver/ | ||
if [ $? -ne 0 ]; then | ||
echo "Error compiling MatIEC" | ||
echo "OpenPLC was NOT installed!" | ||
exit 1 | ||
fi | ||
cd ../.. | ||
|
||
echo "" | ||
echo "[ST OPTIMIZER]" | ||
cd utils/st_optimizer_src | ||
g++ st_optimizer.cpp -o st_optimizer | ||
cp ./st_optimizer ../../webserver/ | ||
if [ $? -ne 0 ]; then | ||
echo "Error compiling ST Optimizer" | ||
echo "OpenPLC was NOT installed!" | ||
exit 1 | ||
fi | ||
cd ../.. | ||
|
||
echo "" | ||
echo "[GLUE GENERATOR]" | ||
cd utils/glue_generator_src | ||
g++ glue_generator.cpp -o glue_generator | ||
cp ./glue_generator ../../webserver/core | ||
if [ $? -ne 0 ]; then | ||
echo "Error compiling Glue Generator" | ||
echo "OpenPLC was NOT installed!" | ||
exit 1 | ||
fi | ||
cd ../.. | ||
|
||
echo "" | ||
echo "[OPEN DNP3]" | ||
cd utils/dnp3_src | ||
echo "creating swapfile..." | ||
sudo dd if=/dev/zero of=swapfile bs=1M count=1000 | ||
sudo mkswap swapfile | ||
sudo swapon swapfile | ||
cmake ../dnp3_src | ||
make | ||
sudo make install | ||
if [ $? -ne 0 ]; then | ||
echo "Error installing OpenDNP3" | ||
echo "OpenPLC was NOT installed!" | ||
exit 1 | ||
fi | ||
sudo ldconfig | ||
echo "removing swapfile..." | ||
sudo swapoff swapfile | ||
sudo rm -f ./swapfile | ||
cd ../.. | ||
|
||
echo "" | ||
echo "[FINALIZING]" | ||
cd webserver/scripts | ||
./change_hardware_layer.sh blank_linux | ||
./compile_program.sh blank_program.st | ||
cp ./start_openplc.sh ../../ | ||
|
||
|
||
else | ||
echo "" | ||
echo "Error: unrecognized platform" | ||
echo "" | ||
echo "Usage: ./install.sh [platform] where [platform] can be" | ||
echo " win Install OpenPLC on Windows over Cygwin" | ||
echo " linux Install OpenPLC on a Debian-based Linux distribution" | ||
echo " rpi Install OpenPLC on a Raspberry Pi" | ||
echo " custom Skip all specific package installation and tries to install" | ||
echo " OpenPLC assuming your system already has all dependencies met." | ||
echo " This option can be useful if you're trying to install OpenPLC" | ||
echo " on an unsuported Linux platform or had manually installed" | ||
echo " all the dependency packages before." | ||
echo "" | ||
exit 1 | ||
fi | ||
|
||
|
Oops, something went wrong.