news 2026/7/1 10:41:27

三菱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/6/28 23:54:33

电网管理中的分层决策 matlab源代码,代码按照高水平文章复现,保证正确 由于可再生能源发电...

电网管理中的分层决策 matlab源代码&#xff0c;代码按照高水平文章复现&#xff0c;保证正确 由于可再生能源发电、可变需求和计划外停电等因素的影响&#xff0c;电网管理是一个多时间尺度决策和随机行为的难题。 在面对不确定性的情况下解决这一问题需要一种具有易于处理的算…

作者头像 李华
网站建设 2026/6/26 12:31:25

Python 中subprocess.getstatusoutput(cmd) 函数注入命令风险分析

风险根本原因subprocess.getstatusoutput() 函数内部实现使用了 shellTrue&#xff0c;这意味着命令在 shell 中执行&#xff1a;# 查看源码&#xff08;Python 3.10&#xff09; def getstatusoutput(cmd):"""Return (status, output) of executing cmd in a s…

作者头像 李华
网站建设 2026/6/26 12:31:27

自动聊天工具尝试一(寻找方向)

目录 一句话结论&#xff08;先给你定心&#xff09; 一、先整体看清这条完整路线&#xff08;你现在在第 0 步&#xff09; 二、真正的「第一步」&#xff1a;明确你要识别什么&#xff08;非常关键&#xff09; 场景 A&#xff08;最简单&#xff0c;强烈推荐新手&#xf…

作者头像 李华
网站建设 2026/6/26 12:31:24

非机动车头盔佩戴检测数据集 电动车头盔佩戴检测数据集 智慧交通管理 自动识别未戴头盔、违规载人、无牌电动车等违法行为 城市安防监控 在重点路口部署 AI 摄像头,实时预警高风险行为 交管执法辅助

非机动车车牌数据集&#xff08;可识别车牌区域&#xff09;、 电动车、头盔、车牌、骑行人员数据集 已标注标签为电动车&#xff0c;头盔&#xff0c;未戴头盔&#xff0c;车牌及骑行人 可用于训练yolo模型 已划分训练集验证集 有多人和单人&#xff0c;类别齐全&#xff0c;角…

作者头像 李华