自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 EtherCAT从站开发-修改0x1600 0x1A00为可变映射的方法

本文介绍了为支持0x1600和0x1A00对象最大10个可变映射所需的代码适配工作。主要包括:1)修改TOBJ1600/1A00结构体;2)扩充asEntryDesc0x1600/1A00为10个可读写成员;3)更新DefCiA402AxisObjDic和DefCiA402ObjectValues;4)重构APPL_Input/OutputMapping处理逻辑;5)在XML中定义DT1600/DT1A00数据类型(336位大小,包含10个32位映射项);6)配置对象字典默认值;7)通过上位机验证IOMAP

2026-01-21 17:35:42 61

原创 在SSC(EtherCAT从站协议栈代码)中添加PDO的方法

本文详细介绍了在EtherCAT从站协议栈(SSC)中添加SDO对象0x604D和0x60FD的方法。主要内容包括:1)修改XML文件,将0x604D添加到0x1601作为RXPDO,0x60FD添加到0x1A01作为TXPDO;2)在SSC代码中进行多项修改,包括扩充对象字典结构体、添加对象描述符、初始化对象变量等;3)通过上位机验证PDO配置,确认通讯正常。文章提供了完整的代码修改示例,详细说明了从XML配置到代码实现的完整流程,为EtherCAT从站开发中的PDO映射提供了实用参考。

2026-01-01 19:10:34 750

原创 通过SOEM自带的firm_update代码给EtherCAT从机进行文件传输的方法

本文介绍了通过FOE协议实现EtherCAT从机OTA固件升级的方法。关键点在于确保固件文件名和PASSWARD字段与SSC代码中的配置完全一致。文中展示了使用firm_update工具成功升级的示例,其中站号为2的从站接收并验证了test_ota.bin文件(262482字节),最终返回成功结果0。整个升级过程包括初始化、BOOT状态请求和文件传输等步骤,验证了该方案的可行性。

2026-01-01 18:30:12 200 1

原创 在SSC(EtherCAT从站协议栈代码)中添加SDO的方法

本文详细介绍了EtherCAT从站协议栈中SDO配置的扩展方法,以0x604D对象为例。具体步骤包括:1)修改XML文件添加SDO对象;2)在SSC代码中扩充SDO内容,涉及cia402appl.h和cia402appl.c文件的修改;3)通过上位机验证COE功能正常读写。最终成功实现了0x604D=2026的写入操作。文章还提供了作者在B站、知乎和咸鱼的相关账号信息。

2026-01-01 18:16:50 299

原创 通过EtherCAT报文中的LRW字段分析位置指令与位置反馈的方案

作为这篇博客的延申,在报文有时间戳的情况下,通过提取出来LRW字段中的Target Position 与 Actual Positon 数据,画成曲线,可以直观得分析出指令跟随情况。

2025-12-23 20:34:05 490

原创 使用抓包盒进行EtherCAT报文时间抖动的分析方法

本文介绍了一种基于Wireshark和Python的EtherCAT主站实时性分析方法。通过Wireshark抓取网络报文并提取timestamp字段,使用批处理脚本将数据转换为CSV格式,再利用Python脚本进行数据处理和分析。该方法能够自动计算时间差值并绘制抖动曲线图,直观显示网络通信的时间抖动情况(示例显示抖动范围为±15μs)。整个流程只需运行autorun.bat即可完成数据提取、处理和可视化,输出包含时间差值的CSV文件和抖动曲线图,为评估EtherCAT主站实时性能提供了便捷工具。

2025-12-20 11:23:33 417

原创 Ecat从站的EEPROM烧录操作指南

本文介绍了使用TwinCAT3进行EtherCAT从站EEPROM数据烧录的操作流程。主要内容包括:新建TwinCAT项目、安装网卡驱动、扫描网络中的从站设备、加载从站XML配置文件、更新EEPROM参数等步骤。重点说明了在更新EEPROM前需将XML文件放置在指定路径,更新完成后需删除原有设备并重新扫描以识别新的配置信息。通过该流程可实现主站对从站设备的正确识别与控制,最终在界面中可观察到OP状态指示更新成功。该操作解决了因SSC代码或XML更新导致的从站识别问题。

