從通道中讀取數(shù)據(jù)。
CREAD從加載的LD_EXT_OBJ類型的外部模塊讀取數(shù)據(jù)。
無法從LD_EXT_FCT類型的外部模塊或命令通道讀取。
應(yīng)用的例子: 在KRC1和外圍數(shù)據(jù)(PC, 智能傳感器...) 數(shù)據(jù)交換(讀語句)。
? INT類型的數(shù)據(jù)必須是Little Endian格式,并且前面必須有一個符號。
? REAL類型的數(shù)據(jù)必須是IEEE 754標(biāo)準(zhǔn)格式的32位表示形式。
CREAD (Handle, State, Mode, TIMEOUT, OFFSET, Format, Var1 < ,??
…, Var10 >)
“CREAD”語句用于從打開的通道中讀取數(shù)據(jù)。在這有兩個區(qū)別::
主動讀入
程序請求通過通道進(jìn)行輸入。通道驅(qū)動器提出輸入請求并將接受到的數(shù)據(jù)作為結(jié)果返回到CREAD語句 。
被動讀入
預(yù)先確定的變量(INT$DATA_SER1orINT$DATA_SER2), 未被請求的數(shù)據(jù)到達(dá)后通過增加通道驅(qū)動器,每個通道都是這樣的。當(dāng)執(zhí)行熱啟動或當(dāng)打開/關(guān)閉通道時變量初始化為0。在系統(tǒng)等待讀入請求的反饋信號方面也是有差別的:絕對的或有條件的。絕對的意思是系統(tǒng)等待直到通道給出請求的數(shù)據(jù)。在有條件的情況下,系統(tǒng)檢查數(shù)據(jù)是否有效。
Handle |
INT |
由“COPEN”轉(zhuǎn)移變量。注意:變量“$CMD ”將被拒絕 |
State |
STATE_T |
類型:STATE_T 自動返回CREAD的狀態(tài) |
Mode |
MODUS_T |
“MODUS_T”是列舉類型,它有與下列“CREAD”有關(guān)的值: ABS 激活讀入通道。函數(shù)等待到通道產(chǎn)生一個可用的數(shù)據(jù)塊或等待到“Timeout”失敗。 COND 未被請求的通道讀入。 SEQ 從以前被請求使用“ABS ”或“COND ”或作為結(jié)果返回“CWRITE”的字節(jié)補(bǔ)償讀入完成了的數(shù)據(jù)塊
|
Timeout |
REAL |
參數(shù)“TIMOUT”可被用于指定時間,在等待數(shù)據(jù)塊失敗之后。 Timeout的值0.0允許無止境的等待。.
一個值大于60 或是為負(fù)值,則數(shù)值是無效的。與系統(tǒng)有關(guān)的錯誤在等待時間內(nèi)是是固有的。 |
Offset |
INT |
變量“Offset”用于指定被承認(rèn)的數(shù)據(jù)中的字節(jié)數(shù),在系統(tǒng)開始讀入之前。 如果開始就讀入,偏移量t必須設(shè)為0 (原點(diǎn))。 “CREAD”語句不能分配所有被程序承認(rèn)的數(shù)據(jù)變量,偏移量指定已經(jīng)分配的字符數(shù)。 |
Format |
CHAR[ ] |
變量“Format”的類型“CHAR[ ] ”( 文字訊息) 包含產(chǎn)生了的文本格式。 變量結(jié)構(gòu)主要符合“C ”語言 “FPRINTF”功能的格式。 |
Var |
變量符合“Format”。 |
如果操作不是來于“COPEN”語句程序是被傳送的 “CREAD” 語句或通道已經(jīng)又再關(guān)閉,承認(rèn)信息“INVALIDHANDLE” 被顯示。
其它方式的規(guī)定或非初始化的變量導(dǎo)致一個被變量“STATUS ”發(fā)現(xiàn)錯誤 。如果讀“ABS ”“COND ”成功,那么數(shù)據(jù)塊的數(shù)據(jù)是先前被承認(rèn)的,就像他們完全的讀出。
文本是按照格式規(guī)定的程序段返回的。值決定被分配的適當(dāng)?shù)淖兞?,系統(tǒng)檢查值之否在任何區(qū)域有效。“變量FOMAT”轉(zhuǎn)換支持由“Kernighan/Ritchie”指定的格式規(guī)定(C 語言1978),O,P,N,U和【list 】出外。
字符長度規(guī)范“H”和“L”不能使用。
只有9個格式參數(shù)可用于指定“CREAD”語句。如果幾個變量是格式化可用到的,則必須在“# SEQ ”模式下讀入。
系統(tǒng)不能區(qū)別大小寫字符。在發(fā)生一個錯誤后讀入失敗( 不符合格式或無效的值) 。
轉(zhuǎn)換字符“R”,當(dāng)讀入任何一個字節(jié)指定的字符長度次序 ( 與寫入類似,例如“%2.5r”)或這所有字節(jié)在結(jié)束信息之前,他也同樣傳入。
不像其它格式,單獨(dú)字節(jié)的讀入必須被“%1r”明確規(guī)定。.
沒有用“%c格式”指定寬度,這樣的格式是不合格的。字節(jié)能被分配到INT ,REAL ,CHAR ,BOOL ,ENUM數(shù)據(jù)類型的變量或這種類型的一維數(shù)組。
假定整數(shù)數(shù)據(jù)類型出現(xiàn)在“l(fā)ittle endian ”格式中,而且是有正負(fù)之分的。
Real 的數(shù)據(jù)類型在IEEE754 標(biāo)準(zhǔn)格式中用32位表示。
任何不等于0(zero) 的值可以被TURN 轉(zhuǎn)換。
系統(tǒng)控制值是否被ENUM值允許。如果不是,讀失敗。ENUM開始為1 。
如果沒有足夠的格式數(shù)據(jù),(例如%2.5r,但只有7位), 沒有數(shù)據(jù)從格式讀出,CREAD語句失敗。被忽略的數(shù)據(jù)依然被READ 讀取。.
變量的讀就像變量裝入一些字節(jié)一樣。直到讀準(zhǔn)備好后重新啟動。如果數(shù)組足夠大但是數(shù)字用到的字節(jié)不是要素排列的倍數(shù),那么多余的字節(jié)列在格式后或在下一個CREAD語句的左面讀取。
通過“CREAD”調(diào)用下列更多的讀取。字節(jié)數(shù)“%s” 或“%r 的格式指定首先讀取實際上被狀態(tài)變量返回的格式行。
所有其他的字長度不是確定的。因此用“%s”或“%r”格式只是一次“CREAD”調(diào)用格式行和重復(fù)。
如果“%s”或“%r”格式不在已經(jīng)成功讀取的格式之中( 看“HITS”的變量狀態(tài)) ,“LENGTH” 的值在語句中不變。
使用中斷讀取
監(jiān)控系統(tǒng)變量以確定數(shù)據(jù)是否可用于
讀數(shù):
$外部模塊LD_EXT_OBJx的DATA_LD_EXT_OBJx
當(dāng)接收到數(shù)據(jù)時,通道驅(qū)動器會增加系統(tǒng)變量。然后可以使用中斷程序讀取數(shù)據(jù)。
當(dāng)執(zhí)行熱重啟或打開或關(guān)閉通道時,變量將用0初始化。如果“保留數(shù)據(jù)”選項被激活,則變量不會重置。
帶中斷的示例
帶有中斷聲明的主程序:
INTERRUPT DECL 10 WHEN $DATA_LD_EXT_OBJ2<>0 DO OBJ_INT ()
INTERRUPT ON 10
...
中斷程序:
DEF OBJ_INT ()
DECL MODUS_T MODE
...
INTERRUPT OFF 10
WHILE ($DATA_LD_EXT_OBJ2<>0)
...
MODE=#COND
OFFSET=0
CREAD (HANDLE,..., MODE,...)
...
ENDWHILE
INTERRUPT ON 10
END
審核編輯 :李倩
-
機(jī)器人
+關(guān)注
關(guān)注
211文章
28632瀏覽量
208103 -
智能傳感器
+關(guān)注
關(guān)注
16文章
602瀏覽量
55394 -
KUKA
+關(guān)注
關(guān)注
3文章
217瀏覽量
16589
原文標(biāo)題:KUKA機(jī)器人高級編程CREAD的用法詳解
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機(jī)器人及PLC自動化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論