- 博客(57)
- 收藏
- 关注
原创 Ethercat调试问题总结
本文总结了EtherCAT通信调试中遇到的两类问题及解决方法。一是网卡驱动问题导致通信失败,表现为数据包延迟返回,通过更换瑞昱网卡专用驱动解决;二是关节电机掉电导致的通信异常,包括数据包不完整、无返回等情况,经排查发现是供电电压跌落引起,通过限制电流变化率稳定了电压,最终解决了从站掉线问题。文中通过wireshark抓包和示波器检测等详细分析手段,为类似通信故障提供了有效的诊断思路。
2026-04-12 00:45:18
311
原创 电机学习-基础知识
在学习电机之前先回顾一下一些基本的物理概念,这写概念都是高中时候的一些物理知识。伸出左手,让四指指向电流方向,磁感线穿过手心(由N极到S极),伸直大拇指与其他手指成90°,这时大拇指指向的方向就是所受力的方向,如图1-1所示 图1-1 左手定则示意图安培定则,也叫右手螺旋定则,用右手握住通电螺线管,让四指指向电流的方向,那么大拇指所致的那一端是通电螺线管形成的磁场的N极,如图1-2所示 图1-2 安培定则示意图磁场强度计算公式如下,其
2026-04-07 00:41:27
540
原创 电机学习-有感BLDC开环控制(六步换相)
BLDC的反电动势一般是梯形的反电动势,所以采用方波控制。如图2-1所示,是一个简化的内转子无刷直流电机。我们通过控制ABC三相的导通顺序来产生不同的磁场,使电机的转子转动。
2024-09-22 02:53:32
5075
1
原创 Ethercat学习-SOEM主站源码解析(DC部分)
在SOEM中,与DC相关的文件是ethercatdc.c、ethercatdc.h。在这里面主要用到的是ecx_configdc、ecx_dcsync0、ecx_dcsync01、ecx_porttime、ecx_prevport、ecx_parentport。
2024-08-12 23:26:36
1884
3
原创 自建主站简介
MECM(Mini Ethercat Master),名字随便起的。已经学习了一段时间的Ethercat总线了,目前的想法就是自己简单实现一个Ethercat主站,没有太多的冗余功能,暂时不考虑太多的容错机制,仅实现目前用到的FOE、COE、过程数据通信这三个功能,仅用于学习和加深理解。由于是利用空闲时间写的简单主站,没有经过大量测试,并且还有一些地方需要完善,因此暂时不建议使用在实际项目中。当前主站的测试硬件是GD32F450Z_EVAL开发板,板载的以太网芯片是DP83848VV。
2024-08-12 23:10:23
811
1
原创 自建极简Ethercat主站-第8章 FOE基础功能实现
FOE(File Access over Ethercat),用于节点之间的文件传输。协议类似于TFTP协议,感觉和TFTP协议没有太大的区别,只是一个是UDP传输,一个是Ethercat传输。从机在通过FOE进行固件更新的时候,作为服务端,主机作为客户端,由主机发起固件的上传和下载。FOE与COE一样都是使用邮箱通信,在邮箱头中有一个TYPE字段用来标记当前的数据是COE、FOE或者其他数据。 在使用过程中FOE一般是在Bootstrap状态下与从站通信,当然其他状态下也可以使用。
2024-08-12 23:03:14
1637
原创 自建极简Ethercat主站-第7章 COE基础功能实现
Canopen Over Ethercat(COE),COE是将Canopen作为Ethercat的应用层协议。你可以理解为Ethercat的数据部分需要按照Canopen的格式来进行解析,但是主站在向从站发起读或者写请求后,需要主动去读取从站的回复数据。下面简单对比一下Canopen在CAN总线上和Ethercat总线上的区别。EthercatCAN非周期性通信邮箱数据通信SDO周期性通信过程数据通信TPDO、RPDOCOB-ID无,ethercat有自己的寻址方式有。
2024-08-12 23:00:18
2146
3
原创 自建极简Ethercat主站-第6章 DC同步设置
每当周期到达后,从站会给MCU一个信号,在很完美的情况下,各个MCU是同时拿到信号的,这个时候MCU开始同时去处理某个数据,例如同时控制电机、开关,这就是同步。但是由于每个从站之间晶振的差别,随着时间的推移,每个从站的时钟与参考时钟的偏差会越来越大,所以需要经常对漂移进行补偿。主站可以通过ARMW或FRMW指令将参考时钟写入各个从站d的寄存器0x910:0x917,写入值会和本地的系统时钟副本进行比较,比较值会作为控制时间回路的输入,以此来调节从站的本地时钟。个人的理解是一个时钟模块,用于控制本地时间。
2024-08-12 22:58:14
2775
5
原创 自建极简Ethercat主站-第5章 从站信息EEPROM访问
从站的ESI文件会被转换成bin文件存储在EEPROM中,从站支持的EEPROM容量为1Kbit~4Mbit。EEPROM存储的数据内容如下表所示字节EEPROM起始地址(字地址,地址+1=字节+2)内容0x00~0x0F0x00ESC寄存器配置区0x10~0x1F0x08厂商数据区0x20~0x270x10保留,应为00x28~0x2F0x14引导邮箱配置0x30~0x370x18标准邮箱配置0x38~0x390x1C支持邮箱协议0x3A~0x7B。
2024-08-12 22:56:05
1984
2
原创 USB通信学习-基础概念理解
1、USB是轮询总线,USB主机发起所有数据交换。数据往返于USB设备中的端点。USB主机输出使用OUT端点,USB主机输入使用IN端点。USB主机中没有端点,数据存储于缓冲区中。从主机的FIFO到设备的端点,中间是Pipes。全速USB传输中,固定的1帧时间为1ms,在高速USB中有将一帧分为了8个微帧,每个125us。USB数据层次从小到大分为域(field),包(packet),事务(transaction),传输(transfer),管道(pipes)。域是USB数据的最小单位,其实域就像我们CAN
2023-08-30 21:22:09
2667
原创 HDFS基础
而在运行的时候,随时间的推移会产生非常多的edit log,那么一旦Namenode重新启动,那么会花费非常多的时间来进行合并操作,而SecondaryNamenode就是用来帮助Namenode在其运行的时候替其合并edit log和fsimage 的。当Namenode启动时,它从硬盘中读取edit log和fsImage,将所有edit log中的事务作用在内存中的fsImage上,并将这个新版本的fsImage从内存中保存到本地磁盘上,然后删除旧的edit log。副本的存储策略:机架感知策略。
2023-06-23 23:33:01
1990
原创 Ethercat学习-从站源码解析(ECAT_Main)
SWAPWORD用于带大小端的转换,ESC是小端芯片,如果从机的MCU是大端的话需要进行转换,这里用的小端的MCU,所以SWAPWORD没什么作用。bEcatWaitForAlControlRes是在safeop转换OP的时候标记未TRUE的,AL_ControlRes主要是判断OP条件是否满足,当条件满足后会将从站状态改变为OP,并标记bEcatWaitForAlControlRes为FALSE。在MBX_Main中,获取sMbxReceiveQueue中的数据,包括COE的SDO和FOE。
2023-06-07 23:22:09
4895
15
原创 C6678学习-IPC
IPC: Inter-Processor Communication 处理器间通信,指提供多处理器环境中的处理器之间的通信、相同处理器不同线程间的通信。包括数据传递、数据流和链表。在同一处理器上的其他线程在其他处理器上运行的SYS/BIOS线程GPP处理器上运行的SysLink的线程(例如Linux)QMSS(队列管理器):发送任务和内核之间的数据SRIO IPC:发送任务、内核和芯片之间的数据。
2023-05-03 16:02:53
2264
原创 C6678学习-EDMA
基于C66x的内核处理器主要具有两种DMA传输:IDMA、EDMA3。IDMA:只提供核内部(L1P、L1D、L2、CFG)的数据移动服务。C6678处理器中,IDMA具有两个通道。EDMA3:服务外部内存(比如DDR)、服务芯片内的内存(比如:L2 SRAM)、服务外设,比如:串口每一个EDMA3传输数据都是可以看做一个三维的数据,这个数据的大小由ACNT,BCNT,CCNT来描述。第1维或阵列(A):一个传输的第1维是由ACNT个连续字节。
2023-05-03 15:57:24
4625
1
原创 C6678学习-GPIO
C6678中共有16个GPIO,GPIO0~GPIO15。这些引脚的功能如下 通用输入输出管脚 中断&EDMA事件管脚。
2023-05-03 15:52:14
1611
原创 任务切换理解
举个例子,当你收到了一个串口中断,进入了中断服务函数,你需要尽快的读出串口数据,但是,这个时候来了系统时钟中断,由于它的优先级比串口高,所以需要先去执行它。将当前SP的指针的值赋给FP,这时的FP就是A的栈底了再重新给SP分配一个地址,这样现在的FP和SP就规划出了函数A的栈帧(栈帧A)。FP中保存的就是栈帧M的基地址或者叫栈底,SP保存的就是栈顶的指针。当函数需要进行跳转的时候,可能在其他的函数中会用到通用寄存器,这样在函数返回的时候通用寄存器的值已经不是原先的值了,所以我们要对其进行备份。
2023-04-15 22:21:50
621
原创 Ethercat学习-从站FOE固件更新(TwinCAT主站)
FOE(File Access over Ethercat),用于节点之间的文件传输。协议类似于TFTP协议,感觉和TFTP协议没有太大的区别,只是一个是UDP传输,一个是Ethercat传输。从机在通过FOE进行固件更新的时候,作为服务端,主机作为客户端,有主机发起固件的上传和下载。
2023-04-11 23:20:45
9716
37
原创 C语言回顾(可变参数篇)
它有两个参数,一个参数是va_list类型的,用来存放第一个可选参数的地址。其实在程序的栈中,函数的所有参数都是在内存中连续分布的,所以可以通过强制参数的地址来获取可选参数的地址,然后保存在第一个参数中。该函数有两个参数,第一个参数是当前可变参数的地址,第二个参数是当前可变参数的类型。这个函数调用过后,第一个参数的值会变化,它会指向参数列表中下一个参数。固定参数和可选参数共同构成可变参数函数的参数列表。个可变参数的宏,它使得可以在宏定义中使用可变参数列表,可变参数的个数最少为1,否则编译会出错。......
2022-07-26 11:53:00
1018
1
原创 C语言回顾(修饰词篇)
宏定义#define在C程序编译的第一个步骤预处理阶段被编译,其作用就是将宏名替换为替换列表中得内容。#define标识符(也称为宏名)替换列表(替换列表可以是数,字符串字面量,标点符号,运算符,标识符,关键字,字符常量。注意替换列表是可以为空的)//定义常量#defineN100//重定义数据类型#definepin(int*)#defineu32unsignedint//定义一个循环#defineLOOPfor(;;)100(int*)(......
2022-07-26 11:51:45
1471
原创 C语言回顾(字节对齐篇)
如果嵌套了结构体的情况,嵌套的结构体对齐到自己的对齐数的整数倍处,嵌套结构体的对齐数=嵌套结构体中的最大对齐数与当前结构体默认对齐数的较小值。总的结构体的整体大小就是所有最大对齐数(含嵌套结构体的对齐数)的整数倍。其他成员变量要对齐到对齐数的整数倍的地址处。对齐数=编译器默认的一个对齐数与该成员大小的较小值。结构体总大小为最大对齐数(每个成员变量都有一个对齐数)的整数倍。第一个成员在与结构体变量偏移量为0的地址处。......
2022-07-26 11:50:44
1065
原创 C语言回顾(指针篇)
应该在了解数组名即是数组的首地址的同时,也要知道,数组名仅仅是“相当于”指针,而并非真的是指针,数组名是只是个常量(一个值为数组首元素地址的常量),所以不能进行++或者–运算。ptr++,编译器对其增加了sizeof(int),所以ptr此时的值加了4,因为数组a是char类型,每个元素所占的长度为1,且地址连续,所以ptr此时所指的内容就是a[4]指针函数,简单的来说,就是一个返回指针的函数,其本质是一个函数,而该函数的返回值是一个指针。把指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型。...
2022-07-26 11:48:40
487
原创 对极大似然估计、梯度下降、线性回归、逻辑回归的理解
极大似然我对极大似然估计条件概率(后验概率)和先验概率的的理解:假设一次实验,可能出现两种结果,A或者B总共进行了50次实验,A出现了20次,B出现了30次,那么求A的概率p。问题来了,怎么求一个合理的p值呢L表示A出现的概率为p的情况下,进行50次实验,各种情况的概率。这个很好理解,假如出现20次A,30次B,则x1+x2+...+x50=20,出现为1,不出现为0,所以...
2018-08-02 02:01:25
1802
原创 树莓派WIFI一键连接配置
开启AP模式,将树莓派变为热点这个是在网上搜索的教程通过工具create_ap来进行操作。首先安装create_ap运行 sudo git clone https://github.com/oblique/create_ap.git运行 cd create_ap/运行 sudo make install安装依赖库运行:sudo apt-get install util-li
2017-11-22 18:49:37
3326
原创 树莓派蓝牙调试过程
调试硬件NRF51822树莓派3 软件pyblueZ或者bluepy 蓝牙地址或设备地址是蓝牙芯片制造的全球唯一的48位地址。传输协议:RFCOM+TCPRFCOM和TCP一样,提供大致相同的服务和可靠性保证。它是模仿RS-232设计的,方便制造商将蓝牙功能添加到下游的串口设备中。RFCOMM是射频通信协议,它可以仿真串行电缆接口协议,符合ETSI0710串口仿真协
2017-11-22 18:43:24
28254
9
原创 NRF51822 回顾总结
Nrf51822 回顾:1、工程样本分为4部分,其中:Starup Code中存放的是启动文件,设置NRF51822的启动项和系统时钟。Source codecun存放的是main.c文件。Services中存放的是蓝牙的服务代码。Libraies中放的是nrf51822提供的一些库函数。带有BLE前缀的就是蓝牙相关的函数,带有app前缀的文件是和app应用有关系的
2017-11-22 18:34:46
3533
原创 pytorch安装----CPU版的
Pytorch 安装,pip一直出错,好吧,我选择conda。官方给的简单安装的方式我试了都有问题,然后就采用源码安装。刚开始源码安装用的是ubuntu12,总是出现以下错误:error: command 'gcc' failed with exit status 1关于这个错误,我找了半天,没找到解决的方法。然后我重新安装了ubuntu16来源码安装,没办法,一切为了学习。首先安
2017-11-22 18:16:27
19448
原创 树莓派串口配置
由于树莓派的uart不够使用,所以我们采用的是usb转串口。但是这个就出现了一个问题。当usb设备根据插入的顺序不同时,其设备节点会不同,有时候是ttyUSB0,有时候是ttyUSB1或者其他。根据这个问题,经过百度找到了简单的解决办法。那就是通过udev来静态设置文件节点的名称。关于udev这里不做讨论。我是直接套用的。首先以ttyUSB0 为例:输入udevadm info -a /d
2017-11-20 18:17:54
889
原创 树莓派串口
串口使用例程及说明:http://elinux.org/Serial_port_programminghttp://elinux.org/RPi_Serial_ConnectionPyserial API https://pyserial.readthedocs.io/en/latest/pyserial_api.htmlsudo apt-get install python-se
2017-11-20 18:13:57
726
原创 树莓派QT安装
QT 安装:首先通过apt-get安装Qt Creator工具,同时会自动安装4.8版本的Qt-Lib库。 sudo apt-get install qtcreator通过桌面Menu -> Programming -> QtCreator 启动图形界面。由于Qt Creator不能自动识别树莓派上的工具链,因此需要手动添加。点击Tools -> Options打开配置对话框,在B
2017-11-20 18:06:03
986
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