2. AVEVA开发环境与工具链搭建

AVEVA工业软件的二次开发并不是“打开一个编辑器写脚本”这么简单。以AVEVA Application Server(下文简称App Server)为核心,一个可用的开发环境通常由四层构成:运行时服务层(App Server、Galaxy Repository、SQL Server)、客户端与IDE层(AVEVA IDE、Visual Studio、脚本编辑器)、调试与诊断层(脚本调试器、日志、对象查看器)、以及版本控制层(Git/TFS与导出包管理)。本节围绕这四层,讲清楚安装顺序、关键配置项、IDE集成方式,以及如何把工程对象纳入版本控制。

一、安装顺序与依赖关系

App Server的安装有严格的先后依赖,顺序错了往往表现为“服务能启动但Galaxy无法创建”。推荐顺序如下:

  1. 操作系统与基础组件:Windows Server 2019/2022(或Windows 10/11专业版),启用.NET Framework 4.8、IIS(若需Web发布)、MSDTC。
  2. 数据库:SQL Server 2019及以上,实例名建议使用默认实例,排序规则选择 SQL_Latin1_General_CP1_CI_AS。
  3. App Server平台安装:运行安装程序,选择“Application Server”与“IDE”组件,安装路径避免中文和空格。
  4. 创建Galaxy:通过Galaxy Database Manager创建Galaxy数据库,指定SQL Server实例、Galaxy名称(如 GAL_DEV)和平台账号。
  5. 客户端与IDE:安装AVEVA IDE(基于Visual Studio Shell),并确认能连接到刚创建的Galaxy。
建议开发环境与生产环境使用不同的Galaxy名称,例如开发用 GAL_DEV、测试用 GAL_TEST,避免误操作污染生产对象。

二、Galaxy与App Server的关键配置

Galaxy创建完成后,需要在System Platform的“Galaxy”配置中确认几个关键项:平台账号(Platform Account)必须具有本机管理员权限;aaEngine、aaGR、aaHistClient 等服务应处于运行状态;在“Deployment”视图中,目标节点(Node)需要先“Assign”到Galaxy,再执行“Deploy”才能让对象真正下发到运行时。

一个常见的配置示例:在Galaxy中新建一个 AppEngine 实例,命名为 Engine_Demo,绑定到本机节点 NODE_LOCAL,扫描周期设为 500 ms。部署后,在对象查看器中应能看到该引擎状态为“Deployed”,否则说明节点未正确分配或服务未启动。

三、IDE集成与脚本编辑器

AVEVA IDE是二次开发的主入口,它把对象编辑、脚本编写、部署和调试集成在一个界面中。脚本编辑器支持两类脚本:对象脚本(如 OnScan、OnTrue、DataChange)和脚本函数库(Script Function Library)。编写时需注意:脚本语言为QuickScript .NET,变量引用使用 Me. 前缀访问对象属性,例如 Me.Temperature。

' 示例:Engine_Demo 的 OnScan 脚本
' 当温度超过阈值时置位报警
If Me.Temperature > 80 Then
    Me.HighAlarm = True;
    LogMessage("High temperature: " + Me.Temperature);
Else
    Me.HighAlarm = False;
EndIf;

若需要与外部系统集成,可在IDE中通过“Script Function Library”引用.NET程序集,或在Visual Studio中开发自定义控件与驱动,再通过 ArchestrA 接口注册到Galaxy。IDE集成时需确认目标框架版本与App Server一致(通常为.NET Framework 4.8),否则会出现“类型加载失败”。

四、调试工具与诊断手段

调试是二次开发中最耗时的环节。App Server提供的调试手段主要有三类:脚本调试器(可设置断点、单步执行、查看变量)、日志与跟踪(LogMessage、TraceMessage、Logger配置)、以及对象查看器(Object Viewer)实时观察属性值。建议在开发阶段把日志级别设为 Debug,部署到生产前再调回 Info。

一个实用的排障顺序是:先看服务是否运行,再看节点是否Deployed,然后看脚本是否被触发(通过日志时间戳),最后用断点确认变量取值。多数“脚本不执行”的问题,根源是对象未部署或脚本未绑定到正确的事件。

五、版本控制接入

App Server的工程对象存储在Galaxy数据库中,不能直接用Git管理二进制数据库。标准做法是使用IDE的“Export”功能把对象导出为 .aaPKG 或XML格式,再纳入Git仓库。推荐目录结构如下:

repo/
├── galaxy/
│   ├── objects/        # 导出的对象包
│   └── scripts/        # 脚本函数库
├── config/
│   └── deployment.json # 节点与部署配置
└── README.md

每次修改对象后,执行导出并提交,提交信息中注明Galaxy名称、对象路径和变更原因。导入时使用“Import with Overwrite”并核对对象版本,避免覆盖他人修改。对于多人协作,建议约定“谁导出、谁提交、谁导入”的责任链,并在导入前先做一次Galaxy备份。

AVEVA App Server 开发环境四层结构 运行时服务层 App Server 服务 Galaxy Repository SQL Server 实例 aaEngine / aaGR 服务 客户端与IDE层 AVEVA IDE Visual Studio 脚本编辑器 对象编辑器 / 部署视图 调试与诊断层 脚本调试器(断点) LogMessage / Trace Object Viewer Logger 日志配置 版本控制层 导出 .aaPKG / XML Git / TFS 仓库 导入与覆盖核对 Galaxy 备份 安装顺序:SQL Server → App Server → 创建 Galaxy → IDE 连接 → 导出纳入版本控制

六、可直接使用的环境检查清单

下表可作为搭建完成后的自检依据,字段和判断标准均针对App Server开发环境:

检查项预期结果不通过时的排查方向
SQL Server 服务运行中,Galaxy数据库可连接实例名、排序规则、防火墙1433端口
App Server 服务aaEngine、aaGR 均为 Running平台账号权限、依赖服务
Galaxy 创建Galaxy Database Manager 中可见 GAL_DEV数据库连接串、账号密码
节点分配与部署NODE_LOCAL 状态为 DeployedAssign 是否执行、Deploy 是否成功
IDE 连接可打开 Galaxy 并看到对象树IDE 版本、.NET 框架版本
脚本调试断点可命中,变量可查看脚本是否绑定事件、日志级别
版本控制导出包可提交、可回滚导出路径、Git 忽略规则