news 2026/4/18 10:40:52

三菱FX3U与三菱PLSR源码:RUN中下载程序及脉冲输出与定位指令代码参考

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
三菱FX3U与三菱PLSR源码:RUN中下载程序及脉冲输出与定位指令代码参考

三菱FX3U源码,三菱PLSR源码 总体功能和指令可能支持在RUN中下载程序,支持注释的写入和读取,有脉冲输出与定位指令(包括PLSY /PWM/PLSR/PLSV/DRVI /DRVA 等指令)的代码, 但实际上下载进stm32都不支持,仅支持些简单功能。 应该是部分代码被修改了。 仅供参考。 支持波特率9600/19200/38400/57600/115200自适应

最近在折腾三菱FX3U源码移植到STM32的项目,发现这个移植版本就像被"阉割"过的瑞士军刀——看着功能列表挺唬人,实操起来可能连瓶盖都撬不开。咱们先来看段PLSR指令的残存代码:

void PLSR_Handler(uint32_t frequency, uint32_t pulseCount) { // 理论上的梯形加减速计算 static uint32_t accel_step = 500; // 加速阶梯 TIM2->ARR = SystemCoreClock / (2 * frequency); // 定时器重载值 // 以下代码段在移植时被注释 // __HAL_TIM_ENABLE(&htim2); // while(pulseCount--){...} }

这段代码暴露了两个问题:首先定时器配置明显没考虑加减速曲线,其次关键脉冲输出部分直接被注释。移植者可能直接搬了算法框架,却把硬件操作层给"截肢"了。

说到波特率自适应倒是有点意思,实测发现这部分居然能用。看看这个暴力检测法:

uint32_t AutoBaudRate() { uint32_t gap = 0; while(HAL_GPIO_ReadPin(UART_RX_GPIO_Port, UART_RX_Pin) == GPIO_PIN_SET); // 等待起始位 uint32_t t0 = HAL_GetTick(); while(HAL_GPIO_ReadPin(UART_RX_GPIO_Port, UART_RX_Pin) == GPIO_PIN_RESET); // 测量低电平时间 gap = HAL_GetTick() - t0; // 根据时间反推波特率(单位:ms) if(gap < 2) return 115200; else if(gap < 3) return 57600; else return 9600; // 其他情况默认最低波特率 }

这种时间差检测法虽然简单粗暴,但实测在干扰小的环境下确实能跑起来。不过遇到电磁环境复杂的情况,误判率估计能上天。

三菱FX3U源码,三菱PLSR源码 总体功能和指令可能支持在RUN中下载程序,支持注释的写入和读取,有脉冲输出与定位指令(包括PLSY /PWM/PLSR/PLSV/DRVI /DRVA 等指令)的代码, 但实际上下载进stm32都不支持,仅支持些简单功能。 应该是部分代码被修改了。 仅供参考。 支持波特率9600/19200/38400/57600/115200自适应

移植版里最让人哭笑不得的是注释读写功能。代码里确实留着注释结构体:

typedef struct { uint32_t address; char comment[32]; } PLC_Comment;

但在文件系统操作部分却只有空架子:

void SaveCommentToFlash() { // TODO: 实现flash写入 // 当前仅打印调试信息 printf("Pretend to save comments...\n"); }

这感觉就像在餐馆点了佛跳墙,结果端上来个写着"佛跳墙"的空碗。硬件资源受限可以理解,但至少把printf换成个LED闪烁提示啊!

折腾几天下来,建议想玩这个移植版的朋友先拿GPIO闪烁练手。比如这个残缺版PLSY指令:

void PLSY(uint32_t speed, uint32_t pulses) { HAL_GPIO_WritePin(PULSE_GPIO_Port, PULSE_Pin, GPIO_PIN_SET); for(int i=0; i<pulses; i++){ HAL_Delay(1000/speed); // 简易延时实现 HAL_GPIO_TogglePin(PULSE_GPIO_Port, PULSE_Pin); } }

虽然频率精度堪比机械怀表,但至少能看见LED在闪。想玩真·脉冲输出?还是老老实实调定时器的PWM模式吧。这个移植项目最适合当个"反面教材",看看别人是怎么在资源有限的情况下做功能裁剪的——当然,也可能是开发者留了一手,关键代码压根没放出来。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 7:54:26

51单片机四层电梯控制器:打造简易电梯模拟系统

51单片机四层电梯控制器 基于51单片机的四层电梯控制系统 包括源代码和proteus仿真 系统硬件由51单片机最小系统、蜂鸣器电路、指示灯电路、内部按键电路、外部按键电路、步进电机、ULN2003A反相器驱动、内部显示电路、外部显示电路组成。 功能&#xff1a; 1:外部四层楼各楼层…

作者头像 李华
网站建设 2026/4/18 7:04:54

process.communicate()函数注入命令风险分析

process.communicate() 函数本身没有命令注入风险&#xff0c;但创建进程的方式&#xff08;subprocess.Popen()&#xff09;存在注入风险。 让我详细分析&#xff1a;核心观点communicate() 只是与已启动的子进程进行数据交互&#xff0c;风险在于创建子进程的命令构造方式&am…

作者头像 李华
网站建设 2026/4/18 9:06:46

α-Conotoxin SIA ;Tyr-Cys-Cys-His-Pro-Ala-Cys-Gly-Lys-Asn-Phe-Asp-Cys-NH2

一、基础性质英文名称&#xff1a;α-Conotoxin SIA&#xff1b;Conotoxin SIA (Conus species)中文名称&#xff1a;α- 芋螺毒素 SIA&#xff1b;SIA 型 α- 芋螺毒素&#xff1b;烟碱型乙酰胆碱受体亚型选择性拮抗肽多肽序列&#xff1a;H-Tyr-Cys-Cys-His-Pro-Ala-Cys-Gly-…

作者头像 李华
网站建设 2026/4/18 8:00:43

什么是沙箱技术

文章目录沙箱技术的原理沙箱技术的应用沙箱技术的价值云沙箱与硬件沙箱的区别沙箱技术在华为FireHunter6000系列沙箱中的实践在计算机领域中&#xff0c;沙箱技术&#xff08;Sandboxing&#xff09;是一种用于隔离正在运行程序的安全机制&#xff0c;其目的是限制不可信进程或…

作者头像 李华
网站建设 2026/4/17 12:22:22

电脑录屏也能做到极致 今天的是电脑录屏软件比obs好用

链接&#xff1a;https://pan.quark.cn/s/ffdfa6ab38fb【应用名称】Bandicam_Portable【应用版本】4.0.0.0【应用大小】25.0MB【支持平台】Windows【软件介绍】 占用内存小&#xff0c;效率高&#xff0c;录制清晰&#xff0c;自由程度高。

作者头像 李华