n
1 问题提出
SIMOTION 在实际应用中,有时需要在运行中读写工艺对象的配置数据。例如,根据不同的生产需求改变的设备单位长度,这时可能需要修改轴的配置数据“模态长度”(Modulo Length)。在SIMOTION中,工艺对象配置数据的读写不同于系统变量和其他类型的变量。n
2 配置数据(Configuration Data)
配置数据定义了一个工艺对象的基本功能,通常在工艺对象的配置阶段,用SIMOTION SCOUT软件进行设置。大部分的配置数据是不能在系统运行中修改的。但是,也有一部分配置数据可以在程序中修改。一个配置数据是否能被在线修改可以查看参数的属性“Changeable online”(查看手册“SIMOTION technology package configuration data List Manual”)。n
分为三种情况(图1):n
1)不能在线修改
这种配置数据只能在用SIMOTION SCOUT 离线配置工艺对象时修改。n
2)可以在线修改,重新启动工艺对象后起作用
在线修改后,修改后的数据并不立即起作用,而是存储于存储器的缓存中(Next value),重启工艺对象后修改后的值起作用(Next value 的值拷贝到current value中)。n
3)可以在线修改,立即起作用
这种配置数据在程序中修改后立即起作用。
如果想保存在线修改的配置数据到CF卡中需要执行"Copy current data to RAM"和 "Copy from RAM to ROM",或者在程序中调用函数“_saveConfigData”。n
图1n
3 在线读取配置数据
在程序中有两种方法可以读出配置数据。n
1) 直接访问当前使用的配置数据(current value中的数据),格式是:
TO-name.activeconfigdata.config-date
直接访问已设置的数据(Next value中的数据),格式是:
TO-name. setconfigdata.config-date
例如,在ST程序中访问一个轴的模态长度值Axis_1.Modulo.length,这个参数的在线修改类型符合上述第二种情况:
VAR
lreal_var : LREAL;
END_VAR;
lreal_var := Axis_1.setconfigdata.Modulo.length;
// Read access to saved value
lreal_var := Axis_1. activeconfigdata.Modulo.length;
// Read access to value currently in effect
当访问出错时,会调用ExecutionFaultTask。n
2)通过函数_getSafeValue访问
可以通过函数返回值判断配置数据的访问是否成功,还可以指定在访问出错时系统执行的操作。
例如:
VAR
lreal_var : LREAL;
myRetANY :EnumSetAndGetSafeValue;
END_VAR;
myRetANY := _getsafevalue(Axis_1. activeconfigdata.Modulo.length, NO_CHANGE, lreal_var );
4 在线修改配置数据
同样有两种方法可以修改配置数据,例如
1)直接访问,格式是 TO-name. setconfigdata.config-date。
例如:
Axis_1.setconfigdata.Modulo.length:=100;
当访问出错时,会调用ExecutionFaultTask。
2)通过函数_setSafeValue 。
可以通过函数返回值判断配置数据的修改是否成功,还可以指定在访问出错时系统执行的操作。
VAR
myRetANY :EnumSetAndGetSafeValue;
END_VAR;
myRetANY := _setSafeValue (Axis_1.setconfigdata.Modulo.length, 100,NO_CHANGE);
对于像模态长度这种需要重启有效的配置数据,修改后的数据保存在RAM(Next value)中,工艺对象的重新启动后修改的数据有效。
5 工艺对象的重新启动
工艺对象重新启动时会退出当前的所有操作,重新初始化。如何重新启动工艺对象取决于配置数据TO.Restart.restartActivationSetting的设置:
1)TO.restart.restartActivationSetting = RESTART_BY_COMMAND:
通过调用工艺对象相应的函数执行重启操作。例如重启一个轴,要调用函数 _resetaxis:
myRetDINT :=
_resetaxis(
axis := AXIS_1, // 轴的名字
userdefaultdata := DO_NOT_CHANGE , //是否恢复配置数据(Configured数据)
activaterestart := RESTART_ACTIVATION //是否重新启动,一定要选择重新启动
);
2)restart.restartActivationSetting = RESTART_BY_SYSVAR_AND_COMMAND:
此设置下,除了可以使用上述调用函数的方法,还可以通过设置系统变量重启工艺对象。设置TO. activateRestart = ACTIVATE_RESTART ,工艺对象开始复位过程,完成后TO. activateRestart自动回到NO_RESTART_ACTIVATION状态。
关键词
SIMOTION, 配置数据,工艺对象
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc326195.html