当前位置: 首页 > news >正文

自建极简Ethercat主站-第8章 FOE基础功能实现

文章目录

    • 第8章 FOE
      • 8.1 FOE简介
      • 8.2 FOE 数据结构
        • 8.2.1 FOE帧格式
        • 8.2.2 FOE请求
      • 8.3 数据传输流程
        • 8.3.1 读流程
        • 8.3.2 写流程
        • 8.3.3 忙操作
        • 8.3.4 代码示例

第8章 FOE

源码地址

8.1 FOE简介

​ FOE(File Access over Ethercat),用于节点之间的文件传输。协议类似于TFTP协议,感觉和TFTP协议没有太大的区别,只是一个是UDP传输,一个是Ethercat传输。从机在通过FOE进行固件更新的时候,作为服务端,主机作为客户端,由主机发起固件的上传和下载。FOE与COE一样都是使用邮箱通信,在邮箱头中有一个TYPE字段用来标记当前的数据是COE、FOE或者其他数据。

​ 在使用过程中FOE一般是在Bootstrap状态下与从站通信,当然其他状态下也可以使用。不过在Bootstrap状态下只能使用FOE,因为从站源码中有对邮箱数据进行判断,如果在Bootstrap状态下,接收到的邮箱数据不是FOE,则会报错。

8.2 FOE 数据结构

8.2.1 FOE帧格式
目标地址源地址类型Frame HeaderDatagram HeaderMailbox HeaderFOE HeaderDataFCS
6 bytes6 bytes2 bytes (0x88A4)2 bytes10 bytes6 bytes2bytesN bytes4bytes

FOE 的帧格式与COE的帧格式差不多,也是邮箱数据。FOE Header 2个字节,第一个字节是opcode,第二个字节为预留。opcode的取值范围是1~6,表示数据包的不同功能。

8.2.2 FOE请求

FOE总共有6种请求,分别是读请求、写请求、数据、应答、错误、忙。

1、FOE Read请求

帧部分数据区域大小说明
Mailbox HeaderLength2byte邮箱数据的长度,包含2个命令字节。
Address2byte如果主站是客户机,指源站地址,如果从站是客户机,指目的地址。
Channelbit[0:5]保留,默认0
Prioritybit[6:7]数据的优先级,0~3;0最低。
Typebit[0:3]0x00:错误;0x01:保留;0x02:EOE;0x03:COE;0x04:FOE;0x05:SOE;0x06~0x0E:保留;0x0F:供应商特定
Cntbit[4:6]邮箱服务计数器(1~7)。从站与主站的邮箱数据中的Cnt没有关联,两者都是递增的。从站通过主站邮箱数据中的Cnt来判断是否是重复写服务。主站通过从站邮箱服务的Cnt可以检查出是否丢包。
Reservedbit[7]保留,默认0
FOE HeaderOpcode1byte0x01:读请求
Reserved1byte默认0
Read DataPassword4byte0:不适用密码 1~0xFFFFFFFF:密码 从站对password作为一个判断,只有当密钥正确的时候才进行操作
File Namen byte被读文件名字

2、写请求

帧部分数据区域大小说明
Mailbox HeaderLength2byte邮箱数据的长度,包含2个命令字节。
Address2byte如果主站是客户机,指源站地址,如果从站是客户机,指目的地址。
Channelbit[0:5]保留,默认0
Prioritybit[6:7]数据的优先级,0~3;0最低。
Typebit[0:3]0x00:错误;0x01:保留;0x02:EOE;0x03:COE;0x04:FOE;0x05:SOE;0x06~0x0E:保留;0x0F:供应商特定
Cntbit[4:6]邮箱服务计数器(1~7)。从站与主站的邮箱数据中的Cnt没有关联,两者都是递增的。从站通过主站邮箱数据中的Cnt来判断是否是重复写服务。主站通过从站邮箱服务的Cnt可以检查出是否丢包。
Reservedbit[7]保留,默认0
FOE HeaderOpcode1byte0x02:写请求
Reserved1byte默认0
Write DataPassword4byte0:不适用密码 1~0xFFFFFFFF:密码 从站对password作为一个判断,只有当密钥正确的时候才进行操作
File Namen byte被读文件名字

