一些实现变址寄存的方法,可针对于循环工位,以下操作能不能实现?

已锁定

sdxc1

  • 帖子

    2
  • 精华

    0
  • 被关注

    0

论坛等级:新手

注册时间:2025-08-12

普通 普通 如何晋级?

一些实现变址寄存的方法,可针对于循环工位,以下操作能不能实现?

604

0

2025-08-13 15:01:24

---------------------------------fc函数(实现循环+变址效果)

Input

基数 Word

偏移数 Word

循环数 Int

Output

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

InOut

Temp

移动 Word

执行位 Word

目前位 Word

i Int

Constant

Return

变址掩码 Void


#移动 := 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];


一些实现变址寄存的方法,可针对于循环工位,以下操作能不能实现? 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15772条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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