开源改变世界

huanyang-vfd 写入 8 位寄存器(例如 PD143)时字节顺序不正确。 #715

推推 grbl 3年前 (2023-01-29) 151次浏览
打开
dlushni 打开了这个问题 2020 年 4 月 9 日 · 2 条评论
打开

huanyang-vfd 写入 8 位寄存器(例如 PD143)时字节顺序不正确。#715

dlushni 打开了这个问题 2020 年 4 月 9 日 · 2 条评论

注释

huanyang-vfd 写入 8 位寄存器(例如 PD143)时字节顺序不正确。 #715

hc_data-> data = ( uint16_t )(*haldata-> motor_poles );

 

环洋变频器有一些长度为2字节的PDxxx寄存器(如PD004、PD005、PD142等都是),也有一些长度为1字节的寄存器(如PD143)。此时,PD143 是我在 huanyang-vfd 代码中找到的唯一引用的 8 位寄存器。

FUNCTION_WRITE 请求的数据包格式对于写入 1 字节和 2 字节寄存器是不同的。我的实验表明,将 1 个字节发送到 2 个字节的寄存器会导致无效操作,并且寄存器内容不会发生变化。向 1 字节寄存器发送 2 个字节被接受并修改寄存器。但是,最左边的数据字节是实际写入寄存器的值。这对应于 little-endian 字节顺序(忽略 MSB)。这也是数据包中相同的字节位置,就好像将 1 个字节发送到 1 个字节的寄存器一样。

这不同于用于将 2 个字节写入 2 字节寄存器的字节顺序,以及代码中实际实现的内容:

query[ 4 ] = hc_data->数据>> 8 ;

这里最左边的字节包含 16 位值的 MSB 位,对应大端格式。 

看起来将“motor_poles”值写入 PD143 的代码行不正确并且需要修复(例如通过将位 [7..0] 移动到位置 [15..8])。

hc_data-> data = ( uint16_t )(*haldata-> motor_poles );

 

huanyang-vfd 写入 8 位寄存器(例如 PD143)时字节顺序不正确。 #715
合作者

我尝试进行更改:
hc_data->data = (uint16_t)(*haldata->motor_poles) << 8;

但就 VFD 的操作而言,似乎没有任何变化。

我的车床有一个 4 极电机。我将 -P 8 添加到 loadusr hy_vfd 行,电机以正确的速度运行(我相信如果极数错误,它应该以两倍的速度运行)

我做了上面的更改,重新编译,电机速度保持正确。

无论有没有变化,报告电机极数的 HAL 引脚都显示 8。

我的测试有问题吗?如果不将车床从墙上拉开,我就无法轻松访问我的 HY VFD。

huanyang-vfd 写入 8 位寄存器(例如 PD143)时字节顺序不正确。 #715
合作者

任何更新?我需要一种方法来查看问题以便修复它。

免费注册 在 GitHub 上加入此对话。已有帐户? 登录评论
标签
还没有
项目

还没有

发展

没有分支机构或拉取请求

2名参加者
huanyang-vfd 写入 8 位寄存器(例如 PD143)时字节顺序不正确。 #715huanyang-vfd 写入 8 位寄存器(例如 PD143)时字节顺序不正确。 #715

喜欢 (0)