




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、、組態(tài)軟件 二、C語(yǔ)言基礎(chǔ)1. WINCC中的語(yǔ)言Wince語(yǔ)言由C腳本(C-script )和B腳本(VB-script )組成。WINCC中 C腳本:(1) C動(dòng)作(在畫(huà)布中編輯的程序代碼)。( 2)全局腳本編輯器:項(xiàng)目函數(shù)、標(biāo)準(zhǔn)函數(shù)和內(nèi)部函數(shù)。項(xiàng)目函數(shù):自定義本項(xiàng)目(保護(hù)性)標(biāo)準(zhǔn)函數(shù):編輯好供 C動(dòng)作調(diào)用內(nèi)部函數(shù):(微軟)自定義編輯函數(shù)在項(xiàng)目函數(shù)中例如: #pragma()int NEW_Add (int a; in b)int c;c=a+b;return c;2. WINCC中的(Tag)變量 程序使用的變量(書(shū)上 P31-35)變量:C變量、WINCC變量C變量:int(數(shù)值型)、
2、char(字符型)、BOOL布爾型)-也就是二進(jìn)制(為常用)WINCC變量:word(數(shù)值型)、char(字符型)、Bit(布爾型)(為常用)常用變量如下:布爾型: SetTagBit( 參數(shù) 1,參數(shù) 2) 、GetTagBit( 參數(shù))數(shù)值型:SetTagWord(參數(shù) 1,參數(shù) 2)、GetTagWord(參數(shù))字符型: SetTagChar( 參數(shù) 1 ,參數(shù) 2) 、 GetTagChar( 參數(shù) )參數(shù)1:變量名。參數(shù)2:具體要求。例如參數(shù)1為液位,參數(shù)2為a舉例 1 二進(jìn)制變量“啟動(dòng)”控制電機(jī)啟停BOOL a;a= GetTagBit( “啟動(dòng)” );if(a=0)SetTagB
3、it( “啟動(dòng)”,1);舉例 2 二進(jìn)制變量“啟動(dòng)”控制電機(jī)啟停BOOL a;static int i=0;( 類似 int i; i=0;)a= GetTagBit( “啟動(dòng)” );if(a=0)i+;兩者區(qū)別:不加 static加 static啟動(dòng)一次 i=1啟動(dòng)一次 i=1啟動(dòng)二次 i=1啟動(dòng)二次 i=2啟動(dòng)三次 i=1啟動(dòng)三次 i=3啟動(dòng)四次 i=1啟動(dòng)四次 i=43.WINCC中的運(yùn)算符3.WINCC中的常用語(yǔ)句三、變量組態(tài)WINCC中的變量分為:內(nèi)部變量、外部變量和C動(dòng)作(函數(shù)中的變量)1. 利用變量進(jìn)行增減計(jì)數(shù)步驟 1:進(jìn)行畫(huà)面構(gòu)建,需要兩個(gè)按鈕和一個(gè)輸入輸出域(屬性調(diào)整 - )
4、(變量、 有變化時(shí)、輸出) 。新建內(nèi)部變量,命名為“計(jì)數(shù)” ,屬性為無(wú)符 16 位。如下圖 所示;步驟2:在名字為“啟動(dòng)增加”的按鈕中-屬性-事件-鼠標(biāo)左鍵C動(dòng)作: unsigned short a;a=GetTagWord(" 計(jì)數(shù) ");a+;SetTagWord(" 計(jì)數(shù) ",a);步驟3:在名字為“啟動(dòng)減少”的按鈕中-屬性-事件-鼠標(biāo)左鍵C動(dòng)作: unsigned short a;a=GetTagWord(" 計(jì)數(shù) ");a-;SetTagWord(" 計(jì)數(shù) ",a);2. 利用變量進(jìn)行增減計(jì)數(shù)(帶有步長(zhǎng)控
5、制) ,可定義步長(zhǎng)步驟 1:進(jìn)行畫(huà)面構(gòu)建,需要兩個(gè)按鈕和兩個(gè)輸入輸出域(屬性調(diào)整 - )(變量為 計(jì)數(shù)、有變化時(shí)、輸出)步長(zhǎng)對(duì)應(yīng)的輸入輸出域(屬性調(diào)整 -)(變量為步長(zhǎng)、 有變化時(shí)、 輸入)。新建 2 個(gè)內(nèi)部變量, 命名為“計(jì)數(shù)” 和“步 長(zhǎng)”,屬性為無(wú)符 16 位。如下圖所示;unsigned short a;unsigned short b;a=GetTagWord(" 計(jì)數(shù) 1");b=GetTagWord(" 步長(zhǎng)");a=a+b;SetTagWord(" 計(jì)數(shù) 1",a);步驟3:在名字為“啟動(dòng)減少”的按鈕中-屬性-事件-鼠
6、標(biāo)左鍵C動(dòng)作: unsigned short a; unsigned short b;a=GetTagWord(" 計(jì)數(shù) 1");b=GetTagWord(" 步長(zhǎng)");a=a-b;SetTagWord(" 計(jì)數(shù) 1",a);步驟 4:如果調(diào)整步長(zhǎng),可直接輸入3. 利用變量進(jìn)行電機(jī)啟動(dòng) 新建內(nèi)部變量,命名為“起?!?,屬性為無(wú)符 16 位。在名字為“啟?!钡陌粹o中-屬性-事件-鼠標(biāo)左鍵C動(dòng)作:BOOL a;a二GetTagWord("起停");if(a=0)SetTagWord(" 起停",1)
7、;if(a=1)SetTagWord(" 起停 ",0);4. 利用變量進(jìn)行 windows 窗口對(duì)象的修改四、畫(huà)面組態(tài)5. 畫(huà)面的切換方法 1:利用直接連接切換單個(gè)畫(huà)面,即為在下圖中“單擊鼠標(biāo)改變畫(huà)面”的部 分點(diǎn)擊鏈接到所要去的畫(huà)面。組態(tài)完畢后,點(diǎn)擊按鈕即可達(dá)到。方法 2:通過(guò)對(duì)象名稱和畫(huà)面名稱的變量連接打開(kāi)畫(huà)面。在書(shū)上P101方法 3:通過(guò)內(nèi)部函數(shù)打開(kāi)畫(huà)面。在按鈕屬性中事件中鼠標(biāo)左鍵中 C 動(dòng)作利用軟件內(nèi)部函數(shù)輸入程序如 下:OpenPrevPicture (" 畫(huà)面名稱 ");6. 利用畫(huà)面窗口顯示畫(huà)面方法: SetVisible(" 畫(huà)
8、面名稱 "," 對(duì)象名稱 ",1 或 0);SetVisible 表示可見(jiàn)度;畫(huà)面名稱表示畫(huà)面的名字,例如 1.pdl 等;對(duì)象名稱 表示“畫(huà)面窗口 n”“畫(huà)面窗口 n”在智能對(duì)象中;1或0表示可見(jiàn)或不可見(jiàn)。步驟: 第一步: 新建三個(gè)畫(huà)面, 1.pdl 、 2.pdl 、 3.pdl 。目的將 2.pdl 、3.pdl 在 1.pdl 中通過(guò)按鈕的控制顯示出來(lái);第二步: 分別在 2.pdl 、 3.pdl 中組態(tài)一個(gè)目標(biāo)物;第三步:在 1.pdl 中組態(tài)兩個(gè)按鈕和兩個(gè)畫(huà)面窗口控件(名稱為畫(huà)面窗口1、畫(huà)面窗口 2),在智能對(duì)象中找到“畫(huà)面窗口” ,更改畫(huà)面窗口屬性(
9、屬性 幾何 寬度為 246,高度為 129;屬性 - 其它 - 邊框改為是,顯示改為否,畫(huà)面名稱添加 2.pdl 或 3.pdl ); 第四步: 將 2.pdl 、 3.pdl 畫(huà)面的大小調(diào)整為和兩個(gè)畫(huà)面窗口一樣大;第五步: 進(jìn)行按鈕組態(tài),在按鈕屬性中事件中鼠標(biāo)左鍵中 C 動(dòng)作中編寫(xiě)程序如 下:按鈕 1:SetVisible("1.pdl","畫(huà)面窗口1",1);SetVisible("1.pdl","畫(huà)面窗口2",0);按鈕 2:SetVisible("1.pdl","畫(huà)面窗口1&q
10、uot;,0);SetVisible("1.pdl","畫(huà)面窗口2",1);7. 畫(huà)面窗口屬性 時(shí)控顯示這個(gè)技巧功能是對(duì)上一個(gè)的繼承,最終結(jié)果就是將三個(gè)畫(huà)面循環(huán)顯示。 步驟: 第一步: 新建四個(gè)畫(huà)面, 1.pdl 、2.pdl 、3.pdl 、 4.pdl 。目的將 2.pdl 、 3.pdl 、4.pdl 在 1.pdl 中通過(guò)按鈕的時(shí)間控制顯示出來(lái); (這里并非按鈕按下顯 示,系統(tǒng)運(yùn)行自動(dòng)顯示)第二步: 分別在 2.pdl 、 3.pdl 、 4.pdl 中組態(tài)一個(gè)目標(biāo)物;第三步: 在 1.pdl 中組態(tài)一個(gè)按鈕和三個(gè)畫(huà)面窗口控件(名稱為畫(huà)面窗口1、
11、畫(huà)面窗口 2、畫(huà)面窗口 3),在智能對(duì)象中找到 “畫(huà)面窗口”,更改畫(huà)面窗口屬性 (屬 性 幾何 寬度為 246,高度為 129;屬性 其它 邊框改為是,顯示 改為否,畫(huà)面名稱添加 2.pdl 或 3.pdl 或 4.pdl );第四步: 將 2.pdl 、3.pdl 、 4.pdl 畫(huà)面的大小調(diào)整為和三個(gè)畫(huà)面窗口一樣大; 第五步: 進(jìn)行按鈕組態(tài),在按鈕屬性中幾何中寬度中(假如寬度為70) C 動(dòng)作中編寫(xiě)程序如下:static int a=0;a+;if(a=1)SetVisible("1.pdl","SetVisible("1.pdl",&qu
12、ot;SetVisible("1.pdl"," if(a=2)SetVisible("1.pdl","SetVisible("1.pdl","SetVisible("1.pdl"," if(a=3)SetVisible("1.pdl","SetVisible("1.pdl","SetVisible("1.pdl"," a=0;return 70;畫(huà)面窗口 3",1);畫(huà)面窗口
13、4",0);畫(huà)面窗口 5",0);畫(huà)面窗口 3",0);畫(huà)面窗口 4",1);畫(huà)面窗口 5",0);畫(huà)面窗口 3",0);畫(huà)面窗口 4",0);畫(huà)面窗口 5",1);觸發(fā)器調(diào)整為1S中,即為間隔1S閃爍顯示。8. 動(dòng)畫(huà)旋轉(zhuǎn)組態(tài)(例如風(fēng)扇轉(zhuǎn)動(dòng))這個(gè)技巧是為了組態(tài)一個(gè)旋轉(zhuǎn)的動(dòng)畫(huà),例如工業(yè)上的攪拌機(jī)等。舉例如下:步驟 1:組態(tài)基本畫(huà)面,可以在顯示庫(kù)中尋找,也可以自己繪制。,然800)顯示庫(kù):從顯示庫(kù)中調(diào)用,若使用,首先將元件導(dǎo)出(注意保存) 后將元件刪掉,然后再導(dǎo)入(插入)這個(gè)元件,便可以進(jìn)行調(diào)整(折開(kāi)、組裝、 編組)注
14、意,編組時(shí)必須至少兩個(gè)一組。自己繪制:例如矩形、圓等(注意屬性的調(diào)整)全選編組。例如編為 4個(gè)組:組 1、組 2、組 3、組 4步驟 2:程序的編寫(xiě) 在畫(huà)布屬性 - 幾何 - 寬度(如果此時(shí)寬度為-C 動(dòng)作:static int a=0;a+;if(a=1)SetVisible("1.pdl","組 1",1);SetVisible("1.pdl","組 2",0);SetVisible("1.pdl","組 3",1);SetVisible("1.pdl"
15、;,"組 4",0);if(a=2)SetVisible("1.pdl","組 1",0);SetVisible("1.pdl","組 2",1);SetVisible("1.pdl","組 3",0);SetVisible("1.pdl","組 4",1);a=0;return 800;步驟 3:觸發(fā)器的調(diào)整,標(biāo)準(zhǔn)周期, 250MS9. 動(dòng)態(tài)化 顏色改變顏色改變是最基本的動(dòng)態(tài)化的技巧,就是動(dòng)態(tài)對(duì)話框的基本功能,利用
16、顏 色的變化來(lái)完成一個(gè)部件的動(dòng)作或結(jié)束。例如,畫(huà)布屬性 - 顏色 動(dòng)態(tài)對(duì)話框(事件名稱也就是觸發(fā)器的調(diào)整、表達(dá)式的填充或者變量、選擇表達(dá)式結(jié) 果的展現(xiàn)形式(布爾型或者其它調(diào)整顏色) )。10. 動(dòng)態(tài)化 閃爍組態(tài)(元件閃爍)此技巧主要是針對(duì)于元件庫(kù)中的元件來(lái)講。例如,隨便調(diào)出一個(gè)元件(屬性 控件屬性 閃爍樣式 (4 種選擇,包括不閃爍 -0 、不可見(jiàn) -1 、陰影-2 、 實(shí)心 -3) )。點(diǎn)擊后面的燈泡標(biāo)志,選擇動(dòng)態(tài)對(duì)話框 閃爍顏色 布爾型 等。此技巧元件可單獨(dú)作用,亦可由按鈕控制。11. 動(dòng)態(tài)化 動(dòng)態(tài)填充組態(tài)動(dòng)態(tài)填充組態(tài)就是控制元件的動(dòng)態(tài)填充。例如,新建一個(gè)內(nèi)部變量(命名為 level 、無(wú)
17、符號(hào) 16 位、上限 100、下限 0、起始值 0 )、調(diào)出一個(gè)元件或繪制一個(gè)矩形(屬性 動(dòng)態(tài)填充改為“是” 、填充量改為“ 0”、 點(diǎn)擊填充量后面 的燈泡標(biāo)志,直接連接變量 level )。在矩形 - 幾何 - 寬度(假設(shè)寬度為 100)C 動(dòng)作:(注意觸發(fā)器調(diào)整 250 毫秒)( 1)填充增加static int a=0;if(a>=100)a=0;SetTagWord("level",a);a+;return 100;( 2)填充減少static int a=100;if(a=100)a=100;SetTagWord("level",a);a
18、;return 100;( 3)填充增減結(jié)合(先增加、再減少) static int a=0;static int b=0;( 方向控制 ) if(b=0)if(a>=100)b=1;a+;if(b=1)if(a<=0)b=0;a;SetTagWord("level",a);return 100;12. 動(dòng)態(tài)化 對(duì)象的移動(dòng)對(duì)象的移動(dòng)就是控制元件在畫(huà)布上水平左右或者垂直上下的移動(dòng),亦或沿對(duì)角線移動(dòng),也可以綜合性的各方向的移動(dòng)。以小車(chē)移動(dòng)為例進(jìn)行步驟分析如下:步驟一:選中元件 屬性 幾何(選擇位置 X、位置Y)-燈泡標(biāo)志(C動(dòng)作):特別注意:計(jì)算移動(dòng)的距離范圍,選出
19、一個(gè)起點(diǎn)和一個(gè)終點(diǎn)(如果雙 向起點(diǎn)和終點(diǎn)和互換的) 。計(jì)算兩點(diǎn)之間的距離。如果水平移動(dòng),計(jì)算X之間的距離;如果垂直移動(dòng),計(jì)算 Y之間的距離。例如,起點(diǎn) X的坐標(biāo)為500,終點(diǎn)X的坐標(biāo)為20,那么距離為480。(水平移動(dòng)就是不斷增加或者不斷減少 x)步驟二:下面以水平移動(dòng)為例,進(jìn)仃C動(dòng)作分析:( 1)水平左移(不斷減少 x)static int a=500;if(a<=0)a=480;elsea=a-4;( 每次移動(dòng)的距離,可以自動(dòng)調(diào)整 ) return 20+a;( 2)水平右移(不斷增加 x)static int a=0;if(a>=500)a=0;elsea=a+4; ( 每次
20、移動(dòng)的距離,可以自動(dòng)調(diào)整 ) return 20+a;( 3)水平左右移動(dòng)(雙向移動(dòng))static int a=500;static int b=0; ( 方向控制 )if(b=0)if(a<=0)b=1;( 調(diào)整方向 )a=a-4; ( 每次移動(dòng)的距離,可以自動(dòng)調(diào)整 )if(b=1)if(a>=500)b=0; ( 調(diào)整方向 )a=a+4; ( 每次移動(dòng)的距離,可以自動(dòng)調(diào)整 )SetTagWord("level",a);return 20+a;步驟三: 觸發(fā)器調(diào)整 250 毫秒注意:位置 X 水平(左右)移動(dòng)位置 Y 垂直(上下)移動(dòng)高度 放大或者縮小(上下)
21、寬度 拉伸或縮短(左右)13. 動(dòng)態(tài)化復(fù)雜動(dòng)畫(huà)設(shè)計(jì)復(fù)雜動(dòng)畫(huà)設(shè)計(jì)是動(dòng)態(tài)化畫(huà)面的主要特色,也是工業(yè)畫(huà)面組態(tài)主要部分。本技巧 的展現(xiàn)以混合液的控制系統(tǒng)為例進(jìn)行論述。(1) 管道中液體流動(dòng)步驟一: 在元件庫(kù)中調(diào)用管道。 管道在 plantElemerpipes2270( 彎管道) 、2206(橫放管道)、2180(縱放管道)中尋找。畫(huà)出液體流動(dòng)的三種狀態(tài), 第一種狀態(tài)為原始狀態(tài),就是沒(méi)有任何液體流動(dòng);第二種和第三中為液體流動(dòng) 的兩種不同狀態(tài)。三種狀態(tài)畫(huà)好并導(dǎo)出到桌面,畫(huà)好一個(gè)就導(dǎo)出一個(gè)。 分別命 名(0、1、2)(3 次)步驟二: 新建一個(gè)變量,命名為“進(jìn)水” ,為無(wú)符號(hào) 16 位。步驟三: 在智能對(duì)
22、象中 狀態(tài)顯示 組態(tài)對(duì)話框(變量為“進(jìn)水” 、有變化時(shí)、增加三頁(yè)( 0、 1、 2)將三個(gè)畫(huà)面狀態(tài)拖入 0、1、2 下面,相對(duì)應(yīng)) 。 步驟四: 在狀態(tài)顯示控件 幾何 寬度(假設(shè)寬度為 100)-C 動(dòng)作:static int a=0;/ 或者 static unsigned short a=0;/ 三種畫(huà)面的第 0 張畫(huà)面if(a>2) 當(dāng)循環(huán)超過(guò)第二張畫(huà)面,強(qiáng)制回到第一張畫(huà)面。a=1; 三種畫(huà)面的第 1 張畫(huà)面SetTagWord(" 進(jìn)水 ",a); 變量狀態(tài)轉(zhuǎn)移,將 a 變化給“進(jìn)水” C 變量轉(zhuǎn)WINCC變量a+;return 100;步驟五:觸發(fā)器為標(biāo)準(zhǔn)周
23、期,250或500MS保存-運(yùn)行2) 進(jìn)水閥控制的管道中液體流動(dòng) 此技巧和( 1)的區(qū)別主要是增加閥門(mén)的控制。即由閥門(mén)控制水流的通和斷。 對(duì)于進(jìn)水閥門(mén):步驟一: 在元件庫(kù)中 plantElemer valves(閥門(mén) ) 。(注意導(dǎo)入和導(dǎo)出)步驟二 :新建一個(gè)變量,命名為“進(jìn)水閥” ,為二進(jìn)制變量。新建一個(gè)變量,命名為“進(jìn)水” ,為無(wú)符號(hào) 16 位。步驟三: 閥門(mén) 屬性 背景顏色 動(dòng)態(tài)對(duì)話框(事件名稱為變量和觸發(fā)器的調(diào)整為有變化時(shí)、 表達(dá)式為“進(jìn)水閥”、選擇布爾型變量 (真 1綠、假 0紅)。步驟四:閥門(mén) 屬性 事件中BOOL a;a=GetTagBit(“進(jìn)水閥” );if(a=1)SetT
24、agBit(“進(jìn)水閥” ,0);elseSetTagBit(“進(jìn)水閥” ,1);對(duì)于進(jìn)水狀態(tài)顯示控件:鼠標(biāo)左鍵 C 動(dòng)作 :在狀態(tài)顯示控件 幾何static int a=0;/ a=0;/a 表示水量BOOL b;寬度(假設(shè)寬度為 100) -C 動(dòng)作:或 者 static unsigned shortb=GetTagBit( “進(jìn)水閥” );if(b=0)/如果沒(méi)有按鍵按下,無(wú)液體流動(dòng)。SetTagWord(" 進(jìn)水 ",0);return 100;if(a>2)/ 如果有按鍵按下,有液體流動(dòng)。 a=1;SetTagWord(" 進(jìn)水 ",a);
25、a+;return 100;觸發(fā)器為標(biāo)準(zhǔn)周期,250或500MS保存-運(yùn)行(3)進(jìn)水閥和出水閥共同控制的管道中液體流動(dòng)以及液位的狀態(tài)顯示 進(jìn)水閥控制如上( 2)對(duì)于出水閥門(mén):步驟一: 在元件庫(kù)中 plantElemer valves(閥門(mén) ) 。(注意導(dǎo)入和導(dǎo)出)步驟二: 新建一個(gè)變量,命名為“出水閥” ,為二進(jìn)制變量。新建一個(gè)變量,命名為“出水” ,為無(wú)符號(hào) 16 位。步驟三: 閥門(mén) 屬性 背景顏色 動(dòng)態(tài)對(duì)話框(事件名稱為變量和觸發(fā)器的調(diào)整為有變化時(shí)、 表達(dá)式為“出水閥”、選擇布爾型變量 (真1綠、假 0 紅)。步驟四: 閥門(mén) 屬性 事件中 鼠標(biāo)左鍵 C 動(dòng)作:BOOL a;a=GetTag
26、Bit(出水閥” );if(a=1)SetTagBit(“出水閥” ,0);elseSetTagBit(“出水閥” ,1);對(duì)于出水狀態(tài)顯示控件:在狀態(tài)顯示控件 幾何 寬度(假設(shè)寬度為 100)-C 動(dòng)作:static int a=0;/ 或者 static unsigned short a=0;BOOL b;b=GetTagBit( “出水閥” ); if(b=0)SetTagWord(" 出水 ",0);return 100;if(a>2)a=1;SetTagWord(" 出水 ",a);a+;return 100;觸發(fā)器為標(biāo)準(zhǔn)周期,250或5
27、00MS保存-運(yùn)行對(duì)于液位的設(shè)定:步驟一: 在標(biāo)準(zhǔn)對(duì)象中 矩形(或者其它)進(jìn)行屬性調(diào)整(大小、顏色和管道液體同色)。步驟二: 新建一個(gè)變量,命名為“液位” ,為無(wú)符號(hào) 16 位。上限 100,下限 0, 起始值 0。步驟三: 矩形 屬性 填充(動(dòng)態(tài)填充改為“是” 、填充量改為 0 其后面的燈泡標(biāo)志 直接連接變量“液位” (有變化時(shí))?;蛘?static unsigned short a=0;步驟四: 矩形 屬性 幾何 寬度(假設(shè)為 100)C 動(dòng)作如下:static int a=0;/BOOL b;BOOL c;a= GetTagWord( “液位” ); b=GetTagBit( “進(jìn)水閥”
28、 ); c=GetTagBit( “出水閥” ); if(b=1)a+;if(c=1) a-;SetTagWord(" 液位 ",a);return 100;步驟五:觸發(fā)器為250MS (標(biāo)準(zhǔn)周期)(4)增加設(shè)定值的控制本技巧是對(duì)( 3)中液位部分的調(diào)整。增加設(shè)定值。使水位恒定在設(shè)定值所定在的位置 對(duì)于液位的調(diào)整:步驟一: 新建變量,命名“設(shè)定值” ,無(wú)符號(hào) 16 位。連接輸入輸出域輸入設(shè)定 值(變量為設(shè)定值、類型為輸入、有變化時(shí)) 。步驟二:程序修改 矩形 屬性 幾何 寬度(假設(shè)為 100)C動(dòng)作如下:static unsigned short a;static unsi
29、gned short d;BOOL b;BOOL c;a= GetTagWord( “液位” );d= GetTagWord( “設(shè)定值” ); b=GetTagBit( “進(jìn)水閥” ); c=GetTagBit( “出水閥” ); if(a>d)SetTagBit(" 出水閥 ",1);a-;if(a<d)SetTagBit(" 進(jìn)水閥 ",1);a+;if(a=d)SetTagBit(" 進(jìn)水閥 ",0);SetTagBit(" 出水閥 ",0);SetTagWord(" 液位 "
30、;,a);return 100;步驟三:觸發(fā)器為250MS (標(biāo)準(zhǔn)周期)(5)增加急停方式的控制(了解)步驟一: 新建變量“急?!?,二進(jìn)制變量。按鈕 事件 鼠標(biāo)C 動(dòng)作(按下,兩個(gè)地方同時(shí)停下)14. 操作控制權(quán)限(保護(hù)權(quán)限)15. 字符串的應(yīng)用16. 日期與時(shí)間的設(shè)置 正確的提取日期和時(shí)間方法 1:利用控件顯示(直接顯示) ,如圖所示;方法 2:利用程序顯示步驟一: 提取系統(tǒng)日期和時(shí)間;變量管理 添加新的驅(qū)動(dòng)連接,如下圖所示;建立日期和時(shí)間變量,命名“ date 和 time ”, date (在“選擇”中格式為日期、 8 位字符集、 M M-DD-YYY)Y , time (在“選擇”
31、中格式為時(shí)間、 8 位字符集、 HH-MM-S)S , 如下圖所示:分別建立對(duì)應(yīng)的輸入 / 輸出域(在“組態(tài)對(duì)話框”中:對(duì)應(yīng)變量、 有變化時(shí),輸出)如下圖所示。注意:輸入 / 輸出域?qū)傩哉{(diào)整(輸 出格式:字符串)步驟二: 建立內(nèi)部變量,命名“ shijian ”,建立相應(yīng)的輸入 / 輸出域(在“組態(tài) 對(duì)話框”中:對(duì)應(yīng)變量( shijian )、有變化時(shí),輸出)如下圖所示。 注意:輸入 / 輸出域?qū)傩哉{(diào)整(輸出格式:字符串)步驟三: 將日期和時(shí)間相連;在第二個(gè)時(shí)間對(duì)應(yīng)的輸入 / 輸出域 屬性 幾何 高度(假設(shè)高度為 40) -C動(dòng)作:(觸發(fā)器為 500MS)char a20,b20;char a
32、a10,bb10;int i;char temp;char *p;p=GetTagChar("date");strcpy(a,p);for(i=0;i<5;i+)aai=ai;bbi=ai+5;aa5='0'bb5='0'for(i=0;i<4;i+)temp=bbi;bbi=bbi+1;bbi+1=temp;strcat(bb,aa);strcpy(a,bb);p=GetTagChar("time");strcpy(b,p);strcat(a," ");strcat(a,b);SetTag
33、Char("shijian",a);return 40;程序分析:黑色程序部分:能達(dá)到目的,但是顯示西方格式 ( 11-16-2013 ),不符合中國(guó)人審美習(xí)慣,故加藍(lán)色部分程序,用于調(diào)整日期 顯示( 2013-11-16 )。13. 日期與時(shí)間的設(shè)置 兩個(gè)時(shí)間求差值此技巧是對(duì)上一個(gè)技巧的承接,用于實(shí)現(xiàn)在線時(shí)長(zhǎng)顯示的功能。注意:字符不能相加減; 顯示格式(字符顯示):時(shí)間 1:09:45:30 時(shí)間 2 09 :45:45 時(shí)長(zhǎng): 00:00:15。畫(huà)面布局如圖所示;步驟一: 新建內(nèi)部變量: shijian1 和 shijian2 和 shijian3 (格式為文本 8 位
34、 字符集),新建對(duì)應(yīng)的輸入輸出域(變量( shijian1 和 shijian2 和 shijian3 )、 有變化時(shí)、輸出) 。注意:輸入 / 輸出域?qū)傩哉{(diào)整(輸出格式:字符串)步驟二: 程序時(shí)間 1 程序:在時(shí)間 1 對(duì)應(yīng)的輸入輸出域中 - 屬性- 事件 - 鼠標(biāo)左鍵 C 動(dòng)作:char a20;char*p; p=GetTagChar("time");strcpy(a,p);SetTagChar("shijian1",a); 時(shí)間 2 程序:在時(shí)間 2 對(duì)應(yīng)的輸入輸出域中 - 屬性- 事件 - 鼠標(biāo)左鍵 C 動(dòng)作:char a20;char*p;
35、p=GetTagChar("time");strcpy(a,p);SetTagChar("shijian2",a);時(shí)間差程序:在時(shí)間差對(duì)應(yīng)的輸入輸出域中 - 屬性- 事件 - 鼠標(biāo)左鍵 C 動(dòng)作:第一部分:定義變量char a20,b20;char*p;char aa10,bb10,cc10;int i;int val1,val2,val3;int val4,val5,val6;int val7,val8,val9;long sum1,sum2,temp;第二部分:將 shijian1 由字符轉(zhuǎn)換為數(shù)值p=GetTagChar("shijia
36、n1"); 、采集時(shí)間 1 strcpy(a,p);for(i=0;i<2;i+)aai= ai;、小時(shí)bbi= ai+3; 、分鐘cc i= ai+6;、秒aa2='0'bb2='0'cc 2='0'val1=atoi(aa);、字符轉(zhuǎn)數(shù)值val2=atoi(bb);val3=atoi(cc);第三部分:將 shijian2 由字符轉(zhuǎn)換為數(shù)值(同上) p=GetTagChar("shijian2");strcpy(a,p);for(i=0;i<2;i+)aai= ai;bbi= ai+3;cc i= a
37、i+6;aa2='0'bb2='0'cc 2='0'val4=atoi(aa);val5=atoi(bb);val6=atoi(cc);第四部分:求差值sum1=val1*3600+val2*60+val3; 、計(jì)算時(shí)間 1 共多少秒sum2=val4*3600+val5*60+val6; 、計(jì)算時(shí)間 2 共多少秒temp二sum2-sum1;、秒值相減temp=abs(temp); 、取絕對(duì)值分為三(仍為數(shù)值)第五部分:將得出數(shù)值 temp 轉(zhuǎn)換為(時(shí)、分、秒)val7=temp/3600; 、數(shù)值除 3600 取整為小時(shí) val8=(temp
38、%3600)/60; 、余下數(shù)值除 60 取整為分鐘 val9=temp%60; 、余下數(shù)值除 60 取余為秒值 第六部分:將各數(shù)值轉(zhuǎn)換為字符( 0 的 ASCII 碼為 48) b0=val7/10+48; 、十位 時(shí)b1=val7%10+48; 、個(gè)位 b2=':' 、冒號(hào) b3=val8/10+48;b4=val8%10+48;b5=':'b6=val9/10+48; b7=val9%10+48;b8='0' 、字符串結(jié)束標(biāo)志 SetTagChar("shijian3",b); 、輸出結(jié)果項(xiàng)目總圖14. 全局腳本(了解)
39、 將事先編好的程序在全局腳本中編輯成函數(shù)形式(項(xiàng)目函數(shù)) 在 C 動(dòng)作中直接調(diào)用。以可以保護(hù)函數(shù)。舉例說(shuō)明:以上一技巧中的時(shí)間差函數(shù)為例;步驟:全局腳本 C-Editor 項(xiàng)目函數(shù) 新建 在特定的形式中輸入要編的程序,如下所示:#pragma option(mbcs)此為函數(shù)名字(可以自己起名) 輸入要編寫(xiě)的程序最后的程序如下:#pragma option(mbcs) void New_Function()char a20,b20;char*p;char aa10,bb10,cc10;int i;int val1,val2,val3;int val4,val5,val6;int val7,va
40、l8,val9;long sum1,sum2,temp; p=GetTagChar("shijian1"); strcpy(a,p);for(i=0;i<2;i+)aai= ai;bbi= ai+3;cc i= ai+6;aa2='0'bb2='0'cc 2='0'val1=atoi(aa);val2=atoi(bb);val3=atoi(cc);p=GetTagChar("shijian2");strcpy(a,p);for(i=0;i<2;i+)aai= ai;bbi= ai+3;cc i=
41、 ai+6;aa2='0'bb2='0'cc 2='0'val4=atoi(aa);val5=atoi(bb);val6=atoi(cc);sum1=val1*3600+val2*60+val3;sum2=val4*3600+val5*60+val6;temp=sum2-sum1;temp=abs(temp);val7=temp/3600;val8=(temp%3600)/60;val9=temp%60;b0=val7/10+48;b1=val7%10+48;b2=':'b3=val8/10+48;b4=val8%10+48;b5
42、=':'b6=val9/10+48;b7=val9%10+48;b8='0'SetTagChar("shijian3",b);加密:菜單欄中 編輯 信息 (創(chuàng)建者:馮晨曦;口令: 123456),以后每次輸入都得登錄正確的口令才可以登錄;加密后,在 C 動(dòng)作中只顯示函數(shù)名,不顯示函數(shù)內(nèi)容 ;15.關(guān)于文件的操作(對(duì)WINCC勺擴(kuò)展)(1)文件指針格式*txt*dat( 打不開(kāi),存放登錄過(guò)的密碼 )(2)文件操作 打開(kāi)文件 操作文件(復(fù)雜) 關(guān)閉文件( 3)打開(kāi)文件 (首先定義文件指針)FILE*fp;fp=fopen( “ C:Test.tx
43、t ”, “r ”);打開(kāi)文件方式: r 表示只讀:如文件不存在或者路徑錯(cuò)誤,返回 NULL(空指針)w 表示寫(xiě)入:如文件不存在或者路徑錯(cuò)誤,則新建用于清空某個(gè)文件。a表示寫(xiě):為追加,寫(xiě)時(shí)不會(huì)刪除原有文件。以r 、a 使用最多 。(4)關(guān)閉文件Fclose(fp);f表示 file , 中文為“文件” ;(5)操作文件寫(xiě)數(shù)據(jù) fputs( 字符,文件指針 ) ;字符為常量或者數(shù)組 舉例: fputs(china , fp);char a20;strcpy(a20, fp);讀數(shù)據(jù) fgets(, 數(shù)組名 ,n, 文件指針 ); 作用是從文件中讀取 n-1 個(gè)字符放入數(shù)組中;16. 項(xiàng)目 班級(jí)數(shù)
44、據(jù)錄入借助本項(xiàng)目鞏固文件操作技巧,本項(xiàng)目就是對(duì)一個(gè)班級(jí)信息的記錄(姓名、班 級(jí)、學(xué)號(hào))。步驟一:新建三個(gè)內(nèi)部變量:分別命名為“name”、“ class ”、“number” , 并建立相應(yīng)的輸入輸出域,注意:輸入 / 輸出域?qū)傩哉{(diào)整(輸出格式:字符串) ,如 下圖所示:步驟二:新建兩個(gè)按鈕,分別命名為“寫(xiě)入一次信息” 、“寫(xiě)入信息”。 任務(wù)一:在按鈕“寫(xiě)入一次信息”中 - 屬性 事件 鼠標(biāo)左鍵 C 動(dòng)作:FILE*fp;fp=fopen("E:123.txt","a");fputs(" 馮晨曦 ",fp);fputs("1
45、001 自動(dòng)化 ",fp);fputs("rn",fp);fclose(fp);任務(wù)二:在按鈕“寫(xiě)入信息”中 - 屬性 事件 鼠標(biāo)左鍵 C 動(dòng)作:FILE*fp; 、文件指針char a20; char b20;char c20;char*p; 、字符指針/int i; p=GetTagChar("name");strcpy(a,p);p=GetTagChar("class");strcpy(b,p);p=GetTagChar("number"); strcpy(c,p);目的:將三個(gè)變量一一對(duì)應(yīng),使各列
46、對(duì)齊;對(duì)齊方法 1:if(strlen(a)=4)、等于 4,說(shuō)明有 4 個(gè)字符,即兩個(gè)字 (兩個(gè)字的姓名)strcat(a," ");if(strlen(a)=6) 、等于 6,說(shuō)明有 6 個(gè)字符,即三個(gè)字 (三個(gè)字的姓名)strcat(a," ");對(duì)齊方法 2:/for(i=strlen(a);i<8;i+) /strcat(a," ");目的:輸出數(shù)據(jù)fp=fopen("E:123.txt","a");、打開(kāi)文件fputs(a,fp); 、寫(xiě)入數(shù)據(jù) a fputs(b,fp);、寫(xiě)
47、入數(shù)據(jù) afputs(c,fp);、寫(xiě)入數(shù)據(jù) afputs("rn",fp); 、回車(chē)換行 fclose(fp); 、關(guān)閉文件 特別注意:為了免除干擾,防止重復(fù)輸入相同數(shù)據(jù) 方法: 加入延時(shí)函數(shù)步驟:#pragma option(mbcs)void delay(WORD a)#pragma code("keme32.dll")VOID WINAPI Sleep(WORD dwMilliSeconds);#pragma code()Sleep(a);任務(wù)二:在按鈕“寫(xiě)入信息”中 - 屬性 事件 鼠標(biāo)左鍵 C 動(dòng)作:FILE*fp; 、文件指針char a2
48、0;char b20;char c20;char*p; 、字符指針/int i;p=GetTagChar("name");strcpy(a,p); p=GetTagChar("class");strcpy(b,p);p=GetTagChar("number");strcpy(c,p); 目的:將三個(gè)變量一一對(duì)應(yīng),使各列對(duì)齊; 對(duì)齊方法 1:if(strlen(a)=4)、等于 4,說(shuō)明有 4 個(gè)字符,即兩個(gè)字 (兩個(gè)字的姓名)strcat(a," ");if(strlen(a)=6) 、等于 6,說(shuō)明有 6 個(gè)字符
49、,即三個(gè)字 (三個(gè)字的姓名)strcat(a," ");對(duì)齊方法 2:/for(i=strlen(a);i<8;i+)/strcat(a," ");目的:輸出數(shù)據(jù)fp=fopen("E:123.txt","a"); 、打開(kāi)文件 delay(2000) ;、延時(shí) 2 秒fputs(a,fp);、寫(xiě)入數(shù)據(jù) afputs(b,fp);、寫(xiě)入數(shù)據(jù) afputs(c,fp);、寫(xiě)入數(shù)據(jù) afputs("rn",fp);、回車(chē)換行fclose(fp); 、關(guān)閉文件17. 項(xiàng)目 對(duì)文件的綜合處理(未完)
50、本項(xiàng)目是對(duì)文件處理的綜合運(yùn)用,是對(duì)組態(tài)系統(tǒng)人員登錄的統(tǒng)計(jì)和記錄??傮w 布局如下圖所示;項(xiàng)目步驟如下: 步驟一:完成下圖圖形的構(gòu)建和腳本程序的編寫(xiě),方法如上 ;(1)新建三個(gè)內(nèi)部變量,分別命名“ name”“class ”“ number” , 分別連 接相應(yīng)的輸入輸出域(組態(tài)對(duì)話框:該變量、有變化時(shí)、類型為 I/O 域)。注意:輸入 / 輸出域?qū)傩哉{(diào)整(輸出格式:字符串) 。(2)在名字為“寫(xiě)入文件”的按鈕中 - 屬性- 事件 C 動(dòng)作:FILE*fp;char a20;char b20;char c20;char*p;int i;p=GetTagChar("name");
51、strcpy(a,p);p=GetTagChar("class");strcpy(b,p);p=GetTagChar("number");strcpy(c,p);/if(strlen(a)=4) 、藍(lán)色和紅色部分功能一致, 選用一個(gè)即可/strcat(a," ");/if(strlen(a)=6)/strcat(a," ");/if(strlen(a)=8)/strcpy(a);for(i=strlen(a);i<8;i+); 、藍(lán)色和紅色部分功能一 致,選用一個(gè)即可strcat(a," "
52、;);fp=fopen("E:123.txt","a");fputs(a,fp);fputs(b,fp);fputs(c,fp);fputs("rn",fp);fclose(fp);步驟二:完成下圖圖形的構(gòu)建和屬性的調(diào)整;(1)智能對(duì)象 控件(選擇 ListView control 6.0 sp6 ) 拉大控件 雙擊(顯示屬性)在 General( 常規(guī) ) 中修改 View( 選擇 3-lvwreport ) ( 報(bào)表輸出 ) ;在 Colum Header( 列標(biāo)題) ( 點(diǎn)擊 insert Colum( 增加一列 )index
53、為列號(hào)( text: 姓名; Width( 列寬 ) : 80;) 二次點(diǎn)擊 insert Colum( 增加一列)index 為列號(hào)(text:班級(jí);Width(列寬):80;) -三次點(diǎn)擊 insert Colum( 增加一列 )index 為列號(hào)( text: 學(xué)號(hào); Width( 列寬 ) : 80;) 點(diǎn)擊應(yīng)用 點(diǎn)擊確定。(2)選中屬性- 控制屬性 GridLines改“是”為“否”。步驟三:完成下圖圖形的構(gòu)建和腳本程序的編寫(xiě);(1)新建 4 個(gè)按鈕和 1個(gè)輸入輸出域,注意:輸入/ 輸出域?qū)傩哉{(diào)整(輸 出格式:字符串)。如上圖所示;新建內(nèi)部變量:命名“ search ”,文本 8 位字符集;( 2)在按鈕名為“顯示數(shù)據(jù)”中 屬性 事件 鼠標(biāo)左鍵 C 動(dòng)作:#define GetObject GetObject_object*pdl=NULL; 、指向當(dāng)前運(yùn)行系統(tǒng)( NULL 為空值、初始化)_object*pic=NULL; 、指向當(dāng)前系統(tǒng)激活畫(huà)面_object*obj=NULL; 、指向畫(huà)面中的某個(gè)對(duì)象_object*item=NULL; 、對(duì)象中對(duì)行的操作int i;char aa10;MBOK |MBICchar a20,b20,c20;FILE*fp;
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)出資合同范本
- 農(nóng)村廚子采購(gòu)合同范本
- 勘察設(shè)計(jì)合同范本全國(guó)
- 2024年河南信陽(yáng)一五四醫(yī)院招聘筆試真題
- 2024重慶鏡辰美科技有限公司招聘筆試參考題庫(kù)附帶答案詳解
- 出售養(yǎng)殖用地合同范本
- 人教版七年級(jí)歷史與社會(huì)上冊(cè) 3.3.1耕海牧漁教學(xué)設(shè)計(jì)
- 買(mǎi)窯洞合同范本
- 臨勤合同范本
- 助播商務(wù)合同范本
- 中藥藥劑學(xué)講義(英語(yǔ)).doc
- 【課件】Unit1ReadingforWriting課件高中英語(yǔ)人教版(2019)必修第二冊(cè)
- Q∕GDW 10799.6-2018 國(guó)家電網(wǎng)有限公司電力安全工作規(guī)程 第6部分:光伏電站部分
- 滴灌工程設(shè)計(jì)示例
- 配套模塊an9238用戶手冊(cè)rev
- 醫(yī)院室外管網(wǎng)景觀綠化施工組織設(shè)計(jì)
- 霍尼韋爾DDC編程軟件(CARE)簡(jiǎn)介
- 論《說(shuō)文解字》中的水文化
- 德龍自卸車(chē)合格證掃描件(原圖)
- 劉友生善人講病
- 太航條碼一體秤技術(shù)手冊(cè)(統(tǒng)一)
評(píng)論
0/150
提交評(píng)論