OpenPLC WebServer启动

简述

OpenPLC

OpenPLC 可运行在嵌入式系统和普通计算机上,其基本原理是在硬件上安装类似 Linux 的操作系统,并在该环境下运行 OpenPLC 应用程序,从而让用户开发、调试和运行工业自动化控制逻辑。它目前只支持部分 ARM 架构的嵌入式系统,尤其是基于 Cortex-A 系列处理器的平台,但是官方尚未提供对 OpenEuler 系统的支持。

OpenPLC Webserver

OpenPLC Webserver的作用是提供一种简便的方式,通过网络访问和管理OpenPLC控制系统。作为一个Web应用程序,用户可以通过在计算机上打开浏览器并键入OpenPLC设备的IP地址(端口8080)来访问OpenPLC网络服务器。其功能包括:远程监控与控制、程序上传和下载、参数配置、日志和报警查看、系统诊断、跨平台访问。

操作流程

下载OpenPLC源码

OpenPLC_v3/background_installer.sh添加:

export CC=/home/master/hi3093_tool/toolchain/sysroots/x86_64-openeulersdk-linux/usr/bin/aarch64-openeuler-linux-gcc

export CXX=/home/master/hi3093_tool/toolchain/sysroots/x86_64-openeulersdk-linux/usr/bin/aarch64-openeuler-linux-g++

./configure CC=$CC CXX=$CXX

编译安装

#使能环境变量
source /home/$(whoami)/hi3093_tool/toolchain/environment-setup-aarch64-openeuler-linux
#执行脚本安装
sudo ./install.sh linux

在webserver目录下回生成webserver.py

移植相关依赖库

将webserver.py移植到开发板,并移植相关依赖库

python环境依赖安装

pip3 install pyserial

pip install pages

pip3 install --upgrade setuptools wheel

pip install monitoring

pip install flask

pip install flask_login

pip3 install pymodbus==2.5.0

运行

交叉编译源码后会生成aarch64版本的websever.py启动文件,以及一系列依赖文件,将其移植到开发板

python3.10 webserver.py

交叉编译报错解决

找不到链接库,系统架构不匹配

解决:

编辑OpenPLC_v3/webserver/scripts/compile_program.sh将

        g++ -std=gnu++11 -I ./lib -c Res0.c -lasiodnp3 -lasiopal -lopendnp3 -lopenpal -w $ETHERCAT_INC

改为

        $CXX -std=gnu++11 -I ./lib -c Res0.c -lasiodnp3 -lasiopal -lopendnp3 -lopenpal -w $ETHERCAT_INC

找不到头文件

解决:OpenPLC_v3/webserver/scripts/compile_program.sh修改 补充路径

        $CXX -std=gnu++11 *.cpp *.o -o openplc -I ./lib -I $(pwd)/../../utils/dnp3_src/cpp/libs/include -I $(pwd)/../../utils/dnp3_src/cpp/libs/src/ -pthread -fpermissive `pkg-config --cflags --libs libmodbus` -lasiodnp3 -lasiopal -lopendnp3 -lopenpal -w $ETHERCAT_INC

        $CXX -std=gnu++11 *.cpp *.o -o openplc -I ./lib -I $(pwd)/../../utils/dnp3_src/cpp/libs/include -I $(pwd)/../../utils/dnp3_src/cpp/libs/src/ -pthread -fpermissive `pkg-config --cflags --libs libmodbus` -lasiodnp3 -lasiopal -lopendnp3 -lopenpal -w $ETHERCAT_INC

libmodbus.so.5.1.0架构不对

解决:

/OpenPLC_v3/background_installer.sh修改 制定架构

./configure CC=$CC CXX=$CXX --host=aarch64-openeuler-linux-gnu

Web启动报错解决

找不到libsqlite3.so.0

qemu-aarch64 /tmp # python3.10 webserver.py

Traceback (most recent call last): File "/tmp/webserver.py", line 1, in <module> import sqlite3 File "/tmp/Python3.10/build_arm/lib/python3.10/sqlite3/__init__.py", line 57, in <module> from sqlite3.dbapi2 import * File "/tmp/Python3.10/build_arm/lib/python3.10/sqlite3/dbapi2.py", line 27, in <module> from _sqlite3 import * ImportError: /lib64/libm.so.6: version `GLIBC_2.38' not found (required by /usr/lib64/libsqlite3.so.0)`

解决;

复制OpenPLC源码的libsqlite3.so.0到开发板

libsqlite3.so.0需要GLIBC_2.38

SQLite3是一个轻量级的嵌入式关系型数据库管理系统(RDBMS)。它是一个开源项目,广泛用于各种应用程序中,尤其是在嵌入式系统和移动设备中。SQLite3 主要用于本地存储小到中型的数据集,不需要一个独立的数据库服务器。

解决:

先安装tcl库用于编译libsqlite3源码

否则会报错找不到/usr/lib/aarch64-linux-gnu/tcl8.6/tclConfig.sh

wget https://sourceforge.net/projects/tcl/files/Tcl/8.6.10/tcl8.6.10-src.tar.gz

tar -xf tcl8.6.10-src.tar.gz

cd tcl8.6.10/unix

./configure --host=aarch64-openeuler-linux-gnu --build=x86_64-pc-linux-gnu --prefix=$(pwd)/build_tcl

make -j32

make install

方法一: 降低libsqlite3版本

#下载libsqlite3源码
https://github.com/sqlite/sqlite/tree/reuse-schema-3.30
#配置生成文件安装位置,指定使用的编译工具链
./configure --host=aarch64-openeuler-linux-gnu --build=x86_64-pc-linux-gnu --prefix=$(pwd)/build_sqlite
#编译
make

方法二:提升GLIBC库版本

#下载GLIBC-2.38源码
wget https://mirrors.aliyun.com/gnu/glibc/glibc-2.38.tar.gz
#配置生成文件安装位置,指定使用的编译工具链
./configure --host=aarch64-openeuler-linux-gnu --build=x86_64-pc-linux-gnu --prefix=$(pwd)/build_sqlite
#编译
make
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值