2025-12-15 11:24:52 662 2

原创 通过FOE给EtherCAT从机OTA的SSC代码开发记录

本文介绍了通过FOE协议实现从机OTA升级的方法。首先使用SSC工具生成支持Boot和FOE功能的协议栈代码,并通过PLC主站进行验证。在从机端实现了FLASH读写操作,包括BL_Start、BL_StartDownload、BL_Data和BL_Stop等关键函数,用于处理FOE传输数据和状态切换。测试结果表明,写入FLASH的数据与原始bin文件完全一致,成功实现了从机接收主站FOE数据并写入FLASH的功能。整个过程需要注意从机需先切换到Boot模式才能进行升级操作。

2025-12-07 22:04:39 461

原创 SOEM与ESC无法通讯问题解决方案

摘要:通过SOEM工具检测发现EtherCAT从站设备存在异常,表现为无法进入安全运行状态(SafeOp)且SM配置数据异常(全FF)。检查EEPROM数据发现参数配置错误,对比XML文件确认问题所在。使用TwinCAT工具更新EEPROM参数后重新检测,从站信息显示正常:设备名称(ECAT_CIA402)、输入输出位宽(96bits)、状态(4)、SM配置等关键参数均已恢复正常,问题得到解决。该案例表明EEPROM配置错误会导致EtherCAT从站通信异常,通过参数校准可有效修复。

2025-12-07 21:31:06 293

原创 XML导入PLC报错“不是有效的 BinHex 文本序列”问题解决方案

报错解决方案 问题描述:PLC系统在处理负数时出现识别错误。 解决方法:通过修改XML配置文件第2399行的数据格式,将默认值从负数改为正数。具体修改为: 3 该修改成功解决了PLC对负数的识别问题。

2025-12-07 21:18:48 112

原创 Ecat从站SSC代码与GD32H75E接口的适配注意事项

本文分析了SSCTOOL生成的Ecat代码与用户自定义代码的交互接口,重点介绍了四个关键中断的实现:1ms定时器中断处理Ecat状态、Ecat模块中断、SYNC0同步信号中断和SYNC1同步信号中断。文章以GD32H75E为例,说明其Ecat模块采用核封方式挂在OPSI1上,数据读写需通过OSPI1操作。文中提到的AN_ET9300_V1i10.pdf官方文档详细讲解了Ecat原理和代码架构,建议参考学习。这些接口实现有助于代码移植时的适配工作。

2025-12-07 21:15:02 318

原创 Keil中采用J-link调试器识别不到芯片问题

3.3在Debug->Settings中弹出芯片型号选择,一般选择内核即可(如STM32F4xx,则选择Cortex-M4)。2、keil中设置的芯片型号是不是跟实际芯片一致,这在魔术棒->devices中可设置。在Keil中使用J-link调试器连接芯片,Keil能识别到调试器,但无法加载芯片。1、芯片的PACK包版本,这在Keil官网或者芯片官网上能找到,更新即可。3.2然后在Keil工程目录中删除以下两个文件。3.4然后即可识别到芯片。

2025-11-09 11:32:41 837

原创 汇川AC802-PLC入门使用指南

在这个网站下载如下安装包,并安装到电脑中。

2025-10-25 17:24:42 815

原创 Eip开源主站EIPScanner在Linux上的调试记录(三 Tag读写功能开发)

本文介绍了基于EIPScanner实现PLC标签(Tag)读写的开发方案。首先通过EipScannerDemo验证了与PLC通信的可行性,确认了报文解析和生产者连接机制。然后设计实现了TagMess类,支持uint8、float、bool三种数据类型的读写操作,采用重载方法处理不同返回类型。开发过程中解决了字符串转报文的奇数字符补零问题,并通过日志和WireShark验证了功能正确性。该方案适用于单次查询和修改PLC数据的场景,为工业通信提供了可靠的Ethernet/IP实现方案。

