北岛夜话
原创工业智能控制领域(PLC、单片机/嵌入式、机器人、通信、机器视觉)的技术及经验分享。
文章545 浏览8640977

模拟量信号能被CPU直接处理吗?

上一篇文章我们谈到了现场有很多诸如温度、压力等连续变化的模拟量需要传送到PLC中进行处理,多数情况下模拟量的传送采用4-20mA的电流信号。你有没有考虑过这样一个问题?假如当前信号线上的电流等于5mA,那么它表达了一个什么样的含义呢?CPU能直接处理这“5mA”的信号吗?

analog_handling.jpg

答案是“不能”。我们知道现代的微电子计算机都是基于冯诺依曼的二进制理论,它只能处理0和1组成的数字量的信号,CPU是无法理解"5mA"表示的含义的。模拟量的信号在被CPU处理之前,都要先转换成数字量,这就常说的模数转换。

模数转换也称为AD转换,由专门的模数转换器(Analog to Digital Converter,简称ADC)完成。总体来说,模数转换器包括两个部分,模拟部分和数字部分,模拟部分主要包括采样器和调节器,采样后的信号经过调制器,然后输出一位一位的数据位流;数字部分是一个数字滤波器,它对模拟部分输出的数字流进行除噪处理,滤除大部分的量化噪声,最终得到转换后的数字量结果。

听起来有点抽象,对于模数转换,我们暂时不探究太多的细节,先弄清楚几个与模拟量模块型号选择有关的概念:

1)分辨率:是指对满量程的信号分成N等份,每一份所表示的大小。N越大,分辨率就越高,转换后的数字量就越接近实际模拟量。比如S7-1200的模拟量输入模块SM 1231 AI 4x13 bit,名称中的“13bit”表示“12bit”的分辨率+“1bit”的符号位。“12bit”的分辨率是个什么概念呢?它表示把满量程信号分成2的12次方(4096)等份;比如满量程信号为温度100摄氏度,那么每一份等于100度/4096=0.0244度,表示该模拟量模块能检测到的最小温度变化是0.0244度。如果我们选择“8bit”的模块,它表示把满量程信号分成2的8次方(256)等份;仍以满量程信号为温度100摄氏度为例,则每一份等于100 度/256=0.39度,所以“8bit”的模块能检测到的最小温度变化为0.39度,显然它的分辨率比12bit的要小很多,对测量信号的变化的敏感度要低。

sm1231.jpg

2)精度:是指测量值和实际值的偏差。模拟量转换的精度除了取决于A/D转换的分辨率,还受到转换芯片的外围电路的影响。在现场的实际应用中,输入的模拟量信号会有波动、噪声和干扰,内部模拟电路也会产生噪声、漂移,这些都会对转换的最后精度造成影响,这些因素造成的误差要大于A/D芯片的转换误差,高精度必须要高分辨率,但高分辨率并不表示高精度。

3)转换速率:是能够重复进行数据转换的速度,即每秒转换的次数。而完成一次A/D转换所需的时间(包括稳定时间),则是转换速率的倒数。

经过模数转换后,外部的模拟量信号被转换成数字信号存储在模拟量模块中,CPU根据模拟量模块的地址,读取相应的值,就可以进行运算处理了。

本篇小结:外部的模拟量信号不能被CPU直接处理,必须先经过模拟量输入模块进行模数转换(A/D转换)。模数转换是使用一个数字量来近似的表达模拟量,用来表达转换后的数字量的位数越多,分辨率就越高,对信号源变化就越敏感。

扫描下面的二维码,关注“方正智芯”的原创文章,提供工业控制领域(PLC、单片机、通信)的技术和经验的分享,持续关注,持续进步


已经过安全软件检测无毒,请您放心下载。

取消

感谢您的支持,欢迎常来看看!

扫码支持
一点动力,多少随意

打开支付宝扫一扫,即可进行扫码打赏哦

发表评论