故事作者:拖拉

最近创作

看看TA的故事

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

已锁定

拖拉

  • 帖子

    94
  • 精华

    1
  • 被关注

    6

论坛等级:侠士

注册时间:2021-04-14

白金 白金 如何晋级?

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

2349

35

2025-09-03 18:53:53

star star star star star

因为项目中用到了格雷码的绝对位置编码器,但是翻找西门子指令库,没有找到相关的格雷码转换成普通二进制的专用指令,格雷码虽然不常用但是他的抗干扰特性,使得在某些领域还有一定的优势。
网上搜索了格雷码转换相关的公式,比较简单。想起前段时间大火的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=>#二进制);


西门子1500没有找到专门的格雷码转换指令,巧用AI帮忙制作转换FC块 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

网友专栏

共有3467条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

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