大話工控 2018-03-19 23:04:47 這節(jié)介紹西門子S7-200PLC的開關(guān)量輸入寄存器I(徐達)的構(gòu)成和編程規(guī)則,在以前的課程中我們講過開關(guān)量輸入寄存器I(徐達)的手下管理了14名部下,他們分別是(I0.0 I0.1 I0.2 I0.3 I0.4 I0.5 I0.6 I0.7 I1.0 I1.1 I1.2 I1.3 I1.4 I1.5)。但這只是我們看的見的14個,為什么看的見?因為它們在PLC上都有對應(yīng)的接線端子,所以我們知道它們是存在的。但事實是,這些只是開關(guān)量輸入寄存器I(徐達)手下人員數(shù)量的冰山一角,為什么這么說呢?請先看圖1, 上一節(jié)我們講到S7-200PLC的內(nèi)存中,開關(guān)量輸入寄存器I(徐達)一共有16個字節(jié),又因為每一個字節(jié)是8位(bit),所以16乘8就是128位(bit) ,128減去那14個等于114。所以還有114名我們看不見的,雖然看不見,但它們都是真實存在的。再看一下圖2你就明白了,黑色的是PLC,那些青色的小方塊就是我們能看的到的每一個位(bit),它們連接著外部的接線端子。 而那些一個個紅色的小方塊就是我們看不到的位(bit)。那這些紅色看不見的位有什么作用呢?難道是我們的CPU(朱元璋)錢多任性讓他們閑著玩游戲嗎?老朱可不會這么好心,它是為我們擴展后面的模塊使用的,當(dāng)PLC上的這14個人不夠用時,我們就要在PLC的后面加一個擴展模塊,然后擴展模塊上的端子再和這些看不見的位對應(yīng)起來,就變成了看的見并且可以使用的開關(guān)量輸入點了。這是開關(guān)量輸入寄存器I在PLC里的結(jié)構(gòu)形式和功能。下面說一下開關(guān)量輸入寄存器I的編程命名規(guī)則。 圖3,是我們對每一個位(bit)進行編程時的命名規(guī)則圖,圖中的I0.0就是我們真實的PLC上的第一個接線端子(可以看一下圖2),那么這個I0.0每一個字符代表什么意思呢?見圖3,I指的就是輸入寄存器I,如果把I換成Q就是指的輸出寄存器Q,緊接著I后面的第一個0指的是輸入寄存器I的第0個字節(jié)(注意這個奇葩的命名,明明它是有16個字節(jié)的,第一個字節(jié),它卻非要命名成IB0,命名成IB1多好記呀,但是沒辦法,它說0就必須是0。。。記好了最后一個字節(jié)是IB15,可不是IB16??纯磮D1就知道了。) 緊接著0后面的是一個“.”,點就是點了,不用解釋了,寫上就行了。點后面又是一個0,它指的是字節(jié)中的第0位(和上面一樣,同樣的奇葩,明明是8個位,自己看吧)。挺簡單吧。舉個例子,如果我們在程序里寫I1.5,指的就是輸入寄存器 I 的第二個字節(jié)(IB1)的第六位(.5),這句話仔細看看。 圖4,是我們按字節(jié)(BYTE)進行編程時的命名規(guī)則圖,問題來了,為什么還要按字節(jié)(BYTE)進行編程呢?一個位(bit)一個位(bit)的編程不就行了嗎?恩,是的,對開關(guān)量來說是沒問題的,但是你別忘了還有模擬量呀,開關(guān)量只要知道0和1就行了。但要是讓你保存一個85度的水的溫度你怎么保存呢?你總不能用熱和不熱來區(qū)分吧,熱的就是85度,不熱的就不是85度,顯然這是不行的。這時我們只要在編程時按字節(jié)(BYTE)的命名規(guī)則,編一個字節(jié)就行了。 圖4就是按字節(jié)(BYTE)的命名規(guī)則,I指的就是輸入寄存器I, 后面的B 指的就是這是一個字節(jié)(BYTE)型的,0指的就是第0個字節(jié)。明白了命名規(guī)則,我們來看一下IB0能不能存下85這個數(shù),通過前面課程的學(xué)習(xí)我們知道,1個字節(jié)(BYTE)=8個位(bit),也就是說IB0 = “0000 0000”到“1111 1111”中任何一種組合狀態(tài),而85換算成二進制數(shù)就是“1010101”,所以放在IB0中是絕對沒有問題的。那么IB0最大能放一個多大的數(shù)呢? 255對吧。怎么算的呢?要是忘了就看看前面的課程吧。那要是一個大于255的數(shù),在IB0中放不下怎么辦呢?我們下節(jié)接著說。 |
|