2017-09-15 224 views

回答

1

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

在代码中,您也可以通过CoE(可通过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

2

编程它的替代方案是直接通过IO配置进行配置。如果添加Startup值,则每次IO从指定状态变为另一个时都会设置它。在下面的图片中,PS表示从Pre-Op到Safety时的情况。所以即使你更换了IO,它也能工作。

Setting IO Startup values