回复:用SCL编写程序块,要求以十进制数的值读取32位数据或超过32位数据(包括自定义数据长度)中的所对应位的位状态

傻ザ蛋

  • 帖子

    26
  • 精华

    0
  • 被关注

    4

论坛等级:游侠

注册时间:2010-06-27

普通 普通 如何晋级?

发布于 2012-01-31 16:54:14

4楼

FUNCTION_BLOCK FB121


VAR_INPUT
Sel_Pointer: ANY;
Num: INT;

END_VAR

VAR_IN_OUT
END_VAR

VAR_OUTPUT
B_Out: BOOL;


END_VAR

VAR_TEMP
Buffer1: anypoint;
Sel_Temp AT buffer1: ANY;
ByteNr: INT;
BitNr: INT;
T_Byte: INT;
T_Bit: INT;
Offset: INT;
i: INT;

END_VAR
VAR

END_VAR
Sel_Temp := Sel_Pointer;
BitNr := WORD_TO_INT(DWORD_TO_WORD(Buffer1.BytePointer AND DW#16#7));
ByteNr := WORD_TO_INT(DWORD_TO_WORD(SHR(In := SHL(In := Buffer1.BytePointer,N := 8),N := 11)));
Offset := WORD_TO_INT(DWORD_TO_WORD(Buffer1.BytePointer AND DW#16#00ff_ffff));
T_Byte := Offset / 8;
T_Bit := Offset-(T_Byte * 8);
FOR i:=0 TO Num-1 BY 1 DO
IF T_Bit > 7 THEN
T_Bit := 0;
T_Byte := T_Byte+1;
END_IF;
B_Out := WORD_TO_BLOCK_DB(Buffer1.DB_Number).Dx[T_Byte,T_Bit];
T_Bit := T_Bit+1;
END_FOR;


END_FUNCTION_BLOCK
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54757条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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