2019年就要過(guò)去了,當(dāng)初的新年愿望都實(shí)現(xiàn)了么?反正我的網(wǎng)紅愿望是沒有實(shí)現(xiàn),為什么呢?實(shí)力不行,還不夠努力!這一年中奮力拼搏的人一定有所收獲,向你們致敬!
言歸正傳,上回我們說(shuō)完了PLC的兩條腿——數(shù)字量輸入(DI)和數(shù)字量輸出(DO),就好像我們手臟了,去水池邊洗手,水龍頭接收到我們手的開信號(hào)(DI),流出水來(lái)(DO),洗好了接收到我們手的關(guān)信號(hào),龍頭關(guān)閉。So easy吧?
可現(xiàn)在冬天了,用涼水洗手太冷了,而且像我這樣的纖纖玉指是不能沾涼水的,那就需要熱水器里的熱水。水太涼了不行,會(huì)肚子疼,太熱了也不行,二師兄燙毛的時(shí)候可以,雖然二師兄已經(jīng)貴不可攀燙不起了。那怎么判斷涼還是燙呢?這就需要模擬量輸入(AI)了,也就是Analog Input,我們手所感知的溫度就是一個(gè)模擬量輸入值,它跟數(shù)字量的區(qū)別顯而易見,數(shù)字量只有兩種狀態(tài),0或者1,而模擬量是連續(xù)變化的,比如水溫,就是0-100°C,我們的手就負(fù)責(zé)感知溫度,接收溫度的信號(hào)值,10度、20度太涼,30度溫吞吞,40度剛剛好,50度、60度就燙手了,這樣的一個(gè)信號(hào)就是典型的模擬量輸入信號(hào)。
我們的大腦除了感知喜怒哀思悲恐驚的感情,還可以負(fù)責(zé)數(shù)據(jù)的計(jì)算處理,手接觸到水,就會(huì)告訴我們熱還是涼,那PLC怎么像大腦一樣做出這樣的判斷呢?我們就來(lái)看一下這個(gè)重要的處理過(guò)程A/D轉(zhuǎn)換,也就是模擬量怎么變成計(jì)算機(jī)可以識(shí)別的數(shù)字信號(hào)。
轉(zhuǎn)換過(guò)程中有兩個(gè)重要的概念,第一個(gè)是分辨率,也就是用幾位數(shù)字信號(hào)代表一個(gè)模擬量值,或者換一種簡(jiǎn)單的說(shuō)法,把一個(gè)模擬量值分幾份。還是用水溫0-100°C來(lái)舉例子,如果只用一位數(shù)字量來(lái)分辨水溫,那么就只有兩個(gè)狀態(tài):0代表0度,1代表100度,這太不精確了。那如果用兩位數(shù)字量來(lái)表示呢?把0-100°C分三份,如下表(注意是三份,不是四份,原因自己找哦):
如果是8位呢,正好一個(gè)字節(jié)(Byte),2進(jìn)制縮寫為:2#,那么一個(gè)字節(jié)就是2#0000 0000到2#1111 1111,變成10進(jìn)制就是0到255,水溫被分的更細(xì),如果16位,正好是一個(gè)字(Word),那就是10進(jìn)制的0到65535,可以看到,分辨率越高,分的越細(xì),水溫會(huì)被表示的更為精確。有點(diǎn)像我們顯示器、電視或者手機(jī)的分辨率,分辨率越高,畫面被切割的越細(xì)膩,圖像也就越清晰,道理相同。
第二個(gè)概念是采樣頻率,也就是單位時(shí)間內(nèi)測(cè)量多少次模擬量的值,如果一年測(cè)兩次,大年初一吃餃子一次,夏天吹空調(diào)吃冰棍的時(shí)候一次,那中間的春天的溫度信息都是遺失的,這樣做的結(jié)果一定讓你妥妥的被人罵到狗血淋頭。趕緊動(dòng)起來(lái),一分鐘測(cè)一次,結(jié)果稍稍可以接受,如果是在健身房上班,讓你測(cè)游泳池溫度,這樣的頻率應(yīng)該可以過(guò)關(guān)。但如果讓你測(cè)的是洗澡水的溫度,那說(shuō)不定又要被投訴了,水溫到60度了,還沒到測(cè)量的時(shí)間,客人已經(jīng)被燙傷了,那必須增加測(cè)量的頻率,五秒一次,水溫不合適隨時(shí)調(diào)節(jié)。但如果在化工廠上班,溫度的變化直接影響一罐原料的成品質(zhì)量,一秒三次的頻率才能保證正常的生產(chǎn)??梢钥吹?,不同的場(chǎng)合需要不同的采樣頻率,采樣頻率的大小決定了這個(gè)模擬量值變化的趨勢(shì)是否平滑。
最后就是A/D轉(zhuǎn)換的過(guò)程了,其實(shí)就是一個(gè)比較的過(guò)程,首先根據(jù)采樣頻率采集模擬量值,如下圖:
然后把采到的值,根據(jù)分辨率,與每個(gè)階梯對(duì)比,下圖以三位為例,還是測(cè)量水溫。把0-100°C分了7份,溫度階梯如下:
如果測(cè)到的溫度在0-14.29度之間,輸出的數(shù)字量值為000,溫度上升到14.3度,輸出數(shù)字就變?yōu)榱?01,單純比較測(cè)得的水溫和階梯值就得到了輸出的數(shù)字量值。
當(dāng)然,這其中還有濾波、算法、電路設(shè)計(jì)等問題,不過(guò),不重要,我們了解原理就可以了,模擬量模塊讀取模擬量值,最終轉(zhuǎn)換成數(shù)字量的一個(gè)值(一般是一個(gè)Word),并傳送到PLC的處理器中,就像手感知水溫,傳送到大腦,告訴我們,水溫正好,可以準(zhǔn)備脫衣服洗澡了。
可是萬(wàn)一測(cè)到水溫不合適,怎么調(diào)節(jié)一下呢?別急,下次我們就看水溫是怎么調(diào)節(jié)的,聊聊模擬量輸出AO是怎么一回事。