浙大中控DCS培訓教程-站間通訊ppt課件.ppt_第1頁
浙大中控DCS培訓教程-站間通訊ppt課件.ppt_第2頁
浙大中控DCS培訓教程-站間通訊ppt課件.ppt_第3頁
浙大中控DCS培訓教程-站間通訊ppt課件.ppt_第4頁
浙大中控DCS培訓教程-站間通訊ppt課件.ppt_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、控制方案的設計,高級組態(tài)維護培訓班,一、編程小案例,兩種方法的比較: 組態(tài)中實現(xiàn):精度高 程序中實現(xiàn):靈活,控制站間的數(shù)據(jù)交換,控制站間的數(shù)據(jù)交換,對于一個較大的系統(tǒng),往往無法做到將程序需要調用的位號集中在一個控制站中。這里,就需要進行數(shù)據(jù)的站間調用。,控制站間的數(shù)據(jù)交換,為了實現(xiàn)在控制站間交換數(shù)據(jù),每個控制站開辟了一片共享數(shù)據(jù)區(qū),用以存放共享數(shù)據(jù)。數(shù)據(jù)區(qū)內有128*4個字節(jié)描述為 LONG g_msg128 (在SCControl中數(shù)據(jù)類型為DWORD)。為了最靈活經濟的使用這片數(shù)據(jù)區(qū),系統(tǒng)定義了一系列函數(shù)處理各種數(shù)據(jù)類型從數(shù)據(jù)區(qū)的放入和取出。通過sendmsg和getmsg執(zhí)行發(fā)送和接收工

2、作。,控制站間的數(shù)據(jù)交換,假如現(xiàn)在系統(tǒng)中有4個控制站,其中2號站需要調用1號站的一些數(shù)據(jù),那么,讓我們一起來看看實現(xiàn)數(shù)據(jù)交換的步驟,控制站間的數(shù)據(jù)交換,首先,在1號站內編制一段程序,通過程序把需要被調用的數(shù)據(jù)存放在本站點的數(shù)據(jù)共享區(qū)中,然后把這些共享數(shù)據(jù)發(fā)送到系統(tǒng)的過程控制網(wǎng)上。 這一次的數(shù)據(jù)發(fā)送是采用廣播式的發(fā)送,也就是不特別指明發(fā)送到哪一個控制站中。 以上為被調用數(shù)據(jù)的站點上進行的操作。,控制站間的數(shù)據(jù)交換,接著,在接受數(shù)據(jù)的2號控制站中我們也要編制一段程序,將指定的1號控制站發(fā)送的數(shù)據(jù)接收到本站點中。 接收過來的數(shù)據(jù)可以在本站點中任意使用。,控制站間的數(shù)據(jù)交換,例子:地址為2的控制站中有

3、以下的一些數(shù)據(jù)需要在地址為4的控制站中使用,這些數(shù)據(jù)分別是:地址2號控制站中氧化爐溫度TI-101,空氣流量FI-101,反應罐液位LI-101,電機1狀態(tài)DI-101,電機2狀態(tài)DI-102,電機3狀態(tài)DI-103,電機4狀態(tài)DI-104。 如何實現(xiàn)?,控制站間的數(shù)據(jù)交換,根據(jù)系統(tǒng)規(guī)定,模擬量位號在系統(tǒng)內以2字節(jié)的半浮點(sfloat)數(shù)據(jù)類型存放,開關量以布爾(bool)數(shù)據(jù)類型存放。對于g_msg變量,每一個g_msg分別可以利用它的高16位和低16位存放2個半浮點型或整型的2字節(jié)變量;若是布爾型的數(shù)據(jù),g_msg的每一位可以存放一個布爾量,也就是每個g_msg變量可以存放32個布爾量(

4、開關量);對于像浮點型(float)這樣的本身就占用4個字節(jié)的變量,每個g_msg只能存放一個。,控制站間的數(shù)據(jù)交換,經分析,需要發(fā)送的數(shù)據(jù)有模擬量位號3個,開關量位號4個。 在這里,根據(jù)題目要求,我們使用兩個g_msg變量,其中的一個g_msg存放題目中要求的2個模擬量位號,正好占用了4個字節(jié),另一個g_msg存放題目中的另一個模擬量位號(2個字節(jié))和4個開關量(4位)。,控制站間的數(shù)據(jù)交換,發(fā)送: 那么,在地址為2的控制站中,編寫一段程序,程序中,將個模擬量和個開關量分別存放在個g_msg變量中,為了方便起見,程序中使用了g_msg0和g_msg1 。然后將這兩個g_msg發(fā)送出去。,控制

