3. PLC對高速數據交換區的訪問
PLC使用FC21 T r a n s f e r訪問高速數據交換區。其中: E n a b l e —— 啟動傳送;Funct——WORD類型,等于3是讀取操作,等于4是寫入操作;S7Var——Any類型,指定PLC存儲地址;IVAR1——INT類型,指定高速數據交換區的訪問地址;IVAR2——INT 類型,指定信號量;Error——BOOL類型,等于1則程序出錯;ErrCode——出錯時存儲錯誤代碼。程序如下:
CALL"Transfer"
Enable :=TRUE
Funct :=B#16#3
S7Var :=P#L 0.0 INT 7
IVAR1 :=1000
IVAR2 :=1001
Error :=#error
ErrCode:=#errcode
A n y類型中分別指定起始地址、數據類型和重復次數。P#L0.0 INT 7解釋為起始地址L0.0,數據類型INT,重復次數7。IVAR1=1000高速數據交換區的訪問地址是$A_DBB[1000]。
上文程序從$A_DBB[1000]起始讀取7個整數,存儲到L0.0起始的7個INT即LW0到LW7。
4. 字節順序
NC和PLC的字節順序是不同的。NC字節順序:16位高8位在后,低8位在前;32位高16位在后,低16位在前。PLC字節順序與之相反。FC21運行時會根據數據類型轉換字節順序,使傳輸的數值保持正確。在編程時要注意這一點。例如:LW0存儲16進制數 270E,LB0存儲27,LB1存儲0E;傳送到$A_DBW[0],則$A_DBB[0]存儲0E,$A_DBB[1]存儲27。
5. 信號量
信號量確保N C和P L C之間如有一方對一段地址連續訪問, 則禁止另一方訪問這段地址。信號量在FC21的IVAR2 中指定,VAR2=1001即指定$A_DBB[1001]為信號量。
使用信號量時的讀寫過程:PLC——只有在信號量等于1時對數據區讀寫,讀寫完成后把信號量置0,由FC21執行。NC——只有在信號量等于0時對數據區讀寫, 讀寫完成后把信號量置1 。使用同步動作執行。例如WHENEVER $A_DBB[1001]==1DO RDISABLE ,當信號量等于1時讀入禁止。
6. 從PLC向NC傳送BOOL信號
為了使BOOL信號傳送到NC,可把多個BOOL信號保存在字節變量中,然后向NC傳送這個字節變量。NC使用位指令檢測相應的位。
例如:PLC把某開關信號賦值給L0.3,然后通過FC21把LB0傳送給$A_DBB[0]。NC使用位指令檢測第三位,即($A_DBB[0]B_AND'B00001000'),如果開關BOOL量等于1,($A_DBB[0]B_AND 'B00001000')不等于0;如果開關BOOL量等于0,( $A_DBB[0] B_AND'B00001000')等于0。
從PLC與NC傳送數組或結構:傳送數組在S7Var中把數組的起始地址、數據類型和數據長度指定即可。由于NC和PLC字節順序不同,對于結構則應對其內部各變量逐個按其類型傳送。PLC編程時結構和數組可直接賦值給ANY類型的參數,但變量類型為BYTE,有可能在字節順序上出錯。
7. NC向PLC任意傳送數據的試驗
NC向PLC傳送數據,首先NC把數據寫入數據交換區,然后PLC從數據交換區讀取數據。PLC要想取得數據首先要知道數據的起始位置、數據量,讀到哪里,這些信息必須在編寫PLC程序時在FC21參數S7Var和IVAR1指定。
使NC向PLC任意位置傳送數據的方法如下:首先NC把需要傳送的數據寫入數據交換區并寫入數據的起始位置,然后在數據交換區指定位置建立一個ANY結構指定PLC地址數據、類型和數量;PLC調用1個FC21讀取數據的起始位置和ANYA結構;PLC調用第2個FC21以第1個FC21讀取的起始位置和ANYA為參數讀取。
圖4所示為把所需傳送數據的地址存在1002,在交換區1004到1013處建立一個ANY結構,1000設為信號量。圖5所示為兩次調用FC21。圖6所示為臨時變量表,第1次調用的FC21 的P#L0.0 INT 7涵蓋了變量c t r、Departure和Destination。在第2次調用FC21時使用這些變量。
圖4
圖5
圖6
8. 結語
如果您有機床行業、企業相關新聞稿件發表,或進行資訊合作,歡迎聯系本網編輯部, 郵箱:skjcsc@vip.sina.com