楊偉光
摘 要:840D系統(tǒng)中,NC和PLC有高速數(shù)據(jù)交換區(qū)。數(shù)據(jù)交換的內(nèi)容可自由配置,能夠?qū)崿F(xiàn)特定的功能:NC程序獲取PLC一側(cè)的機(jī)床傳感器狀態(tài),使NC程序更加靈活的運(yùn)行;也可以使用NC程序收集PLC所需的一些配置數(shù)據(jù)。數(shù)據(jù)交換區(qū)在NC一側(cè)是系統(tǒng)變量$A_DBB[],$A_DBW[],$A_DBD[],$A_DBR[],在PLC一側(cè)需通過FC21進(jìn)行訪問,本次試驗(yàn)將測試各基本數(shù)據(jù)類型和某些復(fù)雜數(shù)據(jù)類型的傳送,為具體的應(yīng)用提供依據(jù)。
關(guān)鍵詞:NC加工程序;PLC數(shù)據(jù)塊
使用NC加工程序在NC和PLC數(shù)據(jù)交換區(qū)上構(gòu)造S7300PLC的ANY數(shù)據(jù)類型的變量并傳送給PLC,然后PLC在數(shù)據(jù)交換區(qū)上讀取并傳輸數(shù)據(jù)到ANY變量指定的地址。
840D和840Dsl系統(tǒng)中,NC和PLC有高速數(shù)據(jù)交換區(qū)。數(shù)據(jù)交換的內(nèi)容可自由配置,利用這一特性可以在NC程序中配置地址信息,使數(shù)據(jù)傳輸?shù)絇LC存儲器任一位置。
1 NC與PLC數(shù)據(jù)的傳輸
1.1 高速數(shù)據(jù)交換區(qū)原理
高速數(shù)據(jù)交換區(qū)是一塊NC和PLC共享的內(nèi)存區(qū)域,因此:數(shù)據(jù)從NC到PLC即為NC把數(shù)據(jù)寫入數(shù)據(jù)交換區(qū),然后PLC從數(shù)據(jù)交換區(qū)讀取這個數(shù)據(jù)。數(shù)據(jù)從PLC到NC即為PLC把數(shù)據(jù)寫入數(shù)據(jù)交換區(qū),然后NC從數(shù)據(jù)交換區(qū)讀取這個數(shù)據(jù)。
1.2 高速數(shù)據(jù)交換區(qū)的訪問方式
NC使用系統(tǒng)變量$A_DBB[n],$A_DBW[n],$A_DBD[n],$A_DBR[n]訪問高速數(shù)據(jù)交換區(qū)。PLC使用FC21訪問高速數(shù)據(jù)交換區(qū)。
1.3 注意事項(xiàng)
機(jī)床數(shù)據(jù)28150 $MC_MM_NUM_VDIVAR_ELEMENTS配置可寫的數(shù)量。系統(tǒng)在賦值時對變量的取值范圍進(jìn)行檢測,如果超出范圍則報警。
2 NC對高速數(shù)據(jù)交換區(qū)的訪問
默認(rèn)情況下NC對高速數(shù)據(jù)交換區(qū)進(jìn)行讀操作,向數(shù)據(jù)區(qū)寫數(shù)據(jù)需要要通道機(jī)床數(shù)據(jù)28150 $MC_MM_NUM_VDIVAR_ELEMENTS 配置可寫的數(shù)量。否則會出現(xiàn)報警。
⑴各系統(tǒng)變量:$A_DBB[n]用來訪問1字節(jié)數(shù)據(jù),包括BYTE,CHAR;n為字節(jié)地址;$A_DBW[n]用來訪問2字節(jié)整數(shù);n為字節(jié)地址,應(yīng)為2的整數(shù)倍;$A_DBD[n]用來訪問4字節(jié)整數(shù);n為字節(jié)地址,應(yīng)為4的整數(shù)倍;$A_DBR[n]用來訪問浮點(diǎn)數(shù);n為字節(jié)地址,應(yīng)為4的整數(shù)倍。
高速數(shù)據(jù)交換區(qū)以字節(jié)地址訪問,以整數(shù)為例第一個整數(shù)$A_DBW[0],第二個整數(shù)$A_DBW[2]。如果下標(biāo)錯誤,例如$A_DBW[1]則報警。
⑵$A_DBB[n],$A_DBW[n],$A_DBD[n]的賦值數(shù)據(jù)格式
整數(shù)格式:例如$A_DBW[0]=1;$A_DBW[0]=-1
字符格式:例如$A_DBB[0]=”a”
二進(jìn)制格式:例如$A_DBB[0]=B10000010
十六進(jìn)制格式:例如$A_DBW[0]=H2E0F
⑶$A_DBR[n] 的賦值數(shù)據(jù)格式
$A_DBR[n]應(yīng)為浮點(diǎn)格式,例如$A_DBR[4]=123.456
⑷數(shù)據(jù)類型轉(zhuǎn)換
NC程序在使用高速數(shù)據(jù)交換區(qū)時可能進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換,例如:對$A_DBB[n],$A_DBW[n],$A_DBD[n]賦值浮點(diǎn)類型,系統(tǒng)不認(rèn)為這是編程錯誤,而是轉(zhuǎn)換為整數(shù)后賦值。$A_DBB[0]=1.23,則結(jié)果是$A_DBB[0]=1。向浮點(diǎn)變量賦值整數(shù)也有相應(yīng)過程。如果對數(shù)據(jù)類型轉(zhuǎn)換沒有充分了解,則要盡量避免,否則與預(yù)期可能存在偏差。例如:$A_DBB[0]=-1 R10=$A_DBB[0] 結(jié)果是R10=255.0,而不是R10=-1。
⑸系統(tǒng)在賦值時對變量的取值范圍進(jìn)行檢測,如果超出范圍則報警。例如:Byte變量取值范圍0到255,則$A_DBB[0]=256會引發(fā)報警。
3 NC程序中向PLC任意位置傳送數(shù)據(jù)的步驟
⑴NC程序把要傳送的數(shù)據(jù)存儲在數(shù)據(jù)交換區(qū)的指定位置;⑵NC程序在數(shù)據(jù)交換區(qū)構(gòu)造S7300PLC的ANY數(shù)據(jù)類型的變量,ny類型中分別指定 起始地址,數(shù)據(jù)類型,重復(fù)次數(shù);⑶在數(shù)據(jù)交換區(qū)寫入所要傳送的數(shù)據(jù)在數(shù)據(jù)交換區(qū)上的位置;⑷PLC調(diào)用FC21讀取步驟2和3在數(shù)據(jù)交換區(qū)上的信息;⑸PLC再次調(diào)用FC21讀取步驟3所指的數(shù)據(jù),并傳送到步驟2所指定的PLC存儲器。
4 NC程序示例:傳送數(shù)據(jù)到PLC的數(shù)據(jù)塊
PROC XDBX(INT Source=0,INT Destination=0,INT Format=0,INT Length=0,INT DB=0)
IF (DB>0)and(Length>0)and(Destination<8192)
IF (Format==1)or(Format==2)or(Format==4)
$A_DBW[1002]=Source
$A_DBW[1004]=Format*2 B_AND 'H1000'
$A_DBW[1006]=Length
$A_DBW[1008]=DB
$A_DBW[1010]='H8400'
$A_DBW[1012]=Destination*8
$A_DBB[1000]=1
WHENEVER $A_DBB[1000]==1 DO RDISABLE
ENDIF
ENDIF
M17
這個程序在把所需傳送數(shù)據(jù)的地址存在1002,在數(shù)據(jù)交換區(qū)1004到1013處建立一個ANY結(jié)構(gòu),1000設(shè)為信號量。
5 PLC程序
6 試驗(yàn)結(jié)果分析
按照事先設(shè)定的試驗(yàn)方法,試驗(yàn)了PLC到NC變量,NC變量和PLC的1字節(jié),2字節(jié),4字節(jié)基本數(shù)據(jù)類型的數(shù)據(jù)交換,以及BOOL變量的傳輸及檢取,最后試驗(yàn)了數(shù)組和結(jié)構(gòu)體的傳輸。其中需要注意NC/PLC之間字節(jié)順序的不同,以保證數(shù)據(jù)傳送到預(yù)想的位置。
[參考文獻(xiàn)]
[1]SINUMERIK 840Dsl Basic Functions SIMENS.