标题: 关于单片机程序启停控制问题 [打印本页]

作者: Evan_wang    时间: 2020-3-25 17:25
标题: 关于单片机程序启停控制问题

现在功能:每个程序给一个信号,相关程序就会执行.
问题: 各部件都是独立运行(例如,我后面的程序还没执行完,只要控制电机的点有信号,电机还是会转,各部件之间无关联性)
希望达到效果: 电机给信号后,后面各程序依次执行,且在执行完整个程序前,前面的程序即使给信号与只会等待不会执行.
例如(我程序还在执行第三步,我给一个信号给START 电机还是不会转,直到后面的执行完电机才会转动然后接着执行后面的程序)
请大神指点要如何修改. 感激


作者: wang_hu_hi    时间: 2020-3-25 19:34
这种不考虑成本的话还是PLC方便,国产PLC100多些
作者: yzwzfyz    时间: 2020-3-26 12:27
再写一个GL程序,管理你的N个功能程序。
1、程序以GL运行为主,即只在GL中循环运行。
2、每个GL循环里依序执行(调取)你的N个功能程序。
3、每个功能程序只请允许运行0.1秒或更短(越短越好。这就考验你的逻辑能力了,估计你无法做到),如果某个功能某个动作执行超过0.1秒,就拆开某个动作(如何拆是关键)。再下一轮继续完成。
如此就OK了。0.1秒只是个象征性的界限,实际会更短。因为0.1秒对于单片机来说,可运行数万条指令了。

作者: game灬boy    时间: 2020-3-26 13:59
定义三个标志位如int a,b,c;初值为1,0,0。当a=1;时执行第一步执行完第一步后将a置0并且将b置1;当b=1时执行第二步执行完第二步后将b置0并且将c置1;当c=1时执行第二步执行完第二步后将c置0并且将a置1;这样就会按照第一第二第三步执行了
例如:
int a=1;
int b=0;
int c=0;
if(a==1&&START==0)
{
P0=0x00;
a=0;
b=1;
}
if(b==1&&START==0)
{
P0=0x01;
b=0;
c=1;
}
if(c==1&&START==0)
{
P0=0x02;
c=0;
a=1;
}
这段代码在给相同信号START=0时;会因为abc的值执行不同程序
作者: Evan_wang    时间: 2020-3-29 11:22
game灬boy 发表于 2020-3-26 13:59
定义三个标志位如int a,b,c;初值为1,0,0。当a=1;时执行第一步执行完第一步后将a置0并且将b置1;当b=1 ...

謝謝你詳細回答




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1