說明
可以使用“移動值”指令,將 IN 輸入處操作數中的內容傳送給 OUT1 輸出的操作數中。始終沿地址升序方向進行傳送。
如果滿足下列條件之一,使能輸出 ENO 將返回信號狀態“0”:
使能輸入 EN 的信號狀態為“0”。
IN 參數的數據類型與 OUT1 參數的指定數據類型不對應。
下表列出了可用于 S7-1200 CPU 系列的傳送:
傳送源 (IN) | 傳送目標 (OUT1) | |
---|---|---|
進行 IEC 檢查 | 不進行 IEC 檢查 | |
BYTE | BYTE、WORD、DWORD | BYTE、WORD、DWORD、SINT、USINT、INT、UINT、DINT、UDINT、TIME、DATE、TOD、CHAR |
WORD | WORD、DWORD | BYTE、WORD、DWORD、SINT、USINT、INT、UINT、DINT、UDINT、TIME、DATE、TOD、CHAR |
DWORD | DWORD | BYTE、WORD、DWORD、SINT、USINT、INT、UINT、DINT、UDINT、REAL、TIME、DATE、TOD、CHAR |
SINT | SINT | BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT, TIME, DATE, TOD |
USINT | USINT, UINT, UDINT | BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT, TIME, DATE, TOD |
INT | INT | BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT, TIME, DATE, TOD |
UINT | UINT, UDINT | BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT, TIME, DATE, TOD |
DINT | DINT | BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT, TIME, DATE, TOD |
UDINT | UDINT | BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT, TIME, DATE, TOD |
REAL | REAL | DWORD, REAL |
LREAL | LREAL | LREAL |
TIME | TIME | BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT, TIME |
DATE | DATE | BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT, DATE |
TOD | TOD | BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT, TOD |
DTL | DTL | DTL |
CHAR | CHAR | BYTE, WORD, DWORD,CHAR,字符串中的字符1) |
WCHAR | WCHAR | BYTE,WORD,DWORD,CHAR,WCHAR,字符串中的字符1) |
字符串中的字符1) | 字符串中的字符 | CHAR,WCHAR,字符串中的字符 |
ARRAY 2) | ARRAY | ARRAY |
STRUCT | STRUCT | STRUCT |
PLC 數據類型 (UDT) | PLC 數據類型 (UDT) | PLC 數據類型 (UDT) |
IEC_TIMER | IEC_TIMER | IEC_TIMER |
IEC_SCOUNTER | IEC_SCOUNTER | IEC_SCOUNTER |
IEC_USCOUNTER | IEC_USCOUNTER | IEC_USCOUNTER |
IEC_COUNTER | IEC_COUNTER | IEC_COUNTER |
IEC_UCOUNTER | IEC_UCOUNTER | IEC_UCOUNTER |
IEC_DCOUNTER | IEC_DCOUNTER | IEC_DCOUNTER |
IEC_UDCOUNTER | IEC_UDCOUNTER | IEC_UDCOUNTER |
下表列出了可用于 S7-1500 CPU 系列的傳送:
傳送源 (IN) | 傳送目標 (OUT1) | |
---|---|---|
進行 IEC 檢查 | 不進行 IEC 檢查 | |
BYTE | BYTE, WORD, DWORD, LWORD | BYTE, WORD, DWORD, LWORD, SINT, USINT, INT, UINT, DINT, UDINT, LINT, ULINT, TIME, LTIME, LDT, DATE ,TOD, LTOD, CHAR |
WORD | WORD, DWORD, LWORD | BYTE, WORD, DWORD, LWORD, SINT, USINT, INT, UINT, DINT, UDINT, LINT, ULINT, S5TIME, TIME, LTIME, LDT, DATE, TOD, LTOD, CHAR |
DWORD | DWORD, LWORD | BYTE, WORD, DWORD, LWORD, SINT, USINT, INT, UINT, DINT, UDINT, LINT, ULINT, REAL, TIME, LTIME, LDT, DATE, TOD, LTOD, CHAR |
LWORD | LWORD | BYTE, WORD, DWORD, LWORD, SINT, USINT, INT, UINT, DINT, UDINT, LINT, ULINT, LREAL, TIME, LTIME, LDT, DATE, TOD, LTOD, CHAR |
SINT | SINT | BYTE, WORD, DWORD, LWORD, SINT, USINT, INT, UINT, DINT, UDINT, LINT, ULINT, TIME, LTIME, LDT, DATE, TOD, LTOD |
USINT | USINT, UINT, UDINT, ULINT | BYTE, WORD, DWORD, LWORD, SINT, USINT, INT, UINT, DINT, UDINT, LINT, ULINT, TIME, LTIME, LDT, DATE, TOD, LTOD |
INT | INT | BYTE, WORD, DWORD, LWORD, SINT, USINT, INT, UINT, DINT, UDINT, LINT, ULINT, TIME, LTIME, LDT, DATE, TOD, LTOD |
UINT | UINT, UDINT, ULINT | BYTE, WORD, DWORD, LWORD, SINT, USINT, INT, UINT, DINT, UDINT, LINT, ULINT, TIME, LTIME, LDT, DATE, TOD. LTOD |
DINT | DINT | BYTE, WORD, DWORD, LWORD, SINT, USINT, INT, UINT, DINT, UDINT, LINT, ULINT, TIME, LTIME, LDT, DATE, TOD, LTOD |
UDINT | UDINT, ULINT | BYTE, WORD, DWORD, LWORD, SINT, USINT, INT, UINT, DINT, UDINT, LINT, ULINT, TIME, LTIME, LDT, DATE, TOD, LTOD |
LINT | LINT | BYTE, WORD, DWORD, LWORD, SINT, USINT, INT, UINT, DINT, UDINT, LINT, ULINT, TIME, LTIME, LDT, DATE, TOD, LTOD |
ULINT | ULINT | BYTE, WORD, DWORD, LWORD, SINT, USINT, INT, UINT, DINT, UDINT, LINT, ULINT, TIME, LTIME, LDT, DATE, TOD, LTOD |
REAL | REAL | DWORD, REAL |
LREAL | LREAL | LWORD, LREAL |
S5TIME | S5TIME | WORD, S5TIME |
TIME | TIME | BYTE, WORD, DWORD, LWORD, SINT, USINT, INT, UINT, DINT, UDINT, LINT, ULINT, TIME |
LTIME | LTIME | BYTE, WORD, DWORD, LWORD, SINT, USINT, INT, UINT, DINT, UDINT, LINT, ULINT, LTIME |
DATE | DATE | BYTE, WORD, DWORD, LWORD, SINT, USINT, INT, UINT, DINT, UDINT, LINT, ULINT, DATE |
DT | DT | DT |
LDT | LDT | BYTE, WORD, DWORD, LWORD, SINT, USINT, INT, UINT, DINT, UDINT, LINT, ULINT, LDT |
TOD | TOD | BYTE, WORD, DWORD, LWORD, SINT, USINT, INT, UINT, DINT, UDINT, LINT, ULINT, TOD |
LTOD | LTOD | BYTE, WORD, DWORD, LWORD, SINT, USINT, INT, UINT, DINT, UDINT, LINT, ULINT, LTOD |
DTL | DTL | DTL |
CHAR | CHAR | BYTE, WORD, DWORD, LWORD,CHAR,字符串中的字符1) |
WCHAR | WCHAR | BYTE,WORD,DWORD,LWORD,CHAR,WCHAR,字符串中的字符1) |
字符串中的字符1) | 字符串中的字符 | CHAR,WCHAR,字符串中的字符 |
ARRAY 2) | ARRAY | ARRAY |
STRUCT | STRUCT | STRUCT |
COUNTER | COUNTER, WORD, INT | WORD、DWORD、INT、UINT、DINT、UDINT |
TIMER | TIMER, WORD, INT | WORD、DWORD、INT、UINT、DINT、UDINT |
PLC 數據類型 (UDT) | PLC 數據類型 (UDT) | PLC 數據類型 (UDT) |
IEC_TIMER | IEC_TIMER | IEC_TIMER |
IEC_LTIMER | IEC_LTIMER | IEC_LTIMER |
IEC_SCOUNTER | IEC_SCOUNTER | IEC_SCOUNTER |
IEC_USCOUNTER | IEC_USCOUNTER | IEC_USCOUNTER |
IEC_COUNTER | IEC_COUNTER | IEC_COUNTER |
IEC_UCOUNTER | IEC_UCOUNTER | IEC_UCOUNTER |
IEC_DCOUNTER | IEC_DCOUNTER | IEC_DCOUNTER |
IEC_UDCOUNTER | IEC_UDCOUNTER | IEC_UDCOUNTER |
IEC_LCOUNTER | IEC_LCOUNTER | IEC_LCOUNTER |
IEC_ULCOUNTER | IEC_ULCOUNTER | IEC_ULCOUNTER |
REF() | 不進行數據類型轉換。所傳遞變量的數據類型必須與指定數據類型完全匹配。 |
1) 還可以使用“移動值”指令將字符串的各個字符傳送到數據類型為 CHAR 或 WCHAR 的操作數。操作數名稱旁的方括號內指定了要傳送的字符數。例如,“MyString[2]”將傳送“MyString”字符串的第二個字符。它還可以將數據類型為 CHAR 或 WCHAR 的操作數傳送到字符串的各個字符中。還可使用其它字符串的字符來替換該字符串中的指定字符。
2) 僅當輸入 IN 和輸出 OUT1 中操作數的數組元素為同一數據類型時,才可以傳送整個數組 (ARRAY)。
如果輸入 IN 數據類型的位長度超出輸出 OUT1 數據類型的位長度,則源值的高位會丟失。如果輸入 IN 數據類型的位長度低于輸出 OUT1 數據類型的位長度,則目標值的高位會被改寫為 0。
在初始狀態,指令框中包含 1 個輸出 (OUT1)。可以擴展輸出數目。在該指令框中,應按升序順序排列所添加的輸出。在執行指令過程中,將輸入 IN 的操作數的內容傳送到所有可用的輸出。如果傳送結構化數據類型(DTL、STRUCT、ARRAY)或字符串的字符,則無法擴展指令框。
還可以使用“塊移動” (MOVE_BLK) 和“不可中斷的存儲區移動” (UMOVE_BLK) 指令移動 ARRAY 數據類型的操作數。可以使用“移動字符串”(S_MOVE) 指令復制 STRING 或 WSTRING 數據類型的操作數。
參數
下表列出了“移動值”指令的參數:
參數 | 聲明 | 數據類型 | 存儲區 | 說明 | |
---|---|---|---|---|---|
S7-1200 | S7-1500 | ||||
EN | Input | BOOL | BOOL | I、Q、M、D、L 或常量 | 使能輸入 |
ENO | Output | BOOL | BOOL | I、Q、M、D、L | 使能輸出 |
IN | Input | 位字符串、整數、浮點數、定時器、日期時間、CHAR、WCHAR、STRUCT、ARRAY、IEC 數據類型、PLC 數據類型 (UDT) | 位字符串、整數、浮點數、定時器、日期時間、CHAR、WCHAR、STRUCT、ARRAY、TIMER、COUNTER、IEC 數據類型、PLC 數據類型 (UDT) | I、Q、M、D、L 或常量 | 源值 |
OUT1 | Output | 位字符串、整數、浮點數、定時器、日期時間、CHAR、WCHAR、STRUCT、ARRAY、IEC 數據類型、PLC 數據類型 (UDT) | 位字符串、整數、浮點數、定時器、日期時間、CHAR、WCHAR、STRUCT、ARRAY、TIMER、COUNTER、IEC 數據類型、PLC 數據類型 (UDT) | I、Q、M、D、L | 傳送源值中的操作數。 |
示例
以下示例說明了該指令的工作原理:
下表將通過具體的操作數值對該指令的工作原理進行說明:
參數 | 操作數 | 值 |
---|---|---|
IN | TagIn_Value | 0011 1111 1010 1111 |
OUT1 | TagOut_Value | 0011 1111 1010 1111 |
如果操作數“TagIn”返回信號狀態“1”,則執行該指令。該指令將操作數“TagIn_Value”的內容復制到操作數“TagOut_Value”,并將“TagOut”的信號狀態置位為“1”。
審核編輯:湯梓紅
-
西門子
+關注
關注
94文章
3009瀏覽量
115666 -
信號
+關注
關注
11文章
2781瀏覽量
76649 -
指令
+關注
關注
1文章
607瀏覽量
35653 -
S7-1200
+關注
關注
11文章
331瀏覽量
17922
原文標題:西門子博途-使用MOVE:移動值
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論