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

星丽大大_4179

星丽大大_4179

2026-07-26

225人浏览

原创

如何使用 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。建议先校验:

PPIO派欧云
PPIO派欧云

PPIO派欧云是一款AI工具,AI云端一体化解决方案服务平台。

下载
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 差异导致脚本失效;
  • 构建产物路径:默认输出位于 /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 流水线。

相关专题

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

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

2026.10.15

0

20

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

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

2026.10.15

0

18

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

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

2026.10.15

0

20

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

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

2026.10.15

0

18

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

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

2026.10.15

0

19

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

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

2026.10.15

0

15

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

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

2026.10.15

0

15

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

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

2026.10.15

0

18

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

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

2026.10.15

0

20

热门下载

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

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.7万人学习