登录
首页 电工技术 施耐德电气低压电器论坛
回帖 发帖
正文

主题:【话题】5个接近开关同时感应才能动作,可是总是误动作,什么原因?(20220222)

点击:1771 回复:33

像你这样的老鸟,逻辑上不会出问题,出问题的部分估计是对时间的判定,下面画了一个简单的信号时序图。
附件 脉冲.jpg
22-02-23 22:04
之前做过类似的程序,方法是定义5个变量,如检测第1通道的信号,当检测到通道1从高至低变化后,就开始计时,当到达时间后(如2秒),第1个变量置1,如果在此时间内,只要由低往高跳变,无论之前累加的时间是多少,哪怕是1.9秒,也要全部清零,重新累加,当5个通道的检测变量全部为1后,才算有效。如果传感器不出问题,程序没有写错,还能出问题,那只能找到离你最近的庙里好好烧烧香了。
22-02-23 22:12
这样是不是要用5个定时器?
5个变量and一下用一个定时器足矣。
22-02-24 08:23
只需要一个定时器。
sbit INT_1=P1.X//第1通道输入
bit INT_1_B=0;//第一通道输入标志变量
unsigned char INT_1_TIM=0;//第一通道输入计时变量
void main()
{
while(1)
{
if(INT_1==1&&INT_1_B==1)//如果通道1为高电平,且通道标志为1,则清零通道1标志和时间
{
INT_1_B=0;INT_1_TIM=0;
}
if(INT_1==0&&INT_1_B==0)//如果通道1为低电平,且通道1标志为0,则将通道1标志为1,且时间清零
{
INT_1_B=1;INT_1_TIM=0;
}
if(INT_1==0&&INT_1_TIM>=200.......)//通道1-通道5
{
//执行有效动作
}
}
}
void Tim1_ISR() interrupt X //定时器中断服务函数
{
if(INT_1==0&&INT_1_B==1&&INT_1_TIM<200)
{
INT_1_TIM++;
}
.
.
.
.
}
22-02-24 09:36
监控一下程序
22-02-24 09:48
看不懂这个
PLC只要
ld x0 and x1 … and x4 tim 0 #20
ld t0 set(或者out)y0
22-02-24 09:48

引用 知道一点 在 2022/2/24 9:48:41 发言【内容省略】

有时候PLC就是这么简单粗暴
22-02-24 16:25
是信号干扰是,用了个新模块,然后报警输入信号老是误感应,信号肉眼可见没有接通,但是程序里感应到了,我还是一个个把信号屏蔽了才找出来出来的
最后修改:2022/2/24 16:54:10
22-02-24 16:54
这个干扰不是一班的牛
22-02-24 22:19
干扰总是出现的莫名其妙。
22-02-25 09:24

上一页 下一页

工控新闻

更多新闻资讯