我在读取伺服电机报警这个参数过程中用了以下函数
REPEAT
alarm_RetStructRetReadDriveParameter[i] :=
_readDriveParameter(
// ioId := INPUT
,logAddress := alarm_logaddress[i]
// ,doId := 255
,parameterNumber :=2132
// ,numberOfElements := 0
// ,subIndex := 0
,nextCommand := WHEN_COMMAND_DONE
,commandId := alarm_Rcommandid[i]
);
UNTIL alarm_RetStructRetReadDriveParameter[i].functionResult=0
END_REPEAT;
myRetDINT:=_waittime(t#200ms);
dw_alarm[i]:=
SHL(BYTE_TO_DWORD(alarm_RetStructRetReadDriveParameter[i].data[0]),24)
OR
SHL(BYTE_TO_DWORD(alarm_RetStructRetReadDriveParameter[i].data[1]),16)
OR
SHL(BYTE_TO_DWORD(alarm_RetStructRetReadDriveParameter[i].data[2]),8)
OR alarm_RetStructRetReadDriveParameter[i].data[3];
axesalarm[i]:=DWORD_TO_DINT(dw_alarm[i]);
发现会死机,不知道是怎么回事
最佳答案
用这个方式读 你是把程序放Background 里了吧 这样很容易就超过监控时间了 方法是 把这个监控时间延长 或者放在Motion_Task里执行
其实这种方式除非读的数据非常多 如果读的少的话 建议用扩展报文的方式来读驱动部分的参数
提问者对于答案的评价:
谢谢
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc136925.html