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