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