技术论坛

 西门子1500没有找到专门的格雷码转换指令,巧用AI帮忙制作转换FC块

返回主题列表
作者 主题
拖拉
侠士

经验值:1097
发帖数:62
精华帖:1
楼主    2025-09-03 18:53:53
主题:西门子1500没有找到专门的格雷码转换指令,巧用AI帮忙制作转换FC块 精华帖 

因为项目中用到了格雷码的绝对位置编码器,但是翻找西门子指令库,没有找到相关的格雷码转换成普通二进制的专用指令,格雷码虽然不常用但是他的抗干扰特性,使得在某些领域还有一定的优势。
网上搜索了格雷码转换相关的公式,比较简单。想起前段时间大火的deepseek,正好拿来偷偷懒。整理了一下需求,简单一描述,十几秒钟,参考的SCL程序就出来了。
解答过程不光解释了格雷码相关的原理,指令一步一步解释的也非常详细,更是细心提示到了可能遇到的问题和注意事项。

根据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=>#二进制);


您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。