我找不到如何为贝克霍夫EL6002设置波德率。我得到了一个提示,我应该为此使用CoeWrite块,但是由于我对TwinCAT有点陌生,所以找不到正确的函数块。有人可以发送一个代码示例(关于结构化文本)如何做到这一点?
发布于 2017-09-18 04:28:25
另一个解决方案是在IO配置和COE选项卡下更改它。当您在那里更新它时,它将永远记住它的值。
在代码中,您也可以通过CoE (Can over EtherCAT)更新它。您可以从文档中找到设置变量的索引号。对于通道1,似乎是8000:11,所以索引= 8000,子索引= 11。
然后,通过使用来自EcCoESdoWriteEx库的邮箱写入块( Tc2_EtherCAT ),可以将值写入该参数。因此,当您的PLC程序启动时,首先运行将变量更新为所需波德率的代码。
例如,如下所示:
TargetValue := 1; //WORD, Check documentation for correct value
//MailBoxWriter = Instance of FB_EcCoESdoWriteEx
MailBoxWriter(
sNetId:= **AmsNetId of the EtherCAT master**,
nSlaveAddr:= **Serial interface terminal port**,
nSubIndex:= 11,
nIndex:= 8000,
pSrcBuf:= ADR(TargetValue),
cbBufLen:= SIZEOF(TargetValue),
bExecute:= TRUE,
tTimeout:= T#500MS,
bCompleteAccess:= FALSE,
bBusy=> ,
bError=> ,
nErrId=>
);
sNetId
是EtherCAT总线主站的AmsNetId。它可以通过IO配置链接,请参阅Master->Infodata->AmsNetId
。
nSlaveAddr
是来自EL6002的终端端口,可以通过IO配置链接,参见Terminal->InfoData->AdsAddr->port
。
发布于 2017-09-15 11:51:29
编程的另一种选择是通过IO配置直接配置它。如果添加启动值,则每次IO从指定状态更改到另一状态时都会设置该值。在下面的图片中,PS指的是从预操作到安全.因此,即使您替换了IO,它也会起作用。
https://stackoverflow.com/questions/46236380
复制相似问题