簡(jiǎn)介
在以下示例中,將通過(guò) GETIO讀取數(shù)字量輸入模塊的通道,并通過(guò) SETIO 將新值寫(xiě)入數(shù)字量輸出模塊的通道中。之后,再通過(guò) GETIO 和數(shù)字量輸入模塊讀取相應(yīng)變化。
要求
互連參數(shù):“SLI_itemiseByte_gsIO”函數(shù)
要傳遞位序列 (0..7) 的值,可創(chuàng)建函數(shù)“SLI_itemiseByte_gsIO”。
在該函數(shù)中創(chuàng)建以下局部變量。
程序段 1:根據(jù)程序段 1 的示例,為所有位 (0..7) 創(chuàng)建互連。
互連參數(shù):“SLI_FB_GETIO_SETIO”函數(shù)塊
在函數(shù)塊“SLI_FB_GETIO_SETIO”中創(chuàng)建以下互連。在 IO 設(shè)備/DP 從站中,在程序循環(huán) OB (OB1) 中調(diào)用函數(shù)塊“SLI_FB_GETIO_SETIO”。
程序段 1:互連“GETIO”指令的參數(shù),如下所示:
程序段 2:結(jié)束“GETIO”指令,如下所示:
程序段 3:根據(jù)以下示例創(chuàng)建互連,轉(zhuǎn)換 GETIO 的通道值。此時(shí),將互連函數(shù)“SLI_itemiseByte_gsIO”中所有的輸入和輸出 (0..7)。
程序段 4:根據(jù)以下示例創(chuàng)建互連,轉(zhuǎn)換 SETIO 的通道值。此時(shí),將互連函數(shù)“SLI_itemiseByte_gsIO”中所有的輸入和輸出 (0..7)。
程序段 5:互連“SETIO”指令的參數(shù),如下所示:
程序段 6:結(jié)束“SETIO”指令,如下所示:
程序段 1 (GETIO) 的運(yùn)行結(jié)果
輸入?yún)?shù) EN(“executeRead”)返回信號(hào)狀態(tài)“TRUE”時(shí),啟動(dòng)指令“GETIO”?!癎ETIO”指令將通過(guò)輸入?yún)?shù) ID(“id_Read”)調(diào)用該輸入模塊。并通過(guò)輸入?yún)?shù) INPUTS(“#readBYTE”)讀取該輸入模塊的通道。在輸出參數(shù) LEN(“l(fā)engthRead”)中,將記錄 BYTE 中讀取的通道長(zhǎng)度?!?”值引用 16 個(gè)輸入通道。
并在輸出參數(shù) STATUS(“statusRead”)處,顯示該塊的狀態(tài)。該過(guò)程成功執(zhí)行且無(wú)任何錯(cuò)誤。
程序段 2 (GETIO) 的運(yùn)行結(jié)果
執(zhí)行“GETIO”指令時(shí),輸出參數(shù) ENO(“doneRead”)將返回信號(hào)狀態(tài)“TRUE”。此后,重置程序?qū)⒆兞俊癳xecuteRead”置位為“FALSE”,并結(jié)束“GETIO”的運(yùn)行。
程序段 3 (GETIO) 的運(yùn)行結(jié)果
通過(guò)函數(shù) SLI_itemiseByte_gsIO,結(jié)構(gòu)“#readBYTE”將變量值傳送到結(jié)構(gòu)“readInputs”的變量中。此時(shí),通道 0 到 7 和 8 到 15 的值從 BYTE 轉(zhuǎn)換為 ARRAY of BOOL。
為了便于理解,可使用具體的描述性名稱表示“readInputs”結(jié)構(gòu)的變量。
程序段 4 (SETIO) 的運(yùn)行結(jié)果
通過(guò)函數(shù) SLI_itemiseByte_gsIO,結(jié)構(gòu)“writeOutputs”將變量值傳送到結(jié)構(gòu)“#writeBYTE”的變量中。通道 0 到 7 和 8 到 15 的值從 ARRAY of BOOL 轉(zhuǎn)換為 BYTE。
為了便于理解,可使用具體的描述性名稱表示“writeOutputs”結(jié)構(gòu)的變量。
程序段 5 (SETIO) 的運(yùn)行結(jié)果
輸入?yún)?shù) EN(“executeWrite”)返回信號(hào)狀態(tài)“TRUE”時(shí),啟動(dòng)指令“SETIO”。“SETIO”指令將通過(guò)輸入?yún)?shù) ID(“id_Write”)調(diào)用該輸出模塊。新值將通過(guò)輸入?yún)?shù) OUTPUTS(“#writeBYTE”)寫(xiě)入輸出模塊的通道中。
并在輸出參數(shù) STATUS(“statusWrite”)處,顯示該塊的狀態(tài)。該過(guò)程成功執(zhí)行且無(wú)任何錯(cuò)誤。
程序段 6 (SETIO) 的運(yùn)行結(jié)果
執(zhí)行“SETIO”指令時(shí),輸出參數(shù) ENO(“doneWrite”)將返回信號(hào)狀態(tài)“TRUE”。此后,重置程序?qū)⒆兞俊癳xecuteWrite”置位為“FALSE”,并結(jié)束“SETIO”的運(yùn)行。
GETIO 重新運(yùn)行的結(jié)果
如果變量“executeRead”復(fù)位為“TRUE”,則在執(zhí)行 GETIO 后將在“readInputs”結(jié)構(gòu)中顯示該輸入模塊通道中的新值。通道 1 和 2(“Channel_0-7[1]..[2]”)將返回信號(hào)狀態(tài)“TRUE”。
說(shuō)明 更改通道的信號(hào)狀態(tài) 如果已為通道賦值但該通道的信號(hào)狀態(tài)將改變(如,通過(guò) PLC 變量),則可通過(guò) SETIO 將信號(hào)狀態(tài)的變更轉(zhuǎn)至無(wú)效。此時(shí),請(qǐng)確保將發(fā)送變更的通道信號(hào)狀態(tài)與其它因素?zé)o關(guān)。 |
創(chuàng)建帶有一個(gè)數(shù)字量輸入模塊和一個(gè)數(shù)字量輸出模塊的 IO 設(shè)備/DP 從站。
說(shuō)明 使用 SETIO 進(jìn)行更改,并使用 GETIO 讀取更改 數(shù)字量輸入模塊必須連接到數(shù)字量輸出模塊處,確保寫(xiě)入的值可使用 GETIO通過(guò) SETIO 進(jìn)行讀取。 |
在全局?jǐn)?shù)據(jù)塊中,創(chuàng)建 9 個(gè)變量和 2 個(gè)結(jié)構(gòu)“readinputs”和“writeOutputs”進(jìn)行數(shù)據(jù)存儲(chǔ)。 使用“id_Read”變量,存儲(chǔ)數(shù)字量輸入模塊的硬件標(biāo)識(shí)符。使用“id_Write”變量,存儲(chǔ)數(shù)字量輸出模塊的硬件標(biāo)識(shí)符。
說(shuō)明 查找硬件標(biāo)識(shí)符 使用“PLC 變量 > 系統(tǒng)常量”(PLC tags > System constants),查找硬件標(biāo)識(shí)符。例如,數(shù)字量輸入模塊可使用數(shù)據(jù)類型“HW_Submodule”搜索“Local~<數(shù)字量輸入模塊名稱>”。在相關(guān)單元格“值”(value) 中,將列出該硬件的標(biāo)識(shí)符。 |
要進(jìn)行數(shù)據(jù)傳送,需在函數(shù)塊“SLI_FB_GETIO_SETIO”中創(chuàng)建以下局部變量。
要更改通道狀態(tài),需在全局?jǐn)?shù)據(jù)塊中,將以下位(通道 1 和 2)設(shè)置為“TRUE”:
審核編輯:湯梓紅
-
plc
+關(guān)注
關(guān)注
5016文章
13387瀏覽量
465394 -
西門(mén)子
+關(guān)注
關(guān)注
95文章
3062瀏覽量
116445 -
編程
+關(guān)注
關(guān)注
88文章
3637瀏覽量
93983 -
數(shù)字量
+關(guān)注
關(guān)注
0文章
68瀏覽量
11311
原文標(biāo)題:西門(mén)子PLC: 讀取數(shù)字量輸入模塊/寫(xiě)入數(shù)字量輸出模塊
文章出處:【微信號(hào):gh_a8b121171b08,微信公眾號(hào):機(jī)器人及PLC自動(dòng)化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論