摘要:上回我们说完了PLC的两条腿——数字量输入(DI)和数字量输出(DO),就好像我们手脏了,去水池边洗手,水龙头接收到我们手的开信号(DI),流出水来(DO),洗好了接收到我们手的关信号,龙头关闭。So easy吧?
2019年就要过去了,当初的新年愿望都实现了么?反正我的网红愿望是没有实现,为什么呢?实力不行,还不够努力!这一年中奋力拼搏的人一定有所收获,向你们致敬!
言归正传,上回我们说完了PLC的两条腿——数字量输入(DI)和数字量输出(DO),就好像我们手脏了,去水池边洗手,水龙头接收到我们手的开信号(DI),流出水来(DO),洗好了接收到我们手的关信号,龙头关闭。So easy吧?
可现在冬天了,用凉水洗手太冷了,而且像我这样的纤纤玉指是不能沾凉水的,那就需要热水器里的热水。水太凉了不行,会肚子疼,太热了也不行,二师兄烫毛的时候可以,虽然二师兄已经贵不可攀烫不起了。那怎么判断凉还是烫呢?这就需要模拟量输入(AI)了,也就是Analog Input,我们手所感知的温度就是一个模拟量输入值,它跟数字量的区别显而易见,数字量只有两种状态,0或者1,而模拟量是连续变化的,比如水温,就是0-100°C,我们的手就负责感知温度,接收温度的信号值,10度、20度太凉,30度温吞吞,40度刚刚好,50度、60度就烫手了,这样的一个信号就是典型的模拟量输入信号。
我们的大脑除了感知喜怒哀思悲恐惊的感情,还可以负责数据的计算处理,手接触到水,就会告诉我们热还是凉,那PLC怎么像大脑一样做出这样的判断呢?我们就来看一下这个重要的处理过程A/D转换,也就是模拟量怎么变成计算机可以识别的数字信号。
转换过程中有两个重要的概念,第一个是分辨率,也就是用几位数字信号代表一个模拟量值,或者换一种简单的说法,把一个模拟量值分几份。还是用水温0-100°C来举例子,如果只用一位数字量来分辨水温,那么就只有两个状态:0代表0度,1代表100度,这太不精确了。那如果用两位数字量来表示呢?把0-100°C分三份,如下表(注意是三份,不是四份,原因自己找哦):
如果是8位呢,正好一个字节(Byte),2进制缩写为:2#,那么一个字节就是2#0000 0000到2#1111 1111,变成10进制就是0到255,水温被分的更细,如果16位,正好是一个字(Word),那就是10进制的0到65535,可以看到,分辨率越高,分的越细,水温会被表示的更为精确。有点像我们显示器、电视或者手机的分辨率,分辨率越高,画面被切割的越细腻,图像也就越清晰,道理相同。
第二个概念是采样频率,也就是单位时间内测量多少次模拟量的值,如果一年测两次,大年初一吃饺子一次,夏天吹空调吃冰棍的时候一次,那中间的春天的温度信息都是遗失的,这样做的结果一定让你妥妥的被人骂到狗血淋头。赶紧动起来,一分钟测一次,结果稍稍可以接受,如果是在健身房上班,让你测游泳池温度,这样的频率应该可以过关。但如果让你测的是洗澡水的温度,那说不定又要被投诉了,水温到60度了,还没到测量的时间,客人已经被烫伤了,那必须增加测量的频率,五秒一次,水温不合适随时调节。但如果在化工厂上班,温度的变化直接影响一罐原料的成品质量,一秒三次的频率才能保证正常的生产。可以看到,不同的场合需要不同的采样频率,采样频率的大小决定了这个模拟量值变化的趋势是否平滑。
最后就是A/D转换的过程了,其实就是一个比较的过程,首先根据采样频率采集模拟量值,如下图:
然后把采到的值,根据分辨率,与每个阶梯对比,下图以三位为例,还是测量水温。把0-100°C分了7份,温度阶梯如下:
如果测到的温度在0-14.29度之间,输出的数字量值为000,温度上升到14.3度,输出数字就变为了001,单纯比较测得的水温和阶梯值就得到了输出的数字量值。
当然,这其中还有滤波、算法、电路设计等问题,不过,不重要,我们了解原理就可以了,模拟量模块读取模拟量值,最终转换成数字量的一个值(一般是一个Word),并传送到PLC的处理器中,就像手感知水温,传送到大脑,告诉我们,水温正好,可以准备脱衣服洗澡了。
可是万一测到水温不合适,怎么调节一下呢?别急,下次我们就看水温是怎么调节的,聊聊模拟量输出AO是怎么一回事。