回复:绝对值编码器接1200的问题

xinshiji168

  • 帖子

    664
  • 精华

    1
  • 被关注

    19

论坛等级:侠圣

注册时间:2008-11-15

黄金 黄金 如何晋级?

发布于 2014-11-02 11:15:08

6楼

展开查看
以下是引用伊默在2014-10-31 14:09:10的发言 >5楼:格雷码转二进制的方法很多的,网上一查就知道了,自己写个FB/FC就可以转换了。
以下是我写的一个FC,用来将格雷码转换成二进制, 提供了三种方法,不过我实际在现场只用了而且只验证了第一种方法。

FUNCTION "FC_GrayToDecimal" : UInt
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_INPUT
GrayInput : UInt;
END_VAR

VAR_TEMP
Num : Int;
TempResult : UInt;
END_VAR


BEGIN
(*Method 1*)
#TempResult := #GrayInput;
#TempResult := #TempResult XOR SHR(IN:=#TempResult,N:=16);
#TempResult := #TempResult XOR SHR(IN:=#TempResult,N:=8 );
#TempResult := #TempResult XOR SHR(IN:=#TempResult,N:=4 );
#TempResult := #TempResult XOR SHR(IN:=#TempResult,N:=2 );
#TempResult := #TempResult XOR SHR(IN:=#TempResult,N:=1 );
#FC_GrayToDecimal := #TempResult;
(*
(*Method 2*)
#TempResult := #GrayInput;
FOR #Num := 1 TO 15 DO
#TempResult := #TempResult XOR SHR(IN:=#TempResult,N:=1 );
END_FOR;
#FC_GrayToDecimal := #TempResult;
(*Method 3*)
#TempResult.X15 := #GrayInput.X15;
#TempResult.X14 := #GrayInput.X14 XOR #TempResult.X15;
#TempResult.X13 := #GrayInput.X13 XOR #TempResult.X14;
#TempResult.X12 := #GrayInput.X12 XOR #TempResult.X13;
#TempResult.X11 := #GrayInput.X11 XOR #TempResult.X12;
#TempResult.X10 := #GrayInput.X10 XOR #TempResult.X11;
#TempResult.X9 := #GrayInput.X9 XOR #TempResult.X10;
#TempResult.X8 := #GrayInput.X8 XOR #TempResult.X9 ;
#TempResult.X7 := #GrayInput.X7 XOR #TempResult.X8 ;
#TempResult.X6 := #GrayInput.X6 XOR #TempResult.X7 ;
#TempResult.X5 := #GrayInput.X5 XOR #TempResult.X6 ;
#TempResult.X4 := #GrayInput.X4 XOR #TempResult.X5 ;
#TempResult.X3 := #GrayInput.X3 XOR #TempResult.X4 ;
#TempResult.X2 := #GrayInput.X2 XOR #TempResult.X3 ;
#TempResult.X1 := #GrayInput.X1 XOR #TempResult.X2 ;
#TempResult.X0 := #GrayInput.X0 XOR #TempResult.X1 ;
*)
END_FUNCTION
非常感谢,我对这个不懂,还想问的详细一些,编码器是可以多圈旋转的。
譬如我选的CPU1214,带有10个DI,地址为I0.0-I1.1,编码器有10根线,第一根线我是接I0.0吗?依次接到I1.1端子吗?程序里把IW0赋值给GrayInput吗?这个FC块的输出“RET-VAL”的数我下面处理的对吗?
滚筒周长是565.2cm,实际位置为X,1024/565.2=“RET-VAL”/X,X=0.55דRET-VAL”,对吧?我看有的文章说十位的编码器一圈是1023,有的地方说是1024,到底是哪个对呢?
麻烦指教!多谢!
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15225条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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