|
|
1 mês atrás | |
|---|---|---|
| .. | ||
| __pycache__ | 1 mês atrás | |
| README.md | 1 mês atrás | |
| main.py | 1 mês atrás | |
| modbus_rtu.py | 1 mês atrás | |
| plsr_protocol.py | 1 mês atrás | |
| settings.json | 1 mês atrás | |
| start_plsr_tester.bat | 1 mês atrás | |
| test_protocol.py | 1 mês atrás | |
上位机新增“输出诊断”页。连接并启动脉冲后,程序会随状态轮询读取设备的诊断结果;运动完成后分别显示脉冲个数、脉冲频率和加减速曲线是否与设置一致,并显示实际/设定脉冲、实际/设定频率、最大频率偏差及三类异常次数。“清除诊断记录”只清除诊断结果,运行期间不能清除。
诊断状态追加在原状态区之后,原地址不变:0x200B 为诊断状态位,0x200C 为曲线类型,0x200D 为当前曲线阶段,0x200E~0x2017 为期望/实际计数与频率,0x2018~0x201A 为异常次数。向控制寄存器 0x3000 写入 0x0020 可清除诊断记录。
该功能诊断的是STM32内部实际执行情况:脉冲完成中断计数与TIM寄存器反算频率。若需要发现端子断线、外部干扰或驱动器漏收脉冲,仍需示波器或外部反馈计数输入。
本工具已按《参数表-2026.xlsx》更新,使用 Python/tkinter 和 Modbus RTU。
输出方式可选择:PUL/DIR(脉冲+方向)或AB正交脉冲,选择结果保存到设备Flash。
脉冲发送模式可选择:完成模式在段边界停止后再启动,后续模式在条件允许且方向兼容时保持硬件PWM连续衔接。
方向逻辑可选择正逻辑或负逻辑并保存到设备Flash;PUL/DIR运动完成、等待或暂停后方向端保持最后状态,下一次运动再按新方向更新。
PUL/DIR模式:Y0~Y3输出硬件PWM脉冲,Y12~Y15保持方向电平,原来的正反转接线和方向逻辑继续生效。
Y0~Y3分别使用PF6/TIM10、PF8/TIM13、PF7/TIM11、PF9/TIM14。
AB模式:A相端子可选Y0~Y3,B相端子可选Y12~Y15;正向A超前B 90°,反向B超前A 90°。
AB模式每完成一个四拍周期计为1个脉冲;两种模式空闲时输出均恢复高电平。
相对模式支持完整32位有符号脉冲数,负数直接表示反向;原方向选项仍可把正数脉冲转换为反向。绝对模式由目标位置与当前累计位置自动判向。
公共参数:0x1000~0x1015,其中0x1007为脉冲加减速模式(0=直线、1=S曲线、2=正弦曲线),0x100B~0x100C是脉冲默认速度,0x100F为输出方式(0=PUL/DIR,1=AB正交)。
运行中目标频率:0x1016~0x1017,写入后以控制位0x0040立即应用;该值不修改默认速度、段表或Flash。
分段参数:第 n 段基址 0x1100 + (n-1)*0x10,每段使用偏移 0~7。
状态:0x2000~0x2006。
控制:0x3000,bit0 启动/继续、bit1 停止、bit2 清累计位置。
所有双字参数均为低地址存低 16 位。
运行 start_plsr_tester.bat,或执行 python main.py。首次使用如果缺少串口库,请安装 pyserial。
验证AB相时,请将双通道示波器分别接到所选A相、B相端子,并共地测量。不要仅观察单只LED判断正反向;单路波形无法显示两相的超前关系。
测试协议编解码:
python -m unittest test_protocol.py