如何在EL6002或EL6001 compot的TwinCAT3 PLC上设置波特率?

时间:2017-09-15 09:34:25

标签: plc twincat structured-text

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

2 个答案:

答案 0 :(得分:2)

编程的另一种方法是直接通过IO配置进行配置。如果添加“启动”值,则每次IO从指定状态更改为另一个状态时,都会设置该值。在下图中,PS表示从Pre-Op到Safety的时间。因此,即使您更换IO,它也能正常工作。

Setting IO Startup values

答案 1 :(得分:1)

另一种解决方案是在IO配置和COE-online选项卡下更改它。当你在那里更新它时,它将始终记住该值。

在代码中,您也可以通过CoE(Can over EtherCAT)更新它。您可以从documentation中找到设置变量的索引号。对于通道1,它似乎是8000:11,因此index = 8000,subindex = 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