- 请教用过英威腾高级变频器的大佬: GD350 带同步电机做闭环矢量控制(加了 PG 编码器卡)。 正常跑速度模式时,监控编码器反馈的速度波形非常平滑,转速很稳。 因为机械安全需要,我把参数里的‘正
- 项目快被这个故障搞流产了: 现场一台 11KW 的 ATV340 变频器控制一台输送皮带。 奇怪的规律来了:只要车间头顶上的 20 吨大行车开始起吊重物(行车用的是传统的绕线电机加电阻调速),皮带机上
- 避坑求助:用信捷 DS5L 伺服驱动器做快速往复摆动机构。 PLC 发脉冲+方向(Pulse/Dir)给伺服。 如果单向一直跑,或者几秒钟换一次方向,伺服非常完美,定位很准。 核心问题:因为工艺需
- 求助:伦茨 i550 变频器控制一个斜坡传送带。 为了防止停机时货物因为重力下滑,我启用了停机直流制动功能。 参数设置:制动电流设为了 80% 的额定电流,制动时间设了 3 秒。 结果:点击停止后,变
- 项目卡壳,求教老手: 现场在云南某矿山(海拔 2800 米),用了一批国产易驱变频器带传送带。 奇怪的故障:每天早上开机,变频器跑得好好的,实际运行电流(看面板参数)只有额定电流的 60% 左右,完全
请教5000中一个INT数据如何拆分成两个SINT?仪表需要把采集到的INT数据的高低字节分开,网上搜可以使用.H或.L,试了下不行,大家都怎么处理这种情况的?
联系人:15609536173197
电话/手机:联系客服
发布时间:2025-10-14 19:10
浏览:773次



















































方法 1(首选):COP 指令按字节拷贝
建 2 个字节的数组:MyBytes : SINT[2]
执行:
Source = MyInt(类型 INT)
Dest = MyBytes[0](类型 SINT)
Length = 1 ← 注意:长度是“源类型的元素个数”,拷 1 个 INT=2 字节
在 Logix(小端序)里:
MyBytes[0] = 低字节(LOW)
MyBytes[1] = 高字节(HIGH)
想把两个 SINT 合回 INT,也用一条 COP:Source=MyBytes[0]、Dest=MyInt、Length=1(拷 1 个 INT 的字节数)。
提示:如果你看到大于 127 的字节会以负数显示,这是 SINT 有符号显示 的问题;实际发出去的字节是对的。把显示基数改成 HEX 或改用 USINT(若固件支持)。
方法 2:按位运算(屏蔽+移位)
// 拆分
LowByte : USINT; // 或 SINT
HighByte : USINT;
LowByte := USINT(DINT(MyInt) AND 16#00FF);
HighByte := USINT((DINT(MyInt) >> 8) AND 16#00FF);
// 组回
MyInt := INT( (DINT(HighByte) << 8) OR DINT(LowByte) );
先转成 DINT 再移位,避免有符号移位的坑。
用 AND 16#00FF 保证只取 8 位。
方法 3:COP 到更长的字节缓冲
对需要连续处理一批数据的场景,可以把 INT[N] 一次 COP 到 SINT[2*N],再按索引取高/低字节即可。
常见坑
COP.Length 写成 2 以为是 2 字节,其实变成拷 2 个 INT(4 字节)→ 结果错。
目的地址没有对齐或类型错(用 INT/DINT 去接 SINT 字节)。
看值时用十进制导致误判(>127 显负数)。
这样做基本就能跟仪表对上“高低字节分开”的需求了。