現場總線技術及應用課件:非周期性數據的應用_第1頁
現場總線技術及應用課件:非周期性數據的應用_第2頁
現場總線技術及應用課件:非周期性數據的應用_第3頁
現場總線技術及應用課件:非周期性數據的應用_第4頁
現場總線技術及應用課件:非周期性數據的應用_第5頁
已閱讀5頁,還剩71頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

非周期性數據的應用7.1周期性數據和非周期性數據7.2ModbusRTU的非周期性數據7.3CANopen的非周期性數據7.4ProfibusDP的非周期性數據7.5工業以太網的非周期性數據小結思考與習題

知識目標

(1)了解非周期性數據的特征。

(2)理解不同通信協議非周期性數據的處理方法。

能力目標

(1)掌握各種通信協議非周期性數據功能塊的使用。

(2)掌握非周期性數據分析的方法。

7.1周期性數據和非周期性數據

現場總線應用中,周期性數據為現場設備的控制和監視提供支持,它也是現場應用中最常見、應用最多的數據類型。非周期性數據的應用相對較少,但它可以對現場設備的參數進行讀/寫的操作,也是我們必須要了解的一種數據類型。

周期性數據是指設備之間根據一定的周期來反復進行的訪問數據,并由控制者決定其開始及結束的時間。

周期性數據通常用于現場設備的控制和監視,因為控制和監視的數據本身需要反復進行,而不是訪問一次就可以的。

例如:控制變頻器時的頻率給定值就是需要不停地重復給定的,變頻器也會根據當前的頻率給定值來改變自身的輸出頻率,這樣一旦頻率給定值發生變化,變頻器的輸出頻率也會跟著立即變化;變頻器的輸出電流也是需要不停地重復讀出的,這樣我們才能知道電機運行的實時電流,并根據當前電流的大小及持續時間來判斷電機是否過載或欠載。周期性數據的周期是由上位機的掃描周期、通信的速率及收發器的性能決定的,它們的響應時間通常都很短,是毫秒甚至微秒級的,用以保證周期性數據的每一幀都能準確無誤地傳遞。周期性數據是整個通信數據中比例較大的部分,而且對速率的要求較高。

非周期性數據是指設備之間根據控制者的需求發起的一次或多次的訪問數據,并在每次成功訪問后結束。

非周期性數據通常用于現場設備的參數修改或讀取,這些修改或讀取通常只需要進行一次即可,因為修改或讀取成功即可進行其他的工作,不需要重復進行。一旦非周期性數據需要再次或多次訪問,重新申請一次或多次訪問即可。

例如,將變頻器的加速時間由出廠設置的3秒修改為30秒,只需要通過非周期性數據申請寫入,將加速時間修改為30秒并保存即可,修改成功之后無需重復寫入。非周期性數據訪問需要的時間一樣取決于上位機的掃描周期、通信的速率及收發器的性能,但由于非周期性數據通常對實時性的要求不是很高,所以對現場總線上設備的性能并沒有很高的要求。非周期性數據是整個通信數據中比例較小的部分,只在需要的時候發起并結束,對速率的要求不是特別高。

目前對現場設備的參數訪問中,有DTM、webserver等手段,也有很多設備本身就具有參數切換的功能,甚至有些現場也靠盡量縮短開始和結束之間的時間間隔來把周期性數據當作非周期數據來使用。再加上很多通信協議將非周期性數據的訪問定義得過于嚴苛和復雜,導致非周期性數據的應用越來越少。但非周期性數據的應用我們還是需要了解的,它對我們理解通信的內容和過程有很大的幫助。

7.2ModbusRTU的非周期性數據

ModbusRTU通信協議中并沒有定義如CANopen里的SDO、ProfibusDP里的PKW這類的非周期性數據,但是它也有方法可以將數據進行非周期性的讀/寫。我們將以施耐德M340的PLC和施耐德ATV71變頻器的ModbusRTU通信為例來說明兩種方法,即使用READ_VAR和WRITE_VAR功能塊以及使用DATA_EXCH功能塊。

7.2.1使用READ_VAR和WRITE_VAR功能塊