5、站間的數(shù)據(jù)交換,Setsfloat函數(shù)是向長整數(shù)中放sfloat數(shù)據(jù)的函數(shù)。 y=setsfloat(長整型數(shù)據(jù),半浮點數(shù)據(jù),或); 長整型數(shù)據(jù)為被寫的數(shù)據(jù)源, 半浮點的數(shù)據(jù)為所需存放的數(shù)據(jù), 表示在長整型數(shù)據(jù)的低位上存放數(shù)據(jù), 表示在長整型數(shù)據(jù)的高位上存放數(shù)據(jù)。 函數(shù)運算的結果就是向長整數(shù)中放sfloat數(shù)據(jù)。,控制站間的數(shù)據(jù)交換,Setbit函數(shù)是向長整數(shù)中放bool數(shù)據(jù)的函數(shù)。 y=setbit(長整型數(shù)據(jù),bool數(shù)據(jù),0、131); 長整型數(shù)據(jù)為被寫的數(shù)據(jù)源, bool數(shù)據(jù)為所需存放的數(shù)據(jù), 0、131表示在長整型數(shù)據(jù)的哪一位上存放數(shù)據(jù), 函數(shù)運算的結果就是向長整數(shù)中放bool數(shù)據(jù)。

6、,控制站間的數(shù)據(jù)交換,Sendmsg為設置向其他控制站發(fā)消息的數(shù)目的函數(shù)。 sendmsg(所需發(fā)送msg的數(shù)量);,控制站間的數(shù)據(jù)交換,g_msg0 = 0; g_msg1 = 0; g_msg0 = setsfloat( g_msg0 , _TAG(TI-101).PV, 0); g_msg0 = setsfloat( g_msg0 , _TAG(FI-101).PV, 1); g_msg1 = setsfloat( g_msg1 , _TAG(LI-101).PV, 1); g_msg1 = setbit( g_msg1 , _TAG(DI-101).PV, 0); g_msg1 = s

7、etbit( g_msg1 , _TAG(DI-102).PV, 1); g_msg1 = setbit( g_msg1 , _TAG(DI-103).PV, 2); g_msg1 = setbit( g_msg1 , _TAG(DI-104).PV, 3); sendmsg(2);,控制站間的數(shù)據(jù)交換,控制站間的數(shù)據(jù)交換,SETSFLOST模塊的功能是在輸入的32位DWORD型變量的指定位置設置16位的SFLOAT值,再賦給輸出值。其中,SFLOAT型在計算機中以定點法存儲,在指定位置設置后,整體以DWORD型傳送。,輸入引腳X上連接了一個DWORD變量, 輸入引腳SF上連接的就示需要在其他

8、站點上被調用的數(shù)據(jù)位號, 輸入引腳SERIAL上連接的數(shù)字表示該半浮點位號在雙字的g_msg變量中存放的位置序號(0表示放在低16位,1表示放在高16位)。 將所需的數(shù)據(jù)存儲在DWORD變量指定位置后,將數(shù)值改變后的DWORD變量從輸出引腳Y輸出。,控制站間的數(shù)據(jù)交換,SETBIT模塊的功能與前面的模塊類似,是在輸入的DWORD型值的指定位置設置開關數(shù)據(jù),再賦給輸出值。也就是,在已存在的DWORD型值的某一位上設置開關數(shù)據(jù),其余不變,然后輸出。,輸入引腳X上連接了一個DWORD變量, 輸入引腳Q上連接的就示需要在其他站點上被調用的數(shù)據(jù)位號, 輸入引腳SERIAL上連接的數(shù)字表示該布爾型位號在雙

