跳转至

脚本示例:CoDeSys 组件的编辑器集成

在处理同样基于 CoDeSys 但需要不同项目规划环境的不同组件类型时,该脚本解决方案可实现优化。

该脚本功能所需的文件

文件名 描述 功能性
ScriptBeforeEdit.exe 已在脚本包中提供 根据组件类型 ID 的不同,可通过编辑器链接项目文件
ScriptBeforeEdit.ini 可使用文本编辑器进行编辑 为特定组件类型 ID 定义 BeforeEdit 脚本
ScriptBeforeCompare.exe 已在脚本包中提供 根据所需编辑器的组件类型 ID 配置比较流程
ScriptBeforeCompare.ini 可使用文本编辑器进行编辑 为特定组件类型 ID 定义 BeforeCompare 脚本
Codesys_editor.script 可使用文本编辑器进行编辑 脚本解释器处理的脚本

脚本解决方案可以单独使用。

脚本解决方案的前提条件

各 CoDeSys 编辑器必须可通过统一路径在本地访问,即对于多台计算机而言,本地访问路径必须相同。

设置脚本

激活 ScriptBeforeEdit.exe

将应用程序复制到 用于客户端自动升级的服务器脚本编写目录 选项卡。

编辑 ScriptBeforeEdit.ini

我们建议您从 用于客户端自动升级的服务器脚本编写目录 选项卡中添加任意一个现有的 ScriptBeforeEdit.ini 文件。如果该文件尚不存在,请使用脚本包中的模板。

  1. 通过在 [General] 节输入从组件类型 ID 到脚本的连接,以激活 CoDeSys 编辑器脚本。
  2. 如果要链接多个不同的组件类型到脚本,则必须为每个组件类型 ID 创建一个新的条目。
  3. 保存该文件。
  4. 将文件复制到 用于客户端自动升级的服务器脚本编写目录 选项卡。

例如:

[General]
// Mapping for CoDeSys editor component types
{Component type ID}=Codesys_editor

具体例子

[General]
5A527AA2D4A846208BB8648EED1146BD=Codesys_editor

编辑 Codesys_editor.script

  1. 在文本编辑器中打开 CoDeSys_editor.script
  2. 编辑 ScriptBeforeEdit 脚本应用程序。
  3. 如有必要,请根据下表进行调整。
  4. 保存该文件。
  5. 将文件复制到 用于客户端自动升级的服务器脚本编写目录 选项卡。

脚本

Function ScriptBeforeEdit
{
// Assign the editors for the Codesys components
// here (component typeId <-> Codesys Editor)
$def::var1 = $func::getifcomponenttypeid(<Component type Id 1>,<Editor 1>)
$def::var1 = $func::getifcomponenttypeid(<Component type Id 2>,<Editor 2>)
$def::var1 = $func::getifcomponenttypeid(<Component type Id 3>,<Editor 3>)

exit.ifemptyvar $def::var1

$def::var2 = $vdog::specific->WorkingDir$vdog::specific->SelectedFile

call $def::var1
{
arg $def::var2
wait 0
rundir $def::var1
}

done
}

自定义

第 5 行:

在这里,特定组件类型 ID 被分配给特定的编辑器。

在这里,特定的组件类型 ID 会分配给特定的编辑器。只有当组件类型 ID 与工作相匹配时,才会将编辑器路径的定义值分配给 $def::var1。因此,以下内容适用: $def::var1 = 如果组件类型 ID,则使用编辑器。脚本语法为: $def::var1 = $func::getifcomponenttypeid(<组件类型 ID>,<编辑器>)<组件类型 ID> 现在必须用要链接到特定编辑器的特定组件类型 ID 替换。<Editor> 现在必须替换为要链接到组件类型 ID 的编辑器的绝对路径。示例:$def::var1 = $func::getifcomponenttypeid(5A527AA2D4A846208BB8648EED1146BD, C:\Program Files\myeditor.exe)

第 6、7 行:

