Modbus TCP/IP地址转PLC地址补0实现及左移位操作可行性咨询
首先说你问的左移位能不能用:普通二进制左移位是按2的倍数计算的,你这个需求是十进制位补0,除非你用BCD码移位,否则不建议用左移位实现,容易出问题。
给你两种可行方案:
方案1:数值运算实现(性能最优)
直接通过取整和取余拆分重组数值即可,所有PLC编程语言逻辑通用:
// 示例逻辑 current_val = 440606 high_part = current_val / 10000 // 取前两位得到44 low_part = current_val % 10000 // 取后四位得到606 target_val = (high_part / 10) * 100000 + (high_part % 10) * 1000 + low_part // 计算结果就是目标值404606
方案2:字符串处理实现(逻辑直观,不易出错)
如果你的PLC支持字符串操作,用字符串拼接的方式不需要计算权重,不容易出错:
1. 将当前数值440606转为字符串得到 "440606" 2. 拼接规则:取第一个字符 + "0" + 剩余所有字符,得到 "4"+"0"+"40606" = "404606" 3. 转回数值类型即可得到目标结果
如果是初始拼接两个四位数值段的场景,你直接调整拼接权重即可:比如第一个数值段是4、第二个是4606,正确逻辑是4 * 100000 + 4606,你之前得到错误结果是用了4 * 10000 + 40606的逻辑,修改乘法系数就能直接得到正确结果。
内容的提问来源于stack exchange,提问作者Metehan Simsek
相关产品推荐
相关产品推荐

