1、分别衫芦有1、2、3、4、5共计5个开关点,暂且定义为I0.0--I0.4,分别对应输出点Q0.0--Q0.4。
2、当这5个开关点无顺序依次接通时,相对应的输出点高塌世按照先来后到,排队的形式进戚肢行输出,同时输出不超过两个。
3、等这两个输出保持30秒以后断开,重新再检测这5个开关点的闭合状态,再按照排队的形式输出先接通开关点对应的输出点。
PLC一进一出才走输出的程序,其实是一个初级的排队控制程序,可以通过以下的简单程序实现:1. 创建两个计时器,分别为T1、T2,用于衡纯卜控制进入队列和出队列。
2. 创建一个用于控制队列长度的计数器,用于记录当前队列中的数量。
3. 为进出队列分别定义一个触点I1和I2。
4. 创建一个输出Q1,用于在出队列时输出信号。
下面是具体的程序流程:
主程序:
- 开始时,初始化计数器CT0值为0,将T1、T2复位,并将输出Q1初始值设为0。
- 若I1触点被触发,则T1开始计时。在T1计时结束之前,如果I2触点被触发,则不做处理。若计时器T1计时结束,队列长度增加1,计数器CT0加1,并清零计时器T1。
- 若I2触点被触发,则T2开始计时。在T2计时结束之前,裤昌如果I1触点被触发,则不做处理。若计时器T2计时结束,队列长度减1,计数器CT0减1,并清零计时器T2。
- 若队列中有物体,则输出Q1为咐穗1,否则Q1为0。
- 继续执行主程序。
程序结束。
需要注意的是,该程序只适用于简单的一进一出排队控制,对于具体的场景需求,程序可能需要进行修改。
#include<stdio.h>#include<malloc.h>
#define N 10
int main(void)
{
int i,j,x,m,flag=1
char ch
m=N
char (*p)[10]=(char (*)[10])calloc(N,10*sizeof(char))
for(i=0i<10i++)
for(j=0j<10j++)
p[i][j]='\0'
printf("伏蔽戚输入ID时不超过10位,第一位不能为'*'\n")
i=0
while(1)
{
while(i<m)
{
printf("请输入第%d名并举的ID:",i+1)
ch=getchar()
for(j=0j<10j++)
{
if(j==0&&ch=='*')
{
flag=0
break
}
if(ch=='\n')
break
p[i][j]=ch
ch=getchar()
}
if(flag==0)
break
i=i+1
}
if(flag==0)
break
m=m+N
p=(char (*)[10])realloc(p,m*10*sizeof(char))
for(x=ix<mx++)
for(j=0j<10j++)
p[x][j]='\0'
}
for(j=0j<ij++)
{
printf("第%d名缺陵:",j+1)
printf("%s\n",p[j])
}
free(p)
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)