在第3章中,我們已經了解了使用READ_VAR和WRITE_VAR功能塊來對數據進行周期性讀寫的方法,如圖7-1所示。

從這段程序中我們可以看到,在令牌觸發的情況下,READ_VAR和WRITE_VAR功能塊就會開始工作,進行周期性數據的讀和寫的操作。

圖7-1Modbus中READ_VAR和WRITE_VAR

這種情況下想進行非周期性數據的讀/寫也很簡單,只需要在READ_VAR和WRITE_VAR功能塊前面再附加一個觸發條件就可以了,當觸發條件滿足時就開始讀/寫,當觸發條件失效時就停止讀/寫。例如,可以在READ_VAR功能塊的EN腳前面串聯一個M0的常開觸點,需要READ_VAR功能塊進行讀操作時就讓M0的觸點閉合,需要READ_VAR功能塊結束讀操作時就讓M0的觸點打開。M0的閉合和打開的時機完全可以由編程者自己決定,如定時進行、其他條件觸發進行、人為結束、成功讀取數據后結束等很多方法,這里不再贅述。

7.2.2使用DATA_EXCH功能塊

DATA_EXCH是一個用于數據傳輸的功能塊,在施耐德M340的CPU上,它可以用于將Modbus的請求發送到另一個設備。與READ_VAR及WRITE_VAR功能塊不同,DATA_EXCH更像是人為地傳輸一個或多個數據幀。

在“項目瀏覽器”→“項目”→“變量和FB實例”→“基本變量”中建立3個類型為INT的變量,如圖7-2所示。

圖7-2新建變量的界面

REG變量用于存放即將讀或寫的變頻器的寄存器地址;FUN用于存放讀或寫請求的Modbus功能碼;VAL用于存放讀出的值或即將寫入的值。

在“項目瀏覽器”→“項目”→“程序”→“任務”→“MAST”→“段”中新建一個FBD格式名為“DATA_EXCH”的程序,如圖7-3所示。

圖7-3新建DATA_EXCH程序

在理解這段程序之前,我們需要先回憶一下Modbus數據幀的格式。

(1)?03功能碼的消息格式如下:

主機請求

(2)

06功能碼的主機請求和從機應答的消息格式是相同的。格式如下:

DATA_EXCH功能塊的EMIS腳輸入的數據中不需要包含從站編號和CRC16校驗,對應之前建立的3個變量。DATA_EXCH功能塊的EMIS腳輸入的數據格式如下:

(1)?03功能碼的消息格式如下:

03功能碼和06功能碼對于DATA_EXCH功能塊的EMIS腳來說需要處理的消息格式是一致的。格式如下:

但是要注意,DATA_EXCH功能塊的EMIS腳輸入的要求是“低字節在前,高字節在后”,那么我們需要把剛才的消息格式按照從前到后的順序進行高低字節的位置互換。互換之后消息格式如下:

理解了EMIS腳輸入的消息格式后,我們就可以理解剛才的程序中前3個MOVE功能塊的功能了,如圖7-4所示。

圖7-4前3個MOVE功能塊

在程序中,我們看到DATA_EXCH功能塊的EMIS腳輸入的是%MW50、%MW51、%MW52這3個由INT型數組成的數組內的數據。在經過這3個MOVE功能塊的數據輸入后,%MW50、%MW51、%MW52里面存儲的數據如下:

其中REG&16#FF00表示變量REG和十六進制的FF00相與,即保留變量REG的高字節,因為一個字和十六進制的FF00相與即和1111111100000000相與,高字節的8位值會按原樣保留,低字節的8位會變為0。

同理,VAL&16#FF00可以保留VAL的高字節,REG&16#00FF可以保留REG的低字節,VAL&16#00FF可以保留VAL的低字節。

也就是說,經過前面的3個MOVE功能塊后,%MW50、%MW51、%MW52里面存儲的數據如下:

可以看到,這跟之前提到的DATA_EXCH的EMIS腳需求的輸入格式是一致的,前3個MOVE功能塊的作用就是把數據轉化為EMIS腳需求的格式。

第4個MOVE功能塊則要簡單得多,是將%MW103賦值5,如圖7-5所示。

