使用配方设置值
使用配方同时更改或读取控制器上一组特定变量(配方定义)的配方值。
您可以在中定义菜谱的基本设置,例如位置和格式。 食谱经理 目的。插入任意数量的 食谱定义 在该物体下方。
您可以将配方保存到文件或直接从文件写入 PLC。
可以通过以下方式调用菜谱 CODESYS 开发接口、可视化元素或应用程序。
在远程设备上使用食谱
如果涉及数据源变量并且配置了数据源交换,则配方中的变量值将自动传输到另一个控制器或从另一个控制器传输。读取和写入同步发生。这意味着配方定义中配置的所有变量都会同时更新。
读完或写完后,就可以使用调用 g_RecipeManager.LastError
检查转账是否成功(g_RecipeManager.LastError = 0
)。
调用配方命令 CODESYS 用户界面
开发接口 CODESYS 提供用于生成配方以及在线模式下读/写的命令。
以编程方式或在可视化中调用配方命令
运行时,可以在应用程序中调用配方定义和配方命令。为此,您可以使用以下方法在代码中实现写入、读取或监视配方定义的过程: RecipeManCommands
功能块从 RecipeManagement
图书馆。
有关更多信息,请参阅: RecipeMan 命令 (FB)
在可视化中,配方命令的调用是通过使用 输入配置(执行命令) 用于可视化元素。通过这样做,可视化用户可以控制配方命令的执行。
提示
在初始化过程中,配方管理读取配方定义中定义的变量值。此操作发生在应用程序的初始化阶段结束时。此时,应用程序变量的所有初始值都已设置。执行此操作是为了正确初始化配方文件中的缺失值。
浮点数的特殊功能
对于类型变量 REAL
或者 LREAL
,区分该值是否完全可转换。
如果可以精确地转换该值,则仅将数值保存在配方文件中。
如果无法进行精确转换,则会在配方文件中的数值旁边写入十六进制编码字符串。这应该具有这样的效果:不可转换的浮点数也返回相同的值。
可以使用以下命令禁用此功能 RECIPE_GENERATE_SIMPLE_STRINGREAL
编译器定义。
提示
在父应用程序的对象属性下 建造,你可以输入这个 RECIPE_GENERATE_SIMPLE_STRINGREAL
编译器定义在 编译器定义 选项。因此,不会存储任何十六进制编码的字符串。
有关更多信息,请参阅: 对话框:属性:构建
创建食谱
从文件加载菜谱
要求:应用程序中提供了配方管理器。在配方定义中,有一个 我的记录 具有可变值的配方。一个 myRec.txt
配方文件位于文件系统上,包含此配方的条目。
配方文件示例:
PLC_PRG.bVar:=0 PLC_PRG.iVar:=2 PLC_PRG.dwVar:=35232 PLC_PRG.stVar:='first' PLC_PRG.wstVar:='123443245'
双击 配方定义 设备树中的对象以打开表格编辑器以定义各个配方。
你看到
myRec
此配方的当前值列。编辑
myRec.txt
在外部文本编辑器中创建文件并将变量值替换为要加载到配方定义中的其他值 CODESYS.保存文件。在配方定义中,单击 我的记录 列并在上下文菜单中单击 加载配方.
再次登录时,会出现对话框提示,通知您可能需要执行在线更改。当您通过加载配方来更改配方变量的当前值时,需要进行在线更改。
点击 是的 关闭对话框并继续。选择
myRec.txt
从文件资源管理器加载文件。配方定义中的配方值根据文件中读取的值进行更新。
提示
如果您只想用新值覆盖单个配方变量,则在加载到配方文件之前删除其他变量的值。没有值定义的条目不会被读取,因此更新会使控制器和项目中的这些变量保持不变。
对于数据类型的值 REAL
/LREAL
,在某些情况下,十六进制值也会写入配方文件。这是必要的,以便在转换回来时恢复完全相同的值。在这种情况下,您可以更改十进制值并删除十六进制值。
控制器上的配方管理;内存使用情况
当你清除 PLC 中的配方管理 选项,配方管理器和配方定义将不使用 PLC 上的任何内存。
如果选择此选项,则会为配方管理器和所有配方定义生成代码,并且此代码存储在 PLC 中。所用内存的大小主要取决于 pf recipes 的数量及其变量,以及变量的数据类型。配方定义的字段是否填写也有影响。无法计算配方的内存使用量。它必须在需要的时候通过实验来确定。下表仅提供一些指导原则。
代码大小(字节) | 数据大小(字节) | 总计(字节) | |
---|---|---|---|
具有 100 个 INT 变量的配方定义 | 194406 | 79400 | 267352 |
具有 200 个 INT 变量的配方定义 | 238318 | 121284 | 459344 |
具有 300 个 INT 变量的配方定义 | 282230 | 163084 | 543856 |
具有 100 个 BOOL 变量的配方定义 | 192742 | 69884 | 343168 |
具有 200 个 BOOL 变量的配方定义 | 235446 | 101568 | 436872 |
具有 300 个 BOOL 变量的配方定义 | 278146 | 133284 | 510072 |
具有 100 个字符串变量的配方定义 | 203278 | 870084 | 1154000 |
具有 200 个字符串变量的配方定义 | 255570 | 1709784 | 2973296 |
具有 300 个字符串变量的配方定义 | 307886 | 2549484 | 2964112 |
从控制器加载配方值
您可以将控制器上的配方值应用于项目中的配方定义,即使这些定义已在项目中进行了修改。
要求: PLC 中的配方管理 是在配方管理器中选择的选项。
创建配方定义
RecDef1
在项目中,包含变量PLC_PRG.ivar
和PLC_PRG.bvar
.插入食谱 R1: 价值PLC_PRG.ivar
:33
;价值PLC_PRG.bvar
:TRUE
.登录控制器并下载应用程序。
配方文件
R1.RecDef1.txtrecipe
保存到控制器的默认目录 ($PlcLogic$)。注销并添加另一个变量
PLC_PRG.dwvar
到项目中的配方定义。编辑配方定义文件
R1.RecDef1.txtrecipe
在设备上通过更改值PLC_PRG.ivar
从33
到34
.此外,添加另一个食谱 R2 在设备上。为此,请复制
R1.RecDef1.txtrecipe
并将其重命名为R2.RecDef1.txtrecipe
.然后编辑此文件并更改配方值:PLC_PRG.ivar
:1
,PLC_PRG.bvar
:FALSE
.现在有两个食谱 R1 和 R2 在设备上可用。在项目中,只有 R1,并且它还包含其他值 R1 在设备上。
通过在线更改登录控制器。
点击 从设备加载配方 从上下文菜单中。
对话框提示通知您下次登录时执行命令可能会触发在线更改,并且运行时系统上的配方将覆盖当前配方定义的配方。
确认您要继续。
对话框提示通知您
PLC_PRG.dwvar
加载到设备上无法从控制器产生值。确认您要继续。
的价值
PLC_PRG.ivar
在食谱中 R1 项目中的配方定义更改为34
.食谱 R2 与价值观1
和FALSE
现在也列在配方定义中。PLC_PRG.dwvar
保留在配方定义中。