| 作者 | 主题 |
|---|---|
|
拖拉 侠士
经验值:1097 发帖数:62 精华帖:1 |
楼主
主题:西门子1500没有找到专门的格雷码转换指令,巧用AI帮忙制作转换FC块
因为项目中用到了格雷码的绝对位置编码器,但是翻找西门子指令库,没有找到相关的格雷码转换成普通二进制的专用指令,格雷码虽然不常用但是他的抗干扰特性,使得在某些领域还有一定的优势。 根据AI提供的思路和程序案例,稍微修改,整合成了需要的格雷码转换二进制的FC。上机一试,效果OK。 FC接口变量: Input 格雷码 Word Output 二进制 Word InOut
Temp 格雷位 Array[0..15] of Bool 二进制位 Array[0..15] of Bool i Int 循环计数 Constant
Return 格雷码转二进制 Void SCL程序段 SCATTER(IN:=#格雷码, //拆分成位 OUT=>#格雷位); #二进制位[15] := #格雷位[15]; //最高位不变 FOR #i := 14 TO 0 BY -1 DO //循环异或 #二进制位[#i] := #格雷位[#i] XOR #二进制位[#i + 1]; END_FOR; GATHER(IN:=#二进制位, //合并成字 OUT=>#二进制); |