圖7-5第4個MOVE功能塊

這一步的意義是,我們傳遞數據一共只使用了5個字節,第3個字的高字節沒有用到,我們必須要將使用的數據長度分配給GEST腳的第4個字即%MW103內,以保證數據傳輸的正常進行。

最后一步就是關鍵的DATA_EXCH功能塊,如圖7-6所示。

圖7-6DATA_EXCH功能塊

ADR對應的是需要傳輸的地址,我們通過一個ADDM功能塊將變頻器的地址“0.0.0.3”寫入。

TYP對應的是操作模式,對于M340我們輸入的值是1,代表傳輸數據后等待接收。

EMIS對應的是數據幀的一部分,這部分內容我們剛才已經做了詳細介紹。

GEST對應的是交換管理區,比較重要的就是它的第4個字。

RECP對應的是數據接收區,我們使用的是從%MW80開始的連續10個字。

在“項目瀏覽器”→“動態數據表”內新建一個動態數據表,如圖7-7所示。

圖7-7新建動態數據表界面

在PLC和變頻器正常連接后,于在線模式下,將REG修改為“3201”,VAL修改為“1”,FUN修改為“3”,如圖7-8所示。

圖7-8待機時的狀態字界面

立即讀取狀態字的值,讀取出來的結果顯示在%MW80、%MW81內的數據是十六進制的0203,3300。當然,這里的數據也是低字節在前高字節在后的,我們將高低字節內的數值互換,即得到正確的反饋信息是0302,0033。參考之前的Modbus反饋信息的格式,我們可知它表達的意思是讀到2個字節的值為0033,即變頻器處于待機狀態。

在變頻器處于RUN狀態下,讀取到的信息如圖7-9所示。

我們再將REG修改為9001,VAL修改為600,FUN修改為6,如圖7-10所示。

圖7-10修改加速時間的界面

就是請求將變頻器的9001即加速時間修改為600(即60秒),反饋的數據轉換后為十六進制的062329025800,即十進制的069001600,參數修改成功。

ATV71變頻器的參數在修改之后,如果希望在斷電并再次上電之后參數依然有效,需要對擴展控制字CMI的bit1置1,以將參數保存至變頻器的EEPROM。需要注意的是,在參數成功保存之后CMI的bit1會自動回零,一定不要重復地將其置1,因為EEPROM的壽命是有限的,重復的置1會導致變頻器的EEPROM快速損壞。

如果希望DATA_EXCH功能塊按照我們的需求只執行一次或有限次,可以按照之前在READ_VAR和WRITE_VAR里提到的方法,用一定的觸發條件來觸發及結束DATA_EXCH功能塊即可。

7.3CANopen的非周期性數據

CANopen中有定義專門用于非周期性數據的SDO類型,我們將以施耐德M340的PLC和施耐德ATV71變頻器來進行實驗,在M340中同樣可以使用READ_VAR和WRITE_VAR功能塊來實現CANopen的SDO讀/寫,只是引腳的輸入和Modbus略有不同。

本實驗中,我們使用的是BMXP3420102的CPU,它有一個自帶的CANopen接口,將其連接至變頻器的CANopen接口即可,變頻器的地址設置為3,PLC的CANopen網絡組態中一樣將變頻器的地址組態設置為3。

在“項目瀏覽器”→“變量和FB實例”→“基本變量”中新建以下變量,如圖7-11所示。圖7-11新建變量界面

我們將M1和M2分別放置于READ_VAR和WRITE_VAR功能塊的前端,用于觸發讀和寫的操作,它們的變量類型為BOOL。REG1和REG2在程序中用于輸入讀或寫的變頻器的寄存器地址,它們的變量類型為DINT,因為SDO的CANopen地址包含索引和子索引,需要占用兩個字。

在“項目瀏覽器”→“程序”→“任務”→“MAST”→“段”中新建名為“READWRITE”的LD格式程序。輸入讀的程序如圖7-12所示。

圖7-12新建讀程序

M1用于觸發READ_VAR功能塊。

