kithara函数记录

CanOpen over EtherCAT(CoE) and Safety over EtherCAT(SoE) are supported using the functionsKS_postEcatDataObj and KS_readEcatDataObj.

 

KS_postEcatDataObj(KSHandle hObject, int objIndex, int varIndex, const void* pData, int size, int flags)

objIndex 数据对象索引,

varIndex 数据对象/变量索引的子索引

pData 指向包含数据的缓冲区的指针

 

KSF_COMPLETE_ACCESS     Uses the SDO complete access.

KSF_PDO Writes the data, which should be posted to a PDO, in the dataset memory.

KSF_SDO The data object is a COE object (this is the default).

KSF_IDN  The data object is a SOE object.

 

 

 

KS_getEcatDataObjAddress

获取一个从站、一个对象或一个变量的地址、偏移量和长度

有了这个函数值,就可以直接访问数据对象的变量。index和subIndex决定变量值指针,该指针将在ppAppPtr中返回,以供应用程序级别访问和ppSysPtr用于内核级访问

KS_getEcatDataObjAddress(KSHandle hSet, KSHandle hObject, int pdoIndex, int varIndex, void** ppAppPtr, void** ppSysPtr, int* pBitOffset, int* pBitLength, int flags);

 

hSet  Ethercat数据集的句柄

hObject 从站或者EAP-Proxy的句柄

pdoIndex 过程数据对象索引

varIndex数据对象/变量索引的子索引

ppAppPtr用于应用程序访问的指针变量的地址

ppSysPtr用于实时访问的指针变量的地址

pBitOffset用于存储位偏移量的指针

pBitLength 指向一个变量的指针来获得位长度

 

 

KS_queryEcatSlaveInfo 

KS_queryEcatSlaveInfo(KSHandle hSlave, KSEcatSlaveInfo** ppSlaveInfo, int flags);

从从站读取信息并将其与从XML文件中收集的信息融合

从从站读取的信息被缓存,直到主站决定需要更新它。这个函数需要一些时间才能完成,最多超过30秒,特别是对于复杂的奴隶。

除非您指定了ksfalternative宏,否则从站必须处于状态PREOP或更高的状态才能成功

注意:由于在参数ppSlaveInfo中给出的指针指向一个内部数据结构,所以结构本身的内容不能被更改!

该函数可用于内核级,包括实时模式

其中ppSlaveInfo  是一个指向如下结构体的指针。包含了从站的信息。

typedef struct {

  int vendorId;

  int productId;

  int revision;

  int serial;

  const char* group;

  const char* image;

  const char* order;

  const char* name;

  int objCount;

  KSEcatDataObjInfo* objs[1];

} KSEcatSlaveInfo;

 

 

typedef struct {

  int objType;

  const char* name;

  int bitLength;

  int index;

  int syncIndex;

  int varCount;

  KSEcatDataVarInfo* vars[1];

} KSEcatDataObjInfo;

ss据对象的信息

使用KSEcatDataObjInfo的指针来获取关于数据对象的所有信息

 

varCount   在vars中的有效的 KSEcatDataVarInfo指针的数量

vars  KSEcatDataVarInfo指针数组

 

 

 

struct SlaveDataModel

{

     uint  data;

     void* pValue={nullptr};

     int   bitOffset;

     int   bitLength;

     int   slaveindex;

     bool  IsWrite;

     int   datatpye;

 

};

 

 

KS_addEcatRedundancy  添加电缆冗余连接

 

 

  ksError = KS_changeEcatSlaveState(

              hSlave,                                   // Slave handle

              KS_ECAT_STATE_BOOT,                       // State

              0);                                       // Flags

  if (ksError) {

    outputErr(ksError, "KS_changeEcatSlaveState",

      "Failed to bring slave to state KS_ECAT_STATE_BOOT!");

    KS_closeDriver();

    delete [] pData;

    return;

  }

 

最后,将从站设置为boot状态,这样主站就可以下载新的固件了。  Firmware 

 

KS_execEcatCommand  在对象上执行一个命令

 

 

KS_mapDeviceMem  将物理设备内存映射到应用程序内存中

KS_mapDeviceMem(void** ppAppPtr, void** ppSysPtr, KSResourceInfoEx* pInfo, int index, int flags);

pInfo (KSResourceInfoEx*)
Pointer to KSResourceInfoEx instance.

Index 顺序索引(计数从零开始)的内存范围描述。

flags (int)
Flags.

KSF_MAP_INTERNAL

In memory (RAM) of the PC.

KSF_ISA_BUS

on ISA bus.

KSF_PCI_BUS

on PCI bus.

 

 

 

The function KS_mapPhysMem maps physical memory into application memory.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kobesdu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值