kithara函数学习记录

简介: 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 顺序索引(计数从零开始)的内存范围描述。


相关文章
|
2月前
taichi学习记录
关于Taichi编程语言学习的记录,涉及Taichi的安装方法、运行结果截图以及相关学习资源的链接,包括中文语音视频教程、系统学习课程和知乎资料。
|
6月前
|
存储 自然语言处理 C++
刷题用到的非常有用的函数c++(持续更新)
刷题用到的非常有用的函数c++(持续更新)
81 1
|
存储 Ubuntu 算法
KNIME学习记录
KNIME学习记录
790 0
开心档之开发入门网-C++ 变量作用域
开心档之开发入门网-C++ 变量作用域
|
前端开发 C语言
带你读书之“红宝书”:第十章 函数④
带你读书之“红宝书”:第十章 函数④
77 0
带你读书之“红宝书”:第十章 函数④
|
前端开发 JavaScript C语言
带你读书之“红宝书”:第十章 函数①
带你读书之“红宝书”:第十章 函数①
99 0
带你读书之“红宝书”:第十章 函数①
|
安全 前端开发 C语言
带你读书之“红宝书”:第十章 函数⑥
带你读书之“红宝书”:第十章 函数⑥
76 0
带你读书之“红宝书”:第十章 函数⑥
|
前端开发 JavaScript C语言
带你读书之“红宝书”:第十章 函数⑤
带你读书之“红宝书”:第十章 函数⑤
68 0
带你读书之“红宝书”:第十章 函数⑤
|
前端开发 C语言
带你读书之“红宝书”:第十章 函数⑦
带你读书之“红宝书”:第十章 函数⑦
91 0
带你读书之“红宝书”:第十章 函数⑦