2025-09-10 09:46:09 682

原创 Eip开源主站EIPScanner在Linux上的调试记录(二 多生产者连接)

本文探讨了在多IO连接场景下的开发调试方法。通过EipScannerDemo与PLC建立两个生产者连接进行验证,重点分析了ConnectionPath、ConnecteSerialNumber等参数配置差异。实验结果表明,通过修改_connectionMap管理机制,可以实现单一SDK中管理多个IO连接。代码示例展示了如何通过调整ConnectionManager实现双连接配置,并解决了多线程下的网络资源抢占问题。最终通过wireshark报文验证了两个连接能正常维持运行,为复杂场景下的多IO连接开发提供了

2025-09-10 09:15:21 515

原创 EtherNET/IP开源从站OpENer多生产者连接功能开发记录

本文介绍了在工程应用中实现高低频控制需求的方法。通过修改opener_user_conf.h配置文件,支持两个生产者连接并设置2ms的最小同步周期。在ApplicationInitialization()中注册了两路连接,分别配置了高低优先级的输入输出参数。文章还提供了常见调试问题的解决方法,如连接实例错误、参数不一致导致的连接失败,以及任务阻塞引起的不稳定问题。这些配置和调试经验对实现可靠的多IO连接控制具有实用价值。

2025-09-04 17:37:18 726

原创 EtherNET/IP开源从站OpENer单次通讯功能开发记录

本文介绍了基于EtherNet/IP协议实现上下位机单次通讯的开发过程。通过分析协议中的Class、Instance和Attribute关系,设计了一种通过读写单个属性实现通讯的方案。具体实施包括:在Assembly Class中注册Get/Set服务、创建自定义Instance并添加Attribute,并解决了内存分配和参数限制等调试问题。验证表明该方案能成功实现数据的读写操作,为上下位机通讯提供了一种灵活高效的实现方式。

2025-09-04 17:25:12 1098

原创 Ecat主站SOEM初始化从站过程中从站报0x134=0x1E(无效的输入配置)问题解决记录

本文分析了在MCU端移植SOEM时扩充雷赛4轴Ecat驱动器遇到的初始化错误问题。通过对比PLC正常初始化的报文,发现MCU缺少对SM2/SM3寄存器的配置。深入排查发现是由于内存优化导致EC_MAXEEPBUF参数设置过小(3),使得EEPROM缓存不足,无法正确读取从站SM配置信息。将该参数恢复默认值5后,系统成功完成SM配置,驱动器顺利进入OP状态。问题根源在于内存优化时未充分考虑EEPROM缓存需求,导致关键配置信息读取失败。

2025-08-24 19:36:38 611

原创 SOEM的周期数据处理耗时异常问题

在ecat主站初始化通过后,会出现rtos任务无法执行问题,推测为ecat任务耗时过长导致。咸鱼ID:tb764914262。b站,知乎:沧海一条狗。

2025-08-12 17:15:36 281

原创 MCU移植Canopen开源协议Canfestival后不接外设出现任务阻塞问题

解决方案,在不接外设时,由初始化的cansend触发can-err中断后,在中断内将canopen的状态切换未stoped,并且关闭can外设。在移植完Canfestival后,不接can外设,在初始化的pre-op阶段调用了cansend函数,在cansend中有while()。由于没有接can外设,帧发不出去,于是在can的err中断中出不来,导致任务被阻塞在这个循环中。

2025-08-12 17:02:59 230

原创 Eip开源主站EIPScanner在Linux上的调试记录(一 初步调通)

本文记录了EIP(Ethernet/IP)协议开发的探索过程。作者发现官方文档仅限注册厂商使用,转而参考国外开源社区资料。经过调研,排除了OpENer(仅支持从机方案)后,最终选用EIPScanner开源方案并成功移植。开发前通过在Windows平台使用EtherNET/IPScannerDemo软件与PLC进行通讯验证,配合WireShark抓包工具完成了协议调试。文章分享了相关参考链接,包括开源项目地址、配置教程和演示视频,为EIP协议开发提供了实践路径。