9、字的g_msg變量中存放的位置序號(0表示放在最低位,31表示放在最高位)。 將所需的數(shù)據(jù)存儲在DWORD變量指定位置后,將數(shù)值改變后的DWORD變量從輸出引腳Y輸出。,控制站間的數(shù)據(jù)交換,SENDMSG模塊的功能是通知發(fā)送消息的個數(shù)。SIZE定義消息的個數(shù),消息內容放在g_msg中。,控制站間的數(shù)據(jù)交換,控制站間的數(shù)據(jù)交換,接收: 接著我們需要在接受數(shù)據(jù)的站點地址4號控制站編寫接受數(shù)據(jù)的程序。本站點需要接受的數(shù)據(jù)就是地址2號控制站發(fā)送出來的兩個g_msg變量g_msg0和g_msg1 。,控制站間的數(shù)據(jù)交換,Getmsg為從其他控制站取消息的函數(shù)。 y = getmsg(控制站地址,所接收的

10、msg號);,控制站間的數(shù)據(jù)交換,Getsfloat為從長整數(shù)中取半浮點數(shù)的函數(shù)。 y= getsfloat(長整型數(shù)據(jù), 或); 長整型數(shù)據(jù)為取數(shù)據(jù)的數(shù)據(jù)源,一般的,就是我們從其它控制站中取來的數(shù)據(jù)。 表示從長整型數(shù)據(jù)的低位上取數(shù)據(jù), 表示從長整型數(shù)據(jù)的高位上取數(shù)據(jù)。,控制站間的數(shù)據(jù)交換,Getbit函數(shù)是從長整數(shù)中取BOOL數(shù)據(jù)的函數(shù)。 y=getbit(長整型數(shù)據(jù), 0、131); 長整型數(shù)據(jù)為取數(shù)據(jù)的數(shù)據(jù)源,一般的,就是我們從其它控制站中取來的數(shù)據(jù), 0、131表示從長整型數(shù)據(jù)的哪一位上取數(shù)據(jù)。,控制站間的數(shù)據(jù)交換,long msg0,msg1; sfloat TI101,FI101,

11、LI101; bool DI101,DI102,DI103,DI104; msg0=getmsg(2,0); msg1=getmsg(2,1); TI101=getsfloat(msg0,0); FI101=getsfloat(msg0,1); LI101=getsfloat(msg1,1); DI101=getbit(msg1,0); DI102=getbit(msg1,1); DI103=getbit(msg1,2); DI104=getbit(msg1,3);,控制站間的數(shù)據(jù)交換,GETMSG模塊的功能是從其他控制站取傳送過來的消息。 STATION引腳為控制站號,填寫控制站的地址。 S

12、ERIAL引腳為消息序號,填寫所接受的msg序號。 MSG引腳輸出的是接受到的消息。,控制站間的數(shù)據(jù)交換,GETSFLOST模塊的功能是從輸入的32位DWORD型值的指定位置取16位的SFLOAT型值。其中,在計算機中,SFLOAT型用定點表示法表示。SERIAL=0,取低16位;SERIAL=1,取高16位。,輸入引腳X上連接了一個DWORD變量, 即為取數(shù)據(jù)的數(shù)據(jù)源。 輸入引腳SERIAL上連接的數(shù)字表示從雙字的變量中取半浮點數(shù)的位置序號(0表示從低16位取數(shù),1表示從高16位取數(shù))。 取出的半浮點數(shù)從輸出引腳Y輸出。,控制站間的數(shù)據(jù)交換,GETBIT模塊的功能與前面的模塊類似,是從輸入的DWORD型值的指定位置取BOOL數(shù) 。,輸入引腳X上連接了一個DWORD變量, 即為取數(shù)據(jù)

溫馨提示

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

評論

0/150

提交評論