脚本示例: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
文件。如果该文件尚不存在,请使用脚本包中的模板。
- 通过在 [General] 节输入从组件类型 ID 到脚本的连接,以激活 CoDeSys 编辑器脚本。
- 如果要链接多个不同的组件类型到脚本,则必须为每个组件类型 ID 创建一个新的条目。
- 保存该文件。
- 将文件复制到 用于客户端自动升级的服务器脚本编写目录 选项卡。
例如:
具体例子
编辑 Codesys_editor.script
- 在文本编辑器中打开
CoDeSys_editor.script
。 - 编辑 ScriptBeforeEdit 脚本应用程序。
- 如有必要,请根据下表进行调整。
- 保存该文件。
- 将文件复制到 用于客户端自动升级的服务器脚本编写目录 选项卡。
脚本
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
的调整必须进行两次,一次针对 服务器脚本目录 选项卡中的配置,另一次针对客户端脚本编写目录中的配置。虽然服务器和客户端的配置文件名称相同,但是它们可能具有不同的内容(与其他组件的脚本配置相关)。
- 通过在 [General] 节输入从组件类型 ID 到脚本的连接,以激活 CoDeSys 编辑器脚本。
- 如果要链接多个不同的组件类型到脚本,则必须为每个组件类型 ID 创建一个新的条目。
例如:
具体例子:
扩展激活列表
- BeforeCompare 事件会考虑到要激活脚本的组件类型 ID 列表 (激活列表)。
- 在此列表中,使用CTIDn 键列出要执行脚本的所有组件类型 ID。在此添加CoDeSys 组件的组件类型 ID。
- 保存该文件。
- 将文件复制到 服务器脚本编写目录。
例如:
具体例子
编辑 Codesys_editor.script
- 在文本编辑器中打开
CoDeSys_editor.script
。 - 编辑 ScriptBeforeCompare 脚本应用程序。
- 如有必要,请根据下表进行调整。
- 保存该文件。
- 将文件复制到服务器脚本目录,以便自动更新客户端,并复制到服务器脚本目录。
脚本
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 行相同,也可以插入更多行来分配更多编辑器。