ADR腳對應的是CANopen從站即變頻器的地址,我們需要使用一個ADDM的命令來輸入“0.0.2.3”,0.0.2對應的是CPU上自帶的CANopen接口,3對應的是變頻器的CANopen地址。

OBJ腳對應的是讀取的數據類型,由于我們需要讀取的是SDO數據,這里輸入“sdo”,這點和Modbus是不同的。

NUM腳對應的是讀取的寄存器地址,這里輸入之前建立的變量REG1。需要注意的是,這個地址對應的是CANopen的地址即包含索引和子索引,而且它是“低字在前,高字在后”,在修改REG1的值時需要把子索引放在前面,索引放在后面。

NB腳對應的是需要讀取的寄存器偏移量,這里設置為0。

GEST腳對應的是數據交換管理表,這里輸入一個從%MW200開始長度為4的數組來存放交換管理表。

RECP腳對應的是讀操作后的數據接收區,這里輸入一個從%MW100開始長度為16的數組來存放接收到的數據。

在“READWRITE”程序中輸入寫的程序,如圖7-13所示。圖7-13新建寫程序

M2用于觸發WRITE_VAR功能塊。

ADR腳對應的是CANopen從站即變頻器的地址,輸入一個和READ_VAR功能塊中一樣的地址ADDM(‘0.0.2.3’)。

OBJ腳對應的是寫入的數據類型,由于我們需要寫入的是SDO數據,這里輸入“sdo”,和READ_VAR功能塊中一樣。

NUM腳對應的是寫入的寄存器地址,這里輸入之前建立的變量REG2,一樣是“低字在前,高字在后”,在修改REG2的值時同樣需要把子索引放在前面,索引放在后面。

NB腳對應的是需要寫入的寄存器偏移量,這里設置為0。

EMIS腳對應的是需要寫入寄存器的值,這里使用了一個從%MW300開始長度為2的數組來輸入要寫入的值。

GEST腳對應的是數據交換管理表,這里輸入一個從%MW400開始長度為4的數組來存放交換管理表。需要注意的是,WRITE_VAR功能塊有一點不同的地方是必須要從

GEST中指定寫入的數據長度,否則寫操作不能正常進行。本例中,我們需要在%MW403中輸入2,即數據長度為2個字節。

在“項目瀏覽器”→“動態數據表”中新建一個數據表,如圖7-14所示。

圖7-14新建數據表界面

從變頻器的通信地址表中查到狀態字ETA的CANopen地址為6041/00,即索引6041,子索引00。在數據表中將REG1的值修改為“16#0000_6041”(子索引在前,索引在后),M1的值修改為“1”,可以看到%MW100讀出的值為“16#0033”,狀態字顯示變頻器處于待機狀態,如圖7-15所示。

圖7-15讀取狀態字的界面

從變頻器的地址表中查到加速時間ACC的CANopen地址為16#203C/2,即索引203C,子索引2。在數據表中將REG2的值修改為“16#0002_203C”(子索引在前,索引在后),%MW403的值修改為“2”(寫入數據的長度),%MW300的值修改為“600”(即60秒),M2的值修改為“1”,如圖7-16所示。

圖7-16修改加速時間的界面

7.4ProfibusDP的非周期性數據

我們使用的實驗設備是西門子S7-300的PLC和施耐德ATV340的變頻器,在組態過程中將ATV340添加至ProfibusDP網絡后,將其PPO數據類型選擇為Telegram100(4PKW/2PZD),如圖7-17所示。圖7-17PPO數據類型選擇的界面

從組態界面中我們可以看到,“I地址”和“Q地址”中的“50...57”的8個字節即4個字就是PKW,而“I地址”和“Q地址”中的“58...61”的4個字節即2個字就是PZD。需要注意的是,施耐德變頻器的Telegram100是特定的報文格式,它的PKW定義及訪問和其他Profidrive設備是不同的。它的輸入PKW區定義如表7-1所示。

從它的輸入和輸出的PKW區定義可以看到,和PZD同自己映射的數據一一對應不同,PKW的讀和寫是由多個字配合完成的,每個字都有自己不同的功能。輸入和輸出的PKW1都用于存放需要讀或寫的參數所對應的Modbus地址;輸入的PKW2用于存放當前操作的請求是讀或寫,輸出的PKW2用于存放請求的響應進度;輸入的PKW3、PKW4用于存放需要寫入的值,輸出的PKW3、PKW4用于存放請求成功之后的值。

