SOEM(EtherCAT)主站API梳理

1. 适配器管理

  • ec_adaptert * ec_find_adapters(void);
    • 功能:查找并返回系统中所有可用的EtherCAT适配器的列表。
    • 返回值:指向适配器列表的指针。如果没有找到适配器,则返回NULL。
  • void ec_free_adapters(ec_adaptert * adapter);
    • 功能:释放由ec_find_adapters函数分配的资源。
    • 参数adapter是指向先前获取的适配器列表的指针。

2. 邮箱(MBX)管理

  • uint8 ec_nextmbxcnt(uint8 cnt);
    • 功能:计算下一个邮箱消息所需的字节数。
    • 参数cnt是消息的数据字节数。
    • 返回值:包括所有必要的头信息在内的总字节数。
  • void ec_clearmbx(ec_mbxbuft *Mbx);
    • 功能:清除邮箱缓冲区的内容。
    • 参数Mbx是指向要清除的邮箱缓冲区的指针。

3. 错误处理

  • ecx_pusherror(ecx_contextt *context, const ec_errort *Ec);
    • 功能:将错误推送到错误队列中。
    • 参数context是EtherCAT上下文,Ec是指向错误信息的指针。
  • boolean ecx_poperror(ecx_contextt *context, ec_errort *Ec);
    • 功能:从错误队列中弹出错误。
    • 参数context是EtherCAT上下文,Ec是指向存储错误信息的缓冲区的指针。
    • 返回值:如果成功获取错误,则返回TRUE;否则返回FALSE。
  • boolean ecx_iserror(ecx_contextt *context);
    • 功能:检查是否有待处理的错误。
    • 参数context是EtherCAT上下文。
    • 返回值:如果有待处理的错误,则返回TRUE;否则返回FALSE。
  • void ecx_packeterror(ecx_contextt *context, uint16 Slave, uint16 Index, uint8 SubIdx, uint16 ErrorCode);
    • 功能:报告一个包错误。
    • 参数context是EtherCAT上下文,Slave是从站地址,IndexSubIdx是错误的位置,ErrorCode是错误代码。

4. 上下文和初始化

  • int ecx_init(ecx_contextt *context, const char * ifname);
    • 功能:初始化EtherCAT上下文。
    • 参数context是指向EtherCAT上下文的指针,ifname是网络接口的名称。
    • 返回值:如果成功,则返回0;否则返回错误代码。
  • int ecx_init_redundant(ecx_contextt *context, ecx_redportt *redport, const char *ifname, char *if2name);
    • 功能:初始化冗余EtherCAT上下文。
    • 参数context是EtherCAT上下文,redport是指向冗余端口结构的指针,ifnameif2name是网络接口的名称。
    • 返回值:如果成功,则返回0;否则返回错误代码。
  • void ecx_close(ecx_contextt *context);
    • 功能:关闭EtherCAT上下文。
    • 参数context是EtherCAT上下文。

5. EEPROM和SII(Slave Information Interface)访问

这些函数用于访问从站的EEPROM和SII信息。

  • ecx_siigetbyte(ecx_contextt *context, uint16 slave, uint16 address);
    • 功能:从SII读取一个字节。
  • ecx_siifind(ecx_contextt *context, uint16 slave, uint16 cat);
    • 功能:在SII中查找条目。
  • ecx_siistring(ecx_contextt *context, char *str, uint16 slave, uint16 Sn);
    • 功能:从SII读取字符串。
  • ecx_siiFMMU(ecx_contextt *context, uint16 slave, ec_eepromFMMUt* FMMU);
    • 功能:读取FMMU(Fast MailBox Unit)信息。
  • ecx_siiSM(ecx_contextt *context, uint16 slave, ec_eepromSMt* SM);
    • 功能:读取同步管理器(SM)信息。
  • ecx_siiSMnext(ecx_contextt *context, uint16 slave, ec_eepromSMt* SM, uint16 n);
    • 功能:读取下一个SM信息。
  • ecx_siiPDO(ecx_contextt *context, uint16 slave, ec_eepromPDOt* PDO, uint8 t);
    • 功能:读取PDO(Process Data Object)信息。

6. 状态检查和过程数据传输

  • ecx_readstate(ecx_contextt *context);
    • 功能:读取EtherCAT状态。
  • ecx_writestate(ecx_contextt *context, uint16 slave);
    • 功能:写入EtherCAT状态。
  • ecx_statecheck(ecx_contextt *context, uint16 slave, uint16 reqstate, int timeout);
    • 功能:检查从站状态。
  • ecx_mbxempty(ecx_contextt *context, uint16 slave, int timeout);
    • 功能:检查邮箱是否为空。
  • ecx_mbxsend(ecx_contextt *context, uint16 slave, ec_mbxbuft *mbx, int timeout);
    • 功能:发送邮箱消息。
  • ecx_mbxreceive(ecx_contextt *context, uint16 slave, ec_mbxbuft *mbx, int timeout);
    • 功能:接收邮箱消息。

