讲师中心 微信公众号
AI工具推荐 视频效率加速

如何使用 CODESYS Scripting Engine 自动构建与部署项目

星丽大大_4179

星丽大大_4179

发布时间:2026-07-26 13:24:21

|

225人浏览过

|

来源于php中文网

原创

如何使用 CODESYS Scripting Engine 自动构建与部署项目

本文详解如何通过 CODESYS 内置 Python 脚本引擎实现项目自动化构建、部署及 CI/CD 集成(如 Jenkins),涵盖 build() 调用、活动应用获取、无 GUI 执行等核心实践。

本文详解如何通过 codesys 内置 python 脚本引擎实现项目自动化构建、部署及 ci/cd 集成(如 jenkins),涵盖 `build()` 调用、活动应用获取、无 gui 执行等核心实践。

CODESYS Scripting Engine 提供了完整的 Python API,使开发者能在不依赖图形界面的前提下,以编程方式操控工程生命周期——从打开项目、选择应用、触发编译,到生成可部署镜像。这正是实现 Jenkins 自动化流水线的关键基础。

✅ 基础构建脚本:编译当前活动应用

最简可行脚本仅需一行核心调用:

# build_active_app.py
projects.primary.active_application.build()

该语句会触发 CODESYS 编译器对当前设为“活动应用”(Active Application)的 PLC 程序执行完整构建流程,并将结果(如 .cproj 中间文件、.cld 加载文件等)输出至项目 Build 目录。构建成功与否可通过返回值或日志判断(见下文异常处理)。

⚠️ 注意:projects.primary.active_application 必须已存在且有效。若项目未设置活动应用,此调用将抛出 AttributeError。建议先校验:

if not projects.primary.active_application:
    raise RuntimeError("No active application set in the project.")

? 获取并操作指定应用(多应用项目场景)

当一个项目包含多个应用(如 App_Main、App_Test),需显式定位目标应用再构建:

# build_by_name.py
target_app_name = "App_Main"

# 遍历所有子对象,筛选出 Application 类型对象
apps = [app for app in projects.primary.get_children() if app.is_application]

# 查找匹配名称的应用
target_app = next((a for a in apps if a.get_name(False) == target_app_name), None)
if not target_app:
    raise ValueError(f"Application '{target_app_name}' not found.")

# 构建并检查结果
result = target_app.build()
if not result:
    print("❌ Build failed. Check CODESYS output log for errors.")
else:
    print("✅ Build succeeded.")

? 无 GUI 模式运行脚本(CI/CD 关键步骤)

为在 Jenkins 或命令行中自动执行,需关闭 GUI 并指定项目路径:

  1. 确保项目未被其他 CODESYS 实例打开(否则脚本会立即失败);
  2. 使用 CODESYS 命令行接口启动脚本:
# Windows 示例(假设 codesys.exe 在 PATH 中)
codesys.exe --script "C:\path\to\build_active_app.py" --project "C:\myproject\MyProject.cproj"

# Linux/macOS(需使用 CODESYS Runtime 或 Docker 化 CODESYS IDE)
codesys --script /path/to/build.py --project /path/to/project.cproj

✅ 提示:--project 参数会自动调用 projects.open(project_path),无需在脚本中重复写入;脚本输出(print())将直接打印到终端 stdout,便于 Jenkins 解析构建日志。

? 完整自动化脚本示例(含错误捕获与日志)

# ci_build.py
from __future__ import print_function

def main():
    try:
        # 1. 确保有活动应用
        app = projects.primary.active_application
        if not app:
            raise RuntimeError("Active application is not set.")

        # 2. 执行构建
        print("? Starting build for application: '{}'".format(app.get_name(False)))
        success = app.build()

        # 3. 输出结果
        if success:
            print("✅ Build completed successfully.")
        else:
            print("❌ Build failed — check CODESYS error log.")
            return 1

    except Exception as e:
        print("? Script execution error: {}".format(str(e)))
        return 1

    return 0

