回复:初学者写程序

已锁定

我才不告诉你呢!

  • 帖子

    3
  • 精华

    0
  • 被关注

    0

论坛等级:新手

注册时间:2023-05-03

普通 普通 如何晋级?

发布于 2023-05-26 11:49:27

4楼


导轨上两个电机:A,B。初始位分别在按钮1和按钮6。六个按钮,一个按钮一个位置。

电机运动规则是当第一个按钮被按下时,电机A判断按钮位置是否会与另一个电机B相撞,如果不会就执行动作到按钮位置。不会相撞则AB 电机交替执行动作。

会相撞则电机B到达按钮位置,再次有按钮按下则由没有动作的A电机判断,不相撞A动,相撞B动。再次有按钮按下则由没有动作的A电机判断,不相撞A动,相撞B动。(不动不计入判断。如初始位A1,B6.按下6还是A1,B6。下次还是A判断是否动。)

如:按下按钮 2,电机A到达按钮2的位置,再按下按钮 5,电机B 到达按钮5的位置。再按下按钮4,申机A到达按钮4的位置。再按下按钮 3,电机A到达按3的位置。再按下按钮4,申机B到达按钮4的位置。


实现方法:

在不撞机运行下,我可以计数,然后确定该A还是改B动作;对于会撞机则具体分析,再清除计数重新计数。

R_TRIG_1(CLK:=动作标志);

IF R_TRIG_1.Q THEN 

顺序:=顺序+1;

动作标志:=0; 

END_IF;

判断:=顺序 MOD 2;

A允许动作:=判断=0 ; 

B允许动作:=判断<>0; 

//按键2

IF R_TRIG_2.Q   THEN

IF A位置<2 AND B位置>2 THEN

IF A允许动作=TRUE THEN 

A位置:=2; 

动作标志:=TRUE; 

END_IF;

IF B允许动作=TRUE THEN 

B位置:=2; 

动作标志:=TRUE; 

END_IF;

END_IF;

IF A位置>2 AND B位置>2 THEN

A位置:=2; 

顺序:=1;

END_IF;

IF A位置<2 AND B位置<2 THEN

A位置:=2; 

B位置:=2; 

顺序:=0;

END_IF;

按钮2:=FALSE;

END_IF;


那除了用MOD实现改A还是改B动之外,还有其他方法吗?


评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

电机

共有3151条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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