7. EEPROM访问

这些函数用于直接访问从站的EEPROM。

  • ecx_readeeprom(ecx_contextt *context, uint16 slave, uint16 eeproma, int timeout);
    • 功能:读取EEPROM。
  • ecx_writeeeprom(ecx_contextt *context, uint16 slave, uint16 eeproma, uint16 data, int timeout);
    • 功能:写入EEPROM。
  • ecx_eeprom2master(ecx_contextt *context, uint16 slave);
    • 功能:将EEPROM数据加载到主站。
  • ecx_eeprom2pdi(ecx_contextt *context, uint16 slave);
    • 功能:将EEPROM数据加载到PDI(Process Data Interface)。

8. 扩展EEPROM访问

这些函数用于访问通过AP(Application Port)或FP(FMMU Port)映射的EEPROM。

  • ecx_readeepromAP(ecx_contextt *context, uint16 aiadr, uint16 eeproma, int timeout);
    • 功能:通过AP读取EEPROM。
  • ecx_writeeepromAP(ecx_contextt *context, uint16 aiadr, uint16 eeproma, uint16 data, int timeout);
    • 功能:通过AP写入EEPROM。
  • ecx_readeepromFP(ecx_contextt *context, uint16 configadr, uint16 eeproma, int timeout);
    • 功能:通过FP读取EEPROM。
  • ecx_writeeepromFP(ecx_contextt *context, uint16 configadr, uint16 eeproma, uint16 data, int timeout);
    • 功能:通过FP写入EEPROM。

9. 过程数据传输

  • ecx_send_overlap_processdata_group(ecx_contextt *context, uint8 group);
    • 功能:发送重叠的过程数据组。
  • ecx_receive_processdata_group(ecx_contextt *context, uint8 group, int timeout);
    • 功能:接收过程数据组。
  • ecx_send_processdata(ecx_contextt *context);
    • 功能:发送过程数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/58352.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Taro React-Native Android apk 打包

一、打包 react native 之打包 Android的apk - 创客未来 - 博客园 react native 打包成Android 的apk安装包有两种方式,第一种方式是利用 Android studio 打包这里就不接介绍了。第二种是利用 react native 自身项目打包 1、生成签名 再一个空文件夹打开CMD&…

DevOps和CI/CD以及在微服务架构中的作用

DevOps 和 CI/CD 是现代软件开发和运维中两个重要的概念,它们之间有紧密的联系,但也有不同的侧重点。以下是对这两个概念的详细介绍和比较。 1. DevOps 定义: DevOps 是一种文化、运动和实践,旨在通过促进开发(Development)和运维(Operations)团队之间的协作,提升软…

深度学习数学基础之偏导数

