当前位置: 首页 > news >正文

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

相关文章:

  • kali linux 漏洞扫描
  • 关于原码、反码、补码、移码
  • 【亲测可行】rk3588交叉编译opencv-4.5.1,ffmpeg-4.2.9,x264
  • Hugging Face的Transformers核心模块:Pipelines(参数说明,各种模型类型调用案例)
  • TypeScript基础类型详解:与JavaScript的对比与核心价值
  • 【Android】03-Android 开发机器配置要求
  • 【day12】进程切换与调度:linux系统的幕后操控术
  • 项目实操分享:一个基于 Flask 的音乐生成系统,能够根据用户指定的参数自动生成 MIDI 音乐并转换为音频文件
  • 可视化绘图技巧100篇进阶篇(十八)-鸡冠花图
  • 18 HarmonyOS NEXT UVList组件开发指南(五)
  • AI+办公 Task1
  • `bitsandbytes` 是什么? 有支持 CPU 的版本吗
  • NVIDIA k8s-device-plugin源码分析与安装部署
  • 数学 二次函数
  • 人工智能技术篇*卷(一)
  • 从0开始的操作系统手搓教程33:挂载我们的文件系统
  • boost::beast websocket 实例
  • 音频进阶学习十九——逆系统(简单进行回声消除)
  • MySQL高频八股—— MySQL的存储引擎及索引结构
  • 【深入解析 epoll 的底层实现原理】
  • 国创会举办国际茶日活动,十余国驻华大使夫人参加
  • 文学如何遭遇世界:日本“世界文学”的半个世纪
  • 韦尔股份拟更名豪威集团:更全面体现公司产业布局,准确反映未来战略发展方向
  • 取得金奖西瓜品种独家使用权的上海金山,为何要到异地“试种”?
  • 2025吉林市马拉松开跑,用赛道绘制“博物馆之城”动感地图
  • 昆明公布3起经济犯罪案例:一人持有820余万假美元被判刑十年