# 入口点(Jenkins 可据此判断 exit code)
if __name__ == "__main__":
    exit(main())

? 重要注意事项

  • 权限与独占性:脚本运行时,CODESYS 必须拥有对项目文件的读写权限,且项目不能处于被其他用户/进程打开状态(包括后台 CODESYS 进程);
  • 环境一致性:CI 环境中务必使用与开发环境完全相同版本的 CODESYS IDE(如 v3.5.18.0),避免因 API 差异导致脚本失效;
  • 构建产物路径:默认输出位于 <ProjectDir>/Build/,可通过 projects.primary.get_build_path() 获取;
  • 扩展能力:构建后可进一步调用 app.download_to_device()(需设备在线)或 app.generate_download_file() 导出 .cld 文件用于离线部署。

掌握上述模式后,即可将 ci_build.py 无缝接入 Jenkins Pipeline,配合单元测试(如 CODESYS Test Manager CLI)、版本归档与部署通知,构建端到端的工业自动化 DevOps 流水线。

热门AI工具

更多
Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

相关专题

更多
Linux 新手先学哪些命令
Linux 新手先学哪些命令

Linux新手命令专题汇集终端基础、文件目录操作、文本查看、软件安装和权限管理等入门文章,帮助按实际任务练习常用命令并建立命令行操作习惯。

0

2026.10.15

MySQL 忘记密码怎么办
MySQL 忘记密码怎么办

MySQL忘记密码专题汇集不同版本与系统下的root密码重置方法,覆盖MySQL 5.7、8.0、Mac、Linux及本地集成环境,并提示恢复权限与重新登录的检查步骤。

0

2026.10.15

Vue.js 中 ref 和 reactive 的区别
Vue.js 中 ref 和 reactive 的区别

Vue.js中ref和reactive的区别专题汇集两种响应式API的定义、访问方式、对象解构、侦听与性能取舍等文章,帮助结合实际状态类型选择合适写法。

0

2026.10.15

VS Code 怎么配置开发环境
VS Code 怎么配置开发环境

VS Code开发环境专题汇集编辑器安装、语言扩展、编译器、解释器、终端和调试配置文章,覆盖Java、Python、C++和PHP等常见语言的入门设置。

0

2026.10.15

C++ 开发环境怎么搭建
C++ 开发环境怎么搭建

C++开发环境专题汇集Windows、Linux下的编译器与IDE安装配置教程,涵盖GCC、Clang、Visual Studio、CLion和VS Code,以及编译运行首个程序的步骤。

0

2026.10.15

Python 虚拟环境是什么
Python 虚拟环境是什么

Python虚拟环境专题介绍项目依赖隔离的作用,汇集venv与uv创建、激活、退出及解释器切换的相关文章,并覆盖Windows、Linux和VS Code中的常见配置问题。

0

2026.10.15

Python 怎么安装并配置环境变量
Python 怎么安装并配置环境变量

Python安装与环境变量配置专题汇集Windows、macOS和Linux的安装步骤、PATH设置、pip配置及常见报错排查文章,帮助完成解释器安装并验证命令行可以正常运行。

0

2026.10.15

PHP 连接 MySQL 失败怎么办
PHP 连接 MySQL 失败怎么办

PHP连接MySQL失败专题汇集PDO与MySQLi扩展配置、账号权限、主机端口、套接字和认证方式等排查文章,覆盖连接报错、密码变更与容器环境配置,帮助按错误提示定位原因并修复。

0

2026.10.15

PHP 表单提交后如何获取数据
PHP 表单提交后如何获取数据

PHP表单提交后如何获取数据专题汇集HTML表单提交、GET与POST接收、$_POST和$_GET读取、跨文件传值、单选与下拉字段获取,以及空值和接收失败排查等文章,帮助新手完成从提交到处理的完整流程。

0

2026.10.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn