编码器的原理:

编码器的工作原理大概如下:

自编码器反向传播 编码器正反转的识别_编码器


自编码器反向传播 编码器正反转的识别_自编码器反向传播_02


上图中黄色部分A、B为两个光对射管,蓝色部分为遮挡齿轮,当齿轮处于发射管与接收管中间时,会将光线挡住,进而输出低电平。

自编码器反向传播 编码器正反转的识别_上升沿_03


波形及特点:

正转:

自编码器反向传播 编码器正反转的识别_上升沿_04


反转:

自编码器反向传播 编码器正反转的识别_编码器_05


如何利用波形得出正反转的判据:

如何通过波形得出正反转的判据呢?我们观察波形,发现在正转时,A的上升沿对应B的高电平,A的下降沿对应B的低电平,而在反转的时候,A的上升沿对应B的低电平,A的下降沿对应B的高电平。那么我们的逻辑连接可以用以下:

自编码器反向传播 编码器正反转的识别_下降沿_06


此处为什么要同时检测上升沿与下降沿呢?只检测上升沿不行吗?

自编码器反向传播 编码器正反转的识别_自编码器反向传播_07


我们考虑一种情况假设挡板齿轮目前正好挡住A相射出的光,此时A相是低电平,这时挡板齿轮向右移动一小点,A相输出高电平,检测到上升沿,计数器加一。而后挡板齿轮再向左移动一小点,A相输出低电平,检测到下降沿,这个时候如果没有检测下降沿的话,计数器值不会减一,这就存在问题,假如齿轮挡板在一个小范围内来回运动,那么计数器会不断增加,实际上挡板却没有转动。

程序上如何实现:包括程序结构

首先思考程序结构:程序可以分为3个结构,分别称为:一阶段结构,二阶段结构,三阶段结构。

一阶段结构:检测A,B引脚的状态,这个阶段应该定义几个位变量,用来表示A,B引脚的电平状态及有无上升沿及下降沿(对上升沿跟下降沿,可以定义相应的位变量,然后根据引脚前后两次电平的变化来对该位变量赋值),为什么要多次一举定义几个位变量呢?主要是为了保证在第二阶段结构的逻辑判断程序中保证所有位变量的状态在该循环期间里不会变化,也就是说位变量的状态只在一阶段中刷新,二阶段中位变量的状态不会因为外界引脚的状态变化而变化。

二阶段结构:通过一阶段输出的位变量状态实现上面T型图中的逻辑。

三阶段结构:将计数器的数值或其他逻辑计算结果输出。

题外话:

其实在编码器与PLC的连接使用中,我们不需要考虑上面说的那些问题,因为PLC内部已经将程序写好封装,我们只需要设置好某个寄存器的值,然后将相应的位逻辑连接就行,这在一定程度上方便了我们的使用,但是另一方面也限制了我们进行深层次思考。知其然而不知其所以然,因此在遇到问题时,我们在享受便利的同时,也要多思考思考为什么这样做,其原理是怎样的?只有这样,才能提高我们分析问题解决问题的能力。才能提高我们的水平。