在上個(gè)世紀(jì) 60 年代末,誕生了一種新型的控制設(shè)備——可編程序控制器(英文名稱Programmable Logic Controller 簡稱 PLC)。PLC 的出現(xiàn),在設(shè)備控制領(lǐng)域掀起一場革命,世界上許多知名的公司紛紛推出 PLC 產(chǎn)品,如三菱、歐姆龍、西門子、施耐德等,其性能不斷提高、功能也不斷完善和強(qiáng)大、價(jià)格不斷下降,應(yīng)用領(lǐng)域不斷擴(kuò)大,如自動(dòng)化生產(chǎn)線、數(shù)控機(jī)床、電梯等?,F(xiàn)在 PLC 已與CAD/CAM、機(jī)器人技術(shù)并成為現(xiàn)代制造業(yè)三大支柱。
PLC具有很強(qiáng)的適應(yīng)性,是專為工業(yè)現(xiàn)場應(yīng)用而設(shè)計(jì)的控制器,它采用了典型的計(jì)算機(jī)結(jié)構(gòu),由硬件和軟件兩大系統(tǒng)組成。
雖然目前市場上 PLC 種類繁多,但其結(jié)構(gòu)和工作原理基本相同。
PLC 硬件系統(tǒng)主要由 CPU、輸入/輸出接口電路、存儲器、電源等組成 。
下面我們以西門子S7-200PLC介紹一下PLC的傳送
在了解傳送指令之前先要理解西門子PLC的尋址方式,
1. S7-200 PLC的數(shù)據(jù)存儲器
1) 8個(gè)二進(jìn)制位(bit)成為一個(gè)字節(jié)(Byte)
2) 一個(gè)字節(jié)表示一個(gè)存儲單位
3) 存儲器容量是以字節(jié)為基本單位的
4) 兩個(gè)字節(jié)為一個(gè)字(Word)
5) 兩個(gè)字為一個(gè)雙字(Doble Word)。
2.CPU存儲器的尋址方式有直接尋址和間接尋址兩種形式。在此僅簡單介紹一下直接尋址方式。
直接指出元件名稱的尋址方式稱作直接尋址。直接尋址又有位尋址、特殊器件尋址和字節(jié)尋址。
(1)位尋址格式
位尋址格式為:Ax.y,使用時(shí)必須指定元件名稱、字節(jié)地址和位號。
進(jìn)行這種位尋址的編程元件有:輸入映像寄存器(I)、輸出映像寄存器(Q)、位存儲器(M)、特殊存儲器(SM)、局部變量存儲器(L)、變量存儲器(V)和順序控制繼電器(S)。
(2)特殊器件的尋址格式
存儲區(qū)內(nèi)有些元件是具有一定功能的器件,編程時(shí)不用指出它們的字節(jié)地址,而是直接寫出其編號。如定時(shí)器(T)、計(jì)數(shù)器(C)、高速計(jì)數(shù)器(HC)和累加器(AC)。
(3)字節(jié)、字、雙字的尋址格式
對字節(jié)、字和雙字?jǐn)?shù)據(jù),直接尋址時(shí)需指明元件名稱、數(shù)據(jù)類型和存儲區(qū)域內(nèi)的首字節(jié)地址。
可以進(jìn)行這種方式尋址的編程元件有:輸入映像寄存器(I)、輸出映像寄存器(Q)、位存儲器(M)、特殊存儲器(SM)、局部變量存儲器(L)、變量存儲器(V)、順序控制繼電器(S)、模擬量輸入映象寄存器(AQ)和模擬量輸出映象寄存器(AQ)。
了解了寄存器的尋址方式之后會(huì)方便對傳送指令的理解,先大體概括一下所有的傳送指令,在這里主要分為兩類,一類是單一傳送,另一類是塊傳送
1. 單一傳送
(1)MOVB,字節(jié)傳送指令
(2)BIR,傳送字節(jié)立即讀指令
(3)BIW,傳送字節(jié)立即寫指令
(4)MOVW,字傳送指令
(5)MOVD,雙字傳送指令
(6)MOVR,實(shí)數(shù)傳送指令
2. 塊傳送
(1)BMB,字節(jié)塊傳送指令
(2)BMW,字塊傳送指令
(3)BMD,雙字塊傳送指令
單一傳送指令,字節(jié)傳送(MOVB)、字傳送(MOVW)、雙字傳送(MOVD)和實(shí)數(shù)
傳送指令在不改變原值的情況下將IN中的值傳送到OUT。使用雙字傳送指令可以創(chuàng)建一個(gè)指針。
要注意的是輸入和輸出的數(shù)據(jù)類型可以不同,但數(shù)據(jù)長度必須相同。
使ENO=0的錯(cuò)誤條件:
0006 (間接尋址)
間接尋址是指用指針來訪問存儲區(qū)數(shù)據(jù),在一條指令中,如果操作碼后面的操作數(shù)是以操作數(shù)所在地址的地址形式出現(xiàn)的,這種指令的尋址方式就叫間接尋址。
0006間接尋址錯(cuò)誤:就是這個(gè)指令的操作數(shù)不能是指針類型。也就是說,當(dāng)傳輸出錯(cuò)時(shí),出錯(cuò)碼為0006.
0006 (間接尋址) 整數(shù)轉(zhuǎn)為字節(jié)指令的操作 整數(shù)轉(zhuǎn)字節(jié)指令(ITB)將一個(gè)字的值IN轉(zhuǎn)換成一個(gè)字節(jié)值,并且 存入OUT指定的變量中。只有0到255中的值被轉(zhuǎn)換。所有其他 值會(huì)產(chǎn)生溢出并且輸出不會(huì)改變。
使ENO=0的錯(cuò)誤條件: SM1.1 (溢出)
0006 (間接尋址) 受影響的SM標(biāo)志位: SM1.1 (溢出) 提示
如果想將一個(gè)整數(shù)轉(zhuǎn)換成實(shí)數(shù),先用整數(shù)轉(zhuǎn)雙整數(shù)指令,再用雙整數(shù)轉(zhuǎn)實(shí)數(shù)指令。
傳送指令的有效操作數(shù):
字節(jié)立即傳送(讀和寫):
字節(jié)立即傳送指令允許您在物理I/O和存儲器之間立即傳送一個(gè)字節(jié)數(shù)據(jù)。
字節(jié)立即讀(BIR)
指令讀物理輸入(IN),并將結(jié)果存入內(nèi)存地址(OUT),但過程映像寄存器并不刷新。
字節(jié)立即寫指令(BIW)
從內(nèi)存地址(IN)中讀取數(shù)據(jù),寫入物理輸出(OUT),同時(shí)刷新相應(yīng)的過程映像區(qū)。
使ENO=0的錯(cuò)誤條件
0006 (間接尋址)
不能訪問擴(kuò)展模塊
字節(jié)立即讀指令的有效操作數(shù):
字節(jié)立即寫指令的有效操作數(shù):
塊傳送指令
字節(jié)、字、雙字的塊傳送字節(jié)塊傳送(BMB)、字塊傳送(BMW)和雙字塊傳送(BMD)指令傳送指定數(shù)量的數(shù)據(jù)到一個(gè)新的存儲區(qū),數(shù)據(jù)的起始地址IN,數(shù)據(jù)長度為N個(gè)字節(jié)、字或者雙字,新塊的起始地址為OUT。N的范圍從1到255。
使ENO=0的錯(cuò)誤條件:
0006 (間接尋址)
0091 (操作數(shù)超出范圍)
可能理解起來不是很明白,那么看下面這個(gè)例子
//將數(shù)組1(VB20到VB23)傳送至數(shù)組2(VB100到VB103)