西门子间接实现循环+变址功能,

已锁定

sdxc1

  • 帖子

    2
  • 精华

    0
  • 被关注

    0

论坛等级:新手

注册时间:2025-08-12

普通 普通 如何晋级?

西门子间接实现循环+变址功能,

1129

1

2025-08-13 15:01:27

----------------------------循环+变址fc

Input

基数 Word

偏移数 Word

循环数 Int

Output

输出数组 Array[0..15] of Bool

InOut

Temp

移动 Word

执行位 Word

目前位 Word

i Int

Constant

Return


#移动 := 1;

#目前位 := (#基数 + #偏移数) MOD INT_TO_WORD(#循环数);

#执行位 := SHL(IN := #移动, N := #目前位);

FOR #i := 0 TO #循环数 - 1 DO

    #输出数组[#i] := (#执行位 AND SHL(IN := #移动, N := INT_TO_WORD(#i))) <> 0;

END_FOR;

---------------------------------------------------------调用循环变址fc

Input

状态字 Word

初始化 Bool

0工位准备启动 Bool

1工位准备启动 Bool

2工位准备启动 Bool

3工位准备启动 Bool

Output

气缸0 Bool

气缸1 Bool

气缸2 Bool

气缸3 Bool

InOut

Temp

Constant

Return


IF #"0工位准备启动" AND NOT #初始化 THEN

    "变址掩码"(基数 := #状态字,

           偏移数 := 0,

           循环数 := 4,

           输出数组 => #"0工位位组");

END_IF;

IF #"1工位准备启动" AND NOT #初始化 THEN

    "变址掩码"(基数 := #状态字,

           偏移数 := 1,

           循环数 := 4,

           输出数组 => #"1工位位组");

END_IF;

IF #"2工位准备启动" AND NOT #初始化 THEN

    "变址掩码"(基数 := #状态字,

           偏移数 := 2,

           循环数 := 4,

           输出数组 => #"2工位位组");

END_IF;

IF #"3工位准备启动" AND NOT #初始化 THEN

    "变址掩码"(基数 := #状态字,

           偏移数 := 3,

           循环数 := 4,

           输出数组 => #"3工位位组");

END_IF;

FOR #i := 0 TO 3 DO

    #暂存数组[#i] := (#"0工位位组"[#i]) OR

    (#"1工位位组"[#i]) OR

    (#"2工位位组"[#i]) OR

    (#"3工位位组"[#i]);

END_FOR;

#气缸0 := #暂存数组[0];

#气缸1 := #暂存数组[1];

#气缸2 := #暂存数组[2];

#气缸3 := #暂存数组[3];


不知道我实现的是不是传统的变址效果


西门子间接实现循环+变址功能, 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

谈天说地

共有14420条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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