如果不需要更多的编辑器分配,可以删除这些行。配置过程与第 5 行相同,也可以插入更多行来分配更多编辑器。

第 9 行:

所有编辑器分配必须在这一行之前完成。如果在编辑器分配中尚未考虑组件类型 ID,但调用了脚本,脚本将在这一行终止。打开编辑器的标准逻辑将被执行。

激活 ScriptBeforeCompare.exe

将应用程序复制到服务器脚本目录,并复制到服务器脚本目录,以便自动更新客户端

编辑 ScriptBeforeCompare.ini

我们建议您从 服务器脚本编写目录 目录中添加任何现有的 ScriptBeforeEdit.ini 文件。如果该文件尚不存在,请使用脚本包中的模板。

Info

ScriptBeforeEdit.ini 的调整必须进行两次,一次针对 服务器脚本目录 选项卡中的配置,另一次针对客户端脚本编写目录中的配置。虽然服务器和客户端的配置文件名称相同,但是它们可能具有不同的内容(与其他组件的脚本配置相关)。

  1. 通过在 [General] 节输入从组件类型 ID 到脚本的连接,以激活 CoDeSys 编辑器脚本。
  2. 如果要链接多个不同的组件类型到脚本,则必须为每个组件类型 ID 创建一个新的条目。

例如:

[General]
// Mapping for CoDeSys editor component types
<Component type ID>=Codesys_editor

具体例子:

[General]
5A527AA2D4A846208BB8648EED1146BD=Codesys_editor

扩展激活列表

  1. BeforeCompare 事件会考虑到要激活脚本的组件类型 ID 列表 (激活列表)。
  2. 在此列表中,使用CTIDn 键列出要执行脚本的所有组件类型 ID。在此添加CoDeSys 组件的组件类型 ID。
  3. 保存该文件。
  4. 将文件复制到 服务器脚本编写目录

例如:

[CTIDs]
12675=I
CTID0=<Component type ID>
CTID1=<Component type ID>

具体例子

[CTIDs]
12675=I
CTID0=581E9C1B48714ED6ADEE19E5351811BB

编辑 Codesys_editor.script

  1. 在文本编辑器中打开 CoDeSys_editor.script
  2. 编辑 ScriptBeforeCompare 脚本应用程序。
  3. 如有必要,请根据下表进行调整。
  4. 保存该文件。
  5. 将文件复制到服务器脚本目录,以便自动更新客户端,并复制到服务器脚本目录

脚本

Function ScriptBeforeCompare
{
    // Assign the editors for the Codesys components
    // here (ComponenttypId <-> Codesys Editor)
    $def::var1 = $func::getifcomponenttypeid(<CoDeSys ComponentTypeId 1>,<Editor for type 1>)
    $def::var1 = $func::getifcomponenttypeid(<CoDeSys ComponentTypeId 2>,<Editor for type 2>)
    $def::var1 = $func::getifcomponenttypeid(<CoDeSys ComponentTypeId 3>,<Editor for type 3>)

    // set the editor
    $def::var2 = $vdog::rootdir\VD$A\Configuration\Compare\AgentStation.ini
    file.append $def::var2
    {
        write.ini [CoDeSys]\7220=$def::var1
    }
}

定制

第 5 行:

特定的组件类型 ID 会分配给特定的编辑器。只有当组件类型 ID 与工作相匹配时,才会将编辑器路径的定义值分配给 $def::var1。因此,以下内容适用: $def::var1 = Condition(组件类型 ID,编辑器)。<组件类型 ID> 现在必须替换为要链接到特定编辑器的特定组件类型 ID。<编辑器> 现在必须替换为要链接到组件类型 ID 的编辑器的绝对路径。示例:$def::var1 = $func::getifcomponenttypeid(5A527AA2D4A846208BB8648EED1146BD, C:\Program files\myeditor.exe)

第 6、7 行:

如果不需要更多的编辑器分配,可以删除这些行。配置过程与第 5 行相同,也可以插入更多行来分配更多编辑器。

相关主题