欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 会展 > OpenPLC WebSever启动

OpenPLC WebSever启动

2025/3/12 0:45:14 来源:https://blog.csdn.net/m0_68048437/article/details/146155453  浏览:    关键词:OpenPLC WebSever启动

简述

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

运行

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词