2025-08-04 19:47:28 772

原创 关于AT32在Emac初始化卡在while出不来的问题记录

摘要:AT32_Work_Bench生成的以太网初始化代码存在两个典型问题:1)缺少PHY复位和EMAC总线复位操作(reset_phy()和emac_reset()),添加后即可解决;2)PHY晶振未正常工作导致MCU收不到时钟信号,使程序卡在初始化循环。官方文档指出这是常见硬件配置问题,需检查PHY晶振电路。该案例揭示了自动生成代码可能存在关键步骤缺失,需结合官方例程和硬件原理进行验证调试。(149字)

2025-08-04 19:19:22 284

原创 Ecat主站-SOEM初始化时卡在safeop到不了op状态的问题调试记录

摘要:本文分析了EtherCAT主站在初始化多个伺服从站时,部分从站卡在SafeOp状态无法进入Op状态的问题。通过对比正常控制器报文发现PDO周期收发和0x120/0x130寄存器操作是关键。排查发现1ms同步周期被中断打断导致时序不稳,通过优化定时器精度、调整同步周期为2ms暂时解决问题,最终方案在初始化阶段采用500us周期收发确保进入Op状态后恢复1ms周期。该方法通过优化通讯时序解决了从站初始化问题,但未根除关节Ec状态机异常导致的故障。

2025-08-04 18:59:23 2196 1

原创 Eip开源从站Opener在MCU上的移植调试记录(四 调优过程)

摘要:文章详细记录了工业通信协议栈的实时性优化过程。通过调整FreeRTOS任务优先级(将底层网络任务设为最高优先级),50ms通讯周期从105ms降至96ms。使用Wireshark抓包分析发现实际抖动仅±30us,证明系统满足要求。进一步将周期压缩至20ms/5ms/2ms时,通过优化EDS配置和调整Opener线程处理机制,最终实现±40us的抖动。同时针对内存占用问题(从144KB优化至71KB),通过分析MAP文件减少缓冲区分配,并调整系统堆空间配置。实验数据表明,优化后系统实时性和资源利用率显著

2025-07-15 09:11:21 1813

原创 Eip开源从站Opener在MCU上的移植调试记录(三 调试过程)

调试PLC与RT-THREAD通信问题的解决方案 调试过程中发现三个关键问题及解决方法: ForwardOpen失败:通过定义OPENER_CONSUMED_DATA_HAS_RUN_IDLE_HEADER解决字节数不匹配问题 UDP创建失败:通过调整lwip内存配置(增加MEM_SIZE、MEMP_NUM_UDP_PCB等参数)解决内存不足问题 Socket选项设置失败:启用lwip的SO_REUSEADDR功能 调试方法: 开启Opener日志功能(修改trace.h) 对比正常与异常设备的报文差异 逐

2025-07-12 18:30:29 724

原创 Eip开源从站Opener在MCU上的移植调试记录(二 移植过程)

摘要:本文记录了RT-THREAD系统移植opener源码的过程。主要解决了C99语法支持、stdio库重定义冲突、微库未定义函数以及lwip库枚举冲突等问题。关键步骤包括:启用C99模式、修改串口重定向代码、实现assert/exit/time等函数、处理库冲突等。移植过程中需重点关注opt.h、lwipports.h等配置文件。文章还提供了调试经验分享和相关资源链接。

2025-07-12 18:15:40 589

原创 Eip开源从站Opener在MCU上的移植调试记录(一 准备工作)

摘要:作者分享了将EtherNet/IP协议栈移植到STM32F407平台的经验。通过对比瑞萨官方基于FreeRTOS的方案和RT-Thread的EtherKit开发板方案,最终选择移植RT-Thread版本,因其对opener源码改动较少。移植前提需确保MCU具备网络功能,包括以太网外设初始化、LwIP协议栈正常运行及TCP/UDP通信能力。该过程涉及FreeRTOS与RT-Thread系统差异的适配工作,后续将深入分享具体移植细节。(149字)

