组态王设计。如何让物体从A移动到B停留一会儿又移动到A.帮我分析一下这个程序。

2024-12-04 23:21:15
推荐回答(1个)
回答1:

新建四个变量:\\本站点\B点卸货标志位(类型内存离散,初始值开),\\本站点\C点卸货标志位(类型内存离散,初始值关);\\本站点\计时器(类型内存实型),\\本站点\延时时间(类型内存实型)。
你的问题在与你在执行到水平位置>50的循环后你赋值水平位置=0这样下次循环判断水平位置已经等于你赋的值0,不满足if(\\本站点\水平位置>50)的条件所以永远都在自加,等到等于50你循环了一次,赋值0,周而复始所以你永远都是从A-B的循环。

下面的亲测,没问题,可追问

if(\\本站点\总开关==1)
{

\\本站点\延时时间=1;(注变量用来设定延时时间,可自行修改,本例以命令语言存在500ms执 行一次。延时时间10s)
if(\\本站点\B点卸货标志位==1)
{
\\本站点\水平位置=\\本站点\水平位置+5;
if(\\本站点\水平位置==50)
{ \\本站点\水平位置=45;
\\本站点\计时器=\\本站点\计时器+1;
if(\\本站点\计时器>=\\本站点\延时时间*12)
{
\\本站点\计时器=0;
\\本站点\B点卸货标志位=0;
\\本站点\C点卸货标志位=1;
\\本站点\水平位置=0;
}
}
}

if(\\本站点\B点卸货标志位==0)
{
\\本站点\水平位置=\\本站点\水平位置+5;
if(\\本站点\水平位置==100)
{
\\本站点\水平位置=95;
\\本站点\计时器=\\本站点\计时器+1;
if(\\本站点\计时器>=\\本站点\延时时间*12)
{
\\本站点\计时器=0;
\\本站点\B点卸货标志位=1;

\\本站点\C点卸货标志位=0;
\\本站点\水平位置=0;
}
}
}
}