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扫描影响的。我认为你这问题应该是你的传感器不是高速反应型。光电型的传感器反应会比电感型的快很多。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)