3、数据

帧部分</

相关文章:

自建极简Ethercat主站-第8章 FOE基础功能实现

文章目录 第8章 FOE8.1 FOE简介8.2 FOE 数据结构8.2.1 FOE帧格式8.2.2 FOE请求8.3 数据传输流程8.3.1 读流程8.3.2 写流程8.3.3 忙操作8.3.4 代码示例第8章 FOE 源码地址 8.1 FOE简介 ​ FOE(File Access over Ethercat),用于节点之间的文件传输。协议类似于TFTP协议,感觉…...

SQL Zoo 8.Using Null

以下数据均来自SQL Zoo 1.List the teachers who have NULL for their department.&#xff08;列出所属部门为NULL的教师&#xff09; select name from teacher where dept is null 2.Note the INNER JOIN misses the teachers with no department and the departments wit…...

LeetCode274. H 指数

题目链接&#xff1a; 274. H 指数 - 力扣&#xff08;LeetCode&#xff09; 思路分析&#xff1a;这个题目可以使用哈希表来以空间换时间&#xff0c;我们设置一个数组v来统计每一个对应的影响因子的文章出现的数量&#xff0c;遍历一遍后&#xff0c;v[i]表示影响因子为i的…...

概述:Dubbo、Nacos、 Zookeeper 等分布式服务协调与治理等技术

目录 1. Dubbo 2. Nacos 3. Zookeeper Dubbo、Nacos、Zookeeper 是分布式服务协调与治理领域中的关键技术&#xff0c;它们在微服务架构和分布式系统中扮演着重要角色。以下是对这些技术的详细介绍&#xff1a; 1. Dubbo 概述&#xff1a; Dubbo 是一个高性能、轻量级的开…...

【LINUX】小工具降耦合,全内核函数插入宏摸索测试中。。

这阵子把这个小工具对外的耦合度降了下&#xff0c; include/linux/printk_self.h r77683962/linux-6.9.0 - Gitee.comhttps://gitee.com/r77683962/linux-6.9.0/blob/master/include/linux/printk_self.h 这个用于初始化打印日志的级别和打印次数&#xff1a; void Param…...

24/8/12算法笔记 复习_线性回归

import numpy as np#导入包 X np.array([[1,1],[2,1]])#构造矩阵 y np.array([14,10])np.linalg.solve(X,y) #linalg是线性代数&#xff0c;用于求解线性方程AX b,solve计算线性代数回归问题X.T#转置 a X.T.dot(X)#矩阵乘法B np.linalg.inv(a)#求逆矩阵from sklearn.linea…...

Linux系统驱动(十四)输入子系统

文章目录 一、输入子系统&#xff08;一&#xff09;输入子系统框架结构&#xff08;二&#xff09;输入子系统的API 二、实现两个按键的驱动&#xff08;一&#xff09;实现思路&#xff08;二&#xff09;代码实现 一、输入子系统 在linux系统中使用输入子系统驱动上报鼠标&…...

力扣(2024.08.12)

1. 98&#xff1a;验证二叉搜索树 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class Solution:def isValidBST(self, r…...

最新版的AutoGPT,我搭建好了

最近AutoGPT不是更新了嘛 安装 我按照官方的教程 在本地搭建好了 改动 可见的改动&#xff0c;主要是把原来的纯命令行改成前后端的形式 看下前端界面 界面比较简单&#xff0c;主要分3个大块 监控 第一个是监控 主要是看你在 build 里构建的Agents的运行情况 build 第一个是Ag…...

[SWPUCTF 2021 新生赛]PseudoProtocols(构造伪协议)