深度学习数学基础之偏导数 偏导数的详细解释与实例 定义 偏导数是多变量函数对其中一个变量的导数,同时固定其他变量。它是研究函数在多维空间内各个方向上局部变化性质的基本工具。对于函数 ( f ( x 1 , x 2 , … , x n ) f(x_1, x_2, \dots, x_n) f(x1​,x2​…

大数据之Kafka集群的安装部署

Kafka集群的安装部署是一个相对复杂但有序的过程,涉及多个步骤和配置。以下是一个详细的Kafka集群安装部署指南: 一、前期准备 硬件与软件要求 确保集群中的每台服务器都满足Kafka的硬件要求,包括CPU、内存和磁盘空间。安装Java运行时环境&a…

论文阅读(二十三):Squeeze-and-Excitation Networks

文章目录 1.介绍2.原理3.代码4.SE模块的应用 论文:Squeeze-and-Excitation Networks   论文链接:Squeeze-and-Excitation Networks   代码链接:Github 1.介绍 卷积算子使网络能够在每一层的局部感受野中融合空间(spatial&…

视频智能分析平台LiteAIServer摄像机视频分析软件下载检测工业排污

在全球环境保护与可持续发展的大潮中,工业排污的有效监控与管理成为了衡量一个国家或地区绿色发展能力的重要指标。面对这一挑战,视频智能分析平台LiteAIServer以其创新的技术手段,为工业排污监管开辟了新路径,展现了科技在环保领…

《MYSQL实战45讲》将脏页刷进磁盘时导致的性能抖动

脏页 当修改数据时,如果数据在内存中,就会直接在内存中修改,并且将操作记录在redolog中,这时就可以直接返回了。这时这个内存中的数据页与磁盘中的数据是不同的,称为脏页。 flush Mysql将内存中的脏页刷新到磁盘称为…

【git】 git 删除了文件,如何找回

git 删除了文件,如何找回 使用 git revert 并不是恢复误删除文件的最佳方法,因为 git revert 通常用于撤销已经提交的更改(生成一个反向提交)。如果你误删除了文件,还未提交更改,或者已经提交但想恢复删除…

【Unity基础】初识UI Toolkit - 运行时UI

Unity中的UI工具包(UI Toolkit)不但可以用于创建编辑器UI,同样可以来创建运行时UI。 关于Unity中的UI系统以及使用UI工具包创建编辑器UI可以参见: 1. Unity中的UI系统 2. 初识UI Toolkit - 编辑器UI 本文将通过一个简单示例来…

Nginx 迁移到 Caddy:一次完整的反向代理配置迁移实践

文章目录 从零开始:Ubuntu 系统 Nginx 迁移到 Caddy 的完整指南一、背景介绍二、为什么选择 Caddy?三、安装 Caddy1. 使用官方包仓库安装2. 验证安装3. 配置系统服务 四、配置文件位置五、从 Nginx 迁移配置1. 原 Nginx 配置分析2. 转换为 Caddy 配置 六…

Docker Compose一键部署Spring Boot + Vue项目

目录 前提条件 概述 Compose简介 Compose文件 Compose环境 Compose命令 帮助命令 关键命令 Compose部署项目 初始化环境 查看代码文件 sql数据准备 nginx配置文件准备 创建 compose.yaml 一键启动compose多个容器 浏览器访问虚拟机ip:80(可省略默认的80端口) …

动态代理:面向接口编程,屏蔽RPC处理过程

RPC远程调用 使用 RPC 时,一般的做法是先找服务提供方要接口,通过 Maven把接口依赖到项目中。在编写业务逻辑的时候,如果要调用提供方的接口,只需要通过依赖注入的方式把接口注入到项目中,然后在代码里面直接调用接口…

13.音乐管理系统(基于SpringBoot + Vue)

目录 1.系统的受众说明 ​​​​​​​ 2 需求分析 2.1用例图及用例分析 2.1.1 用户用例图及用例分析 2.1.2 管理员用例图及用例分析 2.2 系统结构图和流程图 2.2.1 音乐播放器的系统流程图(图2.2.1-1) 2.2.2 系统功能表(表2.2.2…

【HarmonyOS】鸿蒙应用低功耗蓝牙BLE的使用心得 (一)

【HarmonyOS】鸿蒙应用低功耗蓝牙BLE的使用心得(一) 一、前言 鸿蒙官网文档中蓝牙部分,对于之前没有开发过蓝牙的同学,使用和查阅起来不是很方便。因为只是API的调用说明。并没有蓝牙整个调用流程的讲解,所以看起来会…

Go语言中数据类型与变量的用法

数据类型详解 在Go语言中,数据类型分为以下几类:基本类型、复合类型和特殊类型。理解这些数据类型可以帮助我们更高效地操作数据和设计程序。 1. 基本数据类型 基本数据类型包含数值类型、布尔类型和字符串类型。 1.1 整数类型 Go支持多种整数类型&…

Golang的多版本管理

Golang的多版本管理 一、 为什么需要多版本管理? 现代软件开发中,随着项目日益复杂,往往需要使用不同的Golang版本来适配不同的依赖库或者框架。同时,不同的项目也可能需要不同的Golang版本来编译和执行。因此,多版本管…

解决milvus migration 迁移数据到出现数据丢失问题

在迁移数据的时候发现数据丢失 问题是数据在批量迁移的过程中,这个错误会被忽略掉 分析下来是因为buuferSize 设置的是500条数据,但是迁移工具对一次迁移的数据是是有大小限制的,如果500条数据的总大小大于4194304,就会导致数据…

Nop平台与SpringCloud的功能对比

Nop平台是根据可逆计算原理从零开始设计并实现的新一代的低代码平台,它的目标并不是针对少数固化的场景提供预置的开发脚手架和可视化设计工具, 而是打破描述式编程和传统命令式编程之间人为制造的藩篱,建立两者无缝相容的一种新的编程范式。…

基于SpringBoot云养鸡互动平台的设计与实现

前言 对于当今社会的人们来说,互联网技术是必不可少的,随着经济和技术的不断发展,计算机已经深入到各个领域。云养鸡互动平台将人们的时间需求与计算机技术结合起来,架起一座桥梁,使云养鸡互动更加方便快捷。云养鸡互…

使用Kubernetes管理容器化应用

使用Kubernetes管理容器化应用 Kubernetes简介 安装Kubernetes 安装Minikube 启动Minikube集群 创建一个简单的Web应用 创建项目目录 初始化项目 安装Node.js依赖 创建Docker镜像 编写Dockerfile 构建并推送Docker镜像 创建Kubernetes配置文件 创建Deployment 创建Service …