光电开关信号检测C程序

光电开关信号检测C程序,第1张

最多24个光电开关,要用3个74HC165移位寄存器,每个74HC165接8个光电开关,如果为了节省S52的管脚,可以将3个74HC165串联在一起,如果这样接,C语言可以写成:

long int a1

clks=0//为了可靠期间,移位时钟脚先置0

for( i=0,i<24,i++)

{

clks=1;

clks=1;//重复的目的是为了延时,如果硬件反应速度慢。

clks=0;

a1=a1<<1

if(datas==1) //datas是74HC165串行数据的接入脚 ,读取1位光电开关

a1=a1|0x1//末尾置1

else

a1=a1&0xfffffffe //末尾置0

}

if (a1==0) b=1 //此处设光电管受光照,输出为0,b=1表示全0检测通过。

else b=0// b=0,表示有错

//后面的程序不用详细写了吧,需要关闭光源,再读入一次24个观点开关,a1=oxffffffff,则正确,否则出错。

经过有光和无光照两次检测,就可以判断光电开关的好坏了。

可以。电机转动了,转动到位置就会触碰接近开关,接近开关就会有信号给PLC,因此在一定时间(根据电机的转速确定这个时间)内接近开关的信号状态没有变化,就是电机不转了。就根据这个思路,PLC里用定时器,再定时器设定时间内,没有再次接收到接近开关给的信号,就是不转了。

望采纳。。。。。。

要达到你这个要求你首先要选择快速反应的接近开关,程式编写使用高速计数器,高速计数器不受PLC扫描影响的。

我认为你这问题应该是你的传感器不是高速反应型。光电型的传感器反应会比电感型的快很多。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7991502.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存