如何为 EL6002 或 EL6001 comport 在 TwinCAT3 PLC 上设置波特率?

How to set baudrate on TwinCAT3 PLC for EL6002 or EL6001 comport?

我找不到如何为 Beckhoff EL6002 设置波特率。我得到一个提示,我应该为此使用 CoeWrite 块,但由于我对 TwinCAT 有点陌生,我找不到正确的功能块。有人可以发送代码示例(在结构化文本上)怎么做吗?

另一种编程方法是直接通过 IO 配置对其进行配置。如果添加 Startup 值,则每次 IO 从指定状态更改为另一个时都会设置该值。在下图中,PS 表示从 Pre-Op 到 Safety。所以它会工作,即使你更换了 IO。

另一种解决方案是在 IO 配置和 COE-online 选项卡下更改它。当你在那里更新它时,它会永远记住这个值。

在代码中,您也可以通过 CoE (Can over EtherCAT) 更新它。您可以从 documentation 中找到设置变量的索引号。对于通道 1,它似乎是 8000:11,因此索引 = 8000 和子索引 = 11。

然后通过使用 Tc2_EtherCAT 库中的邮箱写入器块 (FB_EcCoESdoWriteEx) 可以向该参数写入一个值。因此,当您的 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