在對PKW進行訪問時,需要使用西門子PLC內置的SFC58和SFC59即WR_REC寫數據記錄和RD_REC讀數據記錄這兩個模塊。在主程序OB1中添加程序,如圖7-18所示。

圖7-18添加程序圖7-18添加程序

程序段1中,通過MOVE指令將十六進制的值32即十進制的值50寫入到寄存器%MW16中,用以對應PKW的起始地址50。

程序段2中,通過WR_REC功能塊將寄存器%MW4中存儲的參數的Modbus邏輯地址寫入到PKW中。

程序段3中,通過RD_REC功能塊將程序段2中對應的參數的Modbus邏輯地址的值讀出,并存儲在%MW6中。

程序段4中,通過WR_REC功能塊將寄存器?%MW8中存儲的值寫入到程序段2中對應的參數的Modbus邏輯地址中。

需要注意的是,RD_REC功能塊和WR_REC功能塊都是對PKW區整體操作的,其在程序中不同的位置實現的功能可能不同,具體操作值的對應關系請參考之前PKW區的定義。

在博圖軟件中新建監控表如圖7-19所示。

圖7-19新建監控表的界面

從變頻器的通信地址表我們得知ATV340變頻器的參數“加速時間”的邏輯地址為9001,在監控表中將?%MW4的修改值設置為9001刷新,并將?%MW0.0強制為TRUE,將9001發送到PKW中;再將?%MW0.1強制為TRUE,即可讀出當前9001的值顯示在?%MW6中,顯示為30(即3秒),如圖7-20所示。

圖7-20讀取加速時間的界面

再次將?%MW8的修改值設置為300刷新,并將%MW0.2強制為TRUE,即可將300(即30秒)寫入到9001中,從?%MW6的讀取值變為300可以看到修改成功,如圖7-21所示。

圖7-21寫入加速時間的界面

使用同樣的方法,可以通過修改這幾個寄存器的值來實現對變頻器其他參數的讀/寫。如讀取狀態字3201的值,如圖7-22所示。

圖7-22讀取狀態字的界面

當然,狀態字3201的值是只讀的,不可寫。

如果需要設置的參數在變頻器斷電后能夠保存,和Modbus通信中的操作一樣需要將擴展控制字的對應位賦值,這里不再贅述。

從監控表的操作中可以看到,PKW對參數的讀或寫的操作是通過寄存器的一次次賦值以及將?%M0.0、%M0.1、%M0.2強制為TRUE來執行的,當?%M0.0、%M0.1、%M0.2強制為FALSE后即操作結束,并不會跟隨PLC的掃描周期反復進行,這就是非周期性數據的典型特征。

7.5工業以太網的非周期性數據

在前面的章節我們提到工業以太網和很多通信協議的應用層都是類似的,如ModbusTCP和ModbusRTU,在非周期性數據的處理上,它們也有很多是類似的。

ModbusTCP和ModbusRTU類似,在處理非周期性數據時,可以使用READ_VAR和WRITE_VAR功能塊,也可以使用DATA_EXCH功能塊。

EthernetIP在處理非周期性數據時,可以使用和周期性數據類似的方法再加上附加的觸發條件即可,即人為控制周期性數據的開始和結束,不讓數據跟隨著循環周期不斷地刷新;也可以使用DATA_EXCH功能塊。

Profinet在處理非周期性數據時,和ProfibusDP類似,用PKW的讀/寫辦法即可。

總而言之,工業以太網的非周期性數據的處理可以參考本章之前的一些方法,它們只是在網絡組態及功能塊的部分引腳定義上面有所不同,這里不再贅述。

本章通過實驗介紹了多個不同的通信協議訪問非周期性數據的方法,但是不同的上位機和受控設備在非周期性數據的處理方法上也許是不同的,本章介紹的方法只能針對對應的型號。

非周期性數據通常用于受控設備參數的讀/寫,這種方式在目前的很多上位機中都是

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論