TwinCAT3中通过PLC修改Coe参数的例程

CoE 接口的驱动器,要在 PLC 程序中修改驱动器参数,可以使用 CoeSDO 通讯的方式 。
CoeSDO 通 讯 的 功 能 块 包 括 FB_EcCoeSdoRead , FB_EcCoeSdoWrite ,FB_EcCoeSdoReadEx , FB_EcCoeSdoWriteEx 等 , 属 于 库 文 件 TcEtherCAT.Lib 。

以FB_EcCoeSdoWriteEx 为例。首先导入Tc2_EtherCAT.Lib库文件。

以修改8010:01最大电流为800mA为例。

Coe子模块:

FUNCTION_BLOCK CoeSet
VAR_INPUT
	bExecute   : BOOL; (* rising edge starts writing to the CoE Object *) 
END_VAR

VAR_OUTPUT
	bError     : BOOL;    
	nErrId     : UDINT;
END_VAR

VAR
	fbSdoWrite 			: FB_EcCoESdoWrite;    
	sNetId     			: T_AmsNetId := '169.254.208.225.3.1'; (* NetId of EtherCAT Master *)
    
	nSlaveAddr_1 		: UINT := 1002; (* Port Number of EtherCAT Slave *)    
	nMaxCurrent 			: WORD := 16#8010; (* CoE Object Index *) 
	nMaxCurrentSubIndex 	: BYTE := 1; (* Subindex of CoE Object *)    
	valueMaxCurrent_1     	: UINT := 800; (* variable to be written to the CoE Object *)   //注意数据类型,在Coe中具体查看
END_VAR

fbSdoWrite(
    sNetId     := sNetId,
    nSlaveAddr := nSlaveAddr_1,
    nIndex     := nMaxCurrent,
    nSubIndex  := nMaxCurrentSubIndex,
    pSrcBuf    := ADR(valueMaxCurrent_1),
    cbBufLen   := SIZEOF(valueMaxCurrent_1),
    bExecute   := bExecute
);


IF NOT fbSdoWrite.bBusy THEN
    bExecute := FALSE;
    IF NOT bError THEN 
        (* write successful *)
        bError := FALSE;
        nErrId := 0;
    ELSE 
        (* write failed *)
        bError := fbSdoWrite.bError;
        nErrId := fbSdoWrite.nErrId;
    END_IF

    fbSdoWrite(bExecute := FALSE);
END_IF

主程序:

PROGRAM MAIN
VAR
	coe:CoeSet;
	bExcuteCOE  : BOOL;
	bResError	: BOOL;    
	nResErrId   : UDINT;
END_VAR

coe(bExecute:=bExcuteCOE,bError=>bResError,nErrId=>nResErrId);

sNetId: EtherCAT 主站卡的 NetID,字符串,如下图。
在这里插入图片描述
nSlaveAddr: 要写参数的 EtherCAT 节点地址。如下图中的 EtherCAT Addr:1002。
在这里插入图片描述

nSubIndex 若没有时,置为空。

TwinCAT接入第三方伺服驱动器同样适用(松下验证过)。

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值