1:这些指令通常都是以FB的形式出现的,使用前需要声明相应的FB,例如使用上升沿检测模块:
VAR_GLOBAL
g_FB_Edge_Det : R_TRIG;
END_VAR;
IMPLEMENTATION
g_FB_Edge_Det (CLK:=g_signal_in);//g_signal_in这个是被检测信号,需要声明或者定义成I/O类型
if g_FB_Edge_Det.Q=1 THEN
.....//添加上升沿时运行的程序
END_IF;
2:使能轴的命令
g_i32ReDint:= //g_i32ReDint需要事先声明成DINT类型的变量
_enableaxis(
axis:= axis_Speed, //这个是SCOUT中轴的名称
enablemode:=ALL,
servocontrolmode:=ACTIVE,
servocommandtoactualmode:=INACTIVE,
nextcommand:=IMMEDIATELY,
commandid:=_getcommandid(), //这个很重要,需要写成_getcommandid()由系统为这个命令分配一个命令ID
forcecontrolmode:=INACTIVE,
stwbitset:=0,
movingmode:=DO_NOT_CHANGE
);
3:可能是axis_virtual轴没有配置成Position类型的,如果需要读取轴的位置,需要在建立轴的时候钩选位置轴的选项。
根据你提供的错误信息,看起来是由于"axis_virtual"这个变量没有正确定义或声明而导致的错误。错误信息中提到已经指定的技术包不支持"axis_virtual"这种类型的TO(目标对象)。
要解决这个问题,你可以尝试以下几个步骤:
确保"axis_virtual"变量已经正确定义并且在当前代码范围内可见。如果你是在使用第三方库或框架,确认你已经正确导入并使用了相应的技术包。
检查你是否正确地使用了"axis_virtual"变量。确保正确拼写和大小写,以及在使用之前是否已经声明或初始化了该变量。
如果你使用的是特定的技术包或库,检查其文档或示例代码,查看是否有关于如何正确使用"axis_virtual"变量的指导。
如果你仍然遇到困难,建议提供更多的上下文信息,例如你正在使用的编程语言、上下文代码的其他部分等,这样可以更具体地帮助你解决问题。