打开题目所给的环境我们可以看到这样一句话&#xff1a; 这里我先尝试访问/hint.php &#xff0c;但是发现什么都没有发生&#xff0c; F12查看源代码也并没有发现什么&#xff0c;到这里来看的话似乎没有思路了&#xff0c;但是这个题的题目已经给了我们很明显的提示&#xff…...

基于STM32开发的智能语音助手系统

目录 引言环境准备工作 硬件准备软件安装与配置系统设计 系统架构硬件连接代码实现 初始化代码控制代码应用场景 智能家居控制个人语音助理常见问题及解决方案 常见问题解决方案结论 1. 引言 随着人工智能技术的发展&#xff0c;智能语音助手已经逐渐进入了人们的日常生活。…...

基于python的图像去雾算法研究系统设计与实现

博主介绍&#xff1a; 大家好&#xff0c;本人精通Java、Python、C#、C、C编程语言&#xff0c;同时也熟练掌握微信小程序、Php和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验&#xff0c;能够为学生提供各类…...

自定义 View 可以播放一段视频

请实现一个自定义 View 的核心代码&#xff0c;核心要求可以响应如下事件&#xff1a; // - 要求自定义 View 可以播放一段视频 / - 在 view 左侧区域上下滑动&#xff0c;可以提高减少音量 / / - 在 view 右侧区域上下滑动可以提高减少屏幕亮度 // - 在 view 左右滑动可以…...

LVS负载均衡集群部署之—NAT模式的介绍及搭建步骤

一、环境准备 1.准备三台rhel9服务器 服务器名称 主机名 ip地址备注LVS调度服务器lvs.timinglee.org eth0:172.25.254.100&#xff08;外网&#xff09; eth1:192.168.0.100(内网) 关闭selinux和防火墙webserver2网站服务器webserver1.timinglee.orgeth0&#xff1a;192.168.…...

【算法】浅析哈希算法【附代码示例】

哈希算法&#xff1a;数据存储与检索的基石 1. 引言 在计算机科学中&#xff0c;哈希算法是一种用于将数据&#xff08;如文件、网络地址或数据库记录&#xff09;转换为固定长度的哈希值的过程。哈希值通常是一个较短的数字或字符串&#xff0c;用于快速检索原始数据或验证数…...

2024.8.12

2024.8.12 【梦最让我费解的地方在于&#xff0c;明明你看不清梦里人们的脸&#xff0c;却清晰地知道他们是谁。】 Monday 七月初九 序理论 最小链覆盖&最长反链长度 我们设定一个二元关系符R和一个集合A 我们设定<A,R>这样一个类群&#xff0c;那么对于任意 a i…...

使用Python解析pdf、docx等格式文件。

针对不同类型的文件&#xff0c;需要采取特定的访问与解析策略来有效获取其中蕴含的知识。下面我们将介绍对于不同数据源数据的获取方式。 1 解析Docx文档 1.1 获取Docx文档中文本 from docx import Document # pip install python-docx # python-docx 0.8.11 filename xx…...

Linux网络通信基础API

这篇文章只有Linux网络通信基础API大参数信息&#xff0c;和返回值&#xff0c;这篇文章并没有这些基础API的参数类型介绍。accept的第二个参数可以查看客户端信息。 创建socket #include <sys/types.h> /* See NOTES */#include <sys/socket.h>int sock…...

Python爬虫:下载4K壁纸

&#x1f381;&#x1f381;创作不易&#xff0c;关注作者不迷路&#x1f380;&#x1f380; 目录 &#x1f338;完整代码 &#x1f338;分析 &#x1f381;基本思路 &#x1f381;需要的库 &#x1f381;提取图片的链接和标题 &#x1f453;寻找Cookie和User-Agent &…...

2024年【北京市安全员-B证】新版试题及北京市安全员-B证免费试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年【北京市安全员-B证】新版试题及北京市安全员-B证免费试题&#xff0c;包含北京市安全员-B证新版试题答案和解析及北京市安全员-B证免费试题练习。安全生产模拟考试一点通结合国家北京市安全员-B证考试最新大纲…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

大数据学习(132)-HIve数据分析

​​​​&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...