2025-07-12 18:07:38 879

原创 DM9000在STM32F407上的网络驱动移植及调试经验分享

本文介绍了基于STM32 MCU通过DM9000扩展双网口的实现方案。首先阐述了项目背景,由于MCU原生仅支持单MAC,需通过外接网络芯片实现双网口功能。接着详细说明了移植过程:1) 配置FSMC总线参数,注意关闭写保护并优化时序;2) DM9000初始化流程,包括硬件复位、PHY配置等关键步骤;3) 数据读写验证方法。文章还总结了驱动开发经验,包括完整的驱动流程和常见问题排查方法,如PHY连接异常可能由网线或初始化时序导致,数据错误可能源于FSMC参数不当或信号干扰等。该方案为MCU扩展网络接口提供了可行

2025-07-07 10:25:45 2548

原创 记:小米温湿度传感器2失效分析

摘要:更换温湿度传感器纽扣电池后,墨水屏仅刷新一次即熄灭。检测发现新电池电压从3.1V降至2.9V,正负极间电阻异常降低至324Ω(正常应为兆欧级)。通过逐步排查,排除了屏幕排线和传感器问题,最终发现是主控附近的电容导致短路。拆除后电阻恢复至1.6MΩ,确认主控等核心元件正常,但具体故障元件未明确锁定。

2025-07-06 09:42:01 1578

原创 记一个IAR因include path 过深导致的编译失败问题

摘要:作者在使用瑞萨RZ/N2L芯片时遇到编译问题,官方示例代码在IAR 9.60.3环境下报错。尝试重新安装工具和修改include路径未果,后发现代码路径嵌套过深(如D:\xxx...\snmp_private_mib)导致IAR无法识别。将代码移至根目录后成功编译。作者作为IAR新手,认为路径管理是重要经验。更多技术分享可关注B站"机器人发烧友之家"或咸鱼ID:tb764914262。(148字)

2025-07-04 21:43:42 323

原创 使用EtherNET/IP Scanner Demo软件与PLC进行通讯的配置说明

本文介绍了在Win11系统下使用EtherNET/IP Scanner Demo软件与汇川AC802运动控制器进行EtherNet/IP通讯的配置方法。主要内容包括:硬件连接(PLC网口A与PC直连)、PLC端参数配置(IP地址192.168.1.88,1字节数据收发,2ms周期)、Class1连接设置(点对点模式,路径匹配)以及Class3标签通讯配置。关键注意事项包括确保IP同网段、参数严格匹配等。文章还提供了相关软件下载地址和扩展学习资源。通过该配置可实现PLC与PC间的实时数据交互,适合工业自动化通

2025-07-01 11:59:23 1250

原创 Ecat主站-SOEM在MCU上的移植指南

本文介绍了在Linux端使用SoemSOEM库进行EtherCAT主站协议栈移植的关键要点。主要内容包括:1) SOEM库的三大组成部分(Ecat协议栈、OSAL系统层、OSH网络层)及核心函数;2) MCU移植所需的三种资源(系统时钟、网络接口、周期性任务)的具体实现方案,包括定时器配置、MAC外设封装和中断处理;3) 移植过程中的常见问题排查方法,如时钟验证、PHY/MAC协同工作、周期任务同步、从站连接异常等。文章强调移植应遵循"先基础后协议"的思路,确保MCU底层正常运行后再处理

2025-07-01 10:32:55 2208

原创 STM32CUBEMX应对不同版本库的解决方案

本文针对STM32 HAL库版本兼容性问题提出解决方案。原因分析指出新版本HAL库(1.14.1)存在配置项减少、旧代码维护困难等问题。解决方案包括:1)下载指定旧版CubeMX(6.6.1);2)通过Help-Manage界面安装对应HAL库版本(V1.7.12);3)生成代码时取消默认选项,手动选择版本。注意事项提醒新旧版本混用可能导致编译错误,需手动调整。该方案有效解决了版本兼容性问题,提高了旧代码的可维护性。

2025-07-01 10:03:43 1490

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除