4InTouchHMI軟件的應(yīng)用
IF DL_START.Name=="NULL" THEN DL_STOP=0; Record=StringRight( DL_STOP.Name ,StringLen( DL_STOP.Name )-7 ); SQLSelect( ConnectionId, "COMM", "COMMENT", "device_id="+"’"+Record + "’" , "" ); SQLFirst( ConnectionId ); Record=StringTrim( COM, 3 ); Record=StringLeft( Record, StringLen( Record )/2 ); SQLEnd( ConnectionId ); www.it168.com SQLInsert( ConnectionId, "CortrolLog", "CortrolLog" ); ELSE DL_START=1; Recor d=StringRight( DL_START.Name ,StringLen( DL_START.Name )-7 ); SQLSelect( ConnectionId, "COMM", "COMMENT", "device_id="+"’"+Record + "’" , "" ); SQLFirst( ConnectionId ); Record=StringTrim( COM, 3 ); Record=StringLeft( Record, StringLen( Record )/2 ); SQLEnd( ConnectionId ); SQLInsert( ConnectionId, "CortrolLog", "CortrolLog" ); ENDIF; ENDIF; 2.4數(shù)據(jù)庫的應(yīng)用 系統(tǒng)中的IBM 服務(wù)器作為數(shù)據(jù)存儲和發(fā)布的服務(wù)器,安裝了SQL SERVER 2000,系統(tǒng)的報警歷史記錄和操作記錄以及設(shè)備檔案都存放在名為“DL” 的數(shù)據(jù)庫中。 2.4.1 ODBC的連接 INTOUCH 通過ODBC 訪問SQL SERVER,在ODBC 中建立名為“DL”的用戶DSN,在INTOUCH 中用語句: SQLConnect( ConnectionId, "DSN=DL"); 建立連接,若連接成功則ConnectionId > 0 。在執(zhí)行每一條SQL 語句時都會有一個返回值,若返回值為0 則表示執(zhí)行成功,否則表示與數(shù)據(jù)庫連接不正常,需重新建立連接。為了時刻檢測與數(shù)據(jù)庫服務(wù)器的連接情況,在應(yīng)用程序腳本中每5 秒鐘執(zhí)行一條查詢語句: IF ResultCode = = 0 THEN ResultCode = SQLSelect(ConnectionId , "SYSUSERS" ,"SYSUSERS","UID=0", "" ); ENDIF; 同時在條件腳本中判斷ResultCode (即返回值)若ResultCode <> 0 則斷開連接: SQLDisconnect( ConnectionId ); ConnectionId = 0; SHOW “通訊狀態(tài)”; 打開“通訊狀態(tài)”畫面,顯示信息“與服務(wù)器連接失敗!”及“重試”、“取消”兩個按鈕。按“重試”,置位系統(tǒng)將每20 秒進(jìn)行一次嘗試連接: IF RETRY = = 1 THEN ResultCode = SQLConnect( ConnectionId, "DSN=DL"); ENDIF; 直到ResultCode = 0 為止。 嘗試連接時系統(tǒng)將變得很忙。若想取消連接,則按“取消”按鈕,系統(tǒng)將不再與服務(wù)器連接,對現(xiàn)場 的監(jiān)控可以正常進(jìn)行,但操作與報警記錄都將不寫入服務(wù)器(數(shù)據(jù)發(fā)布不受影響)。希望重新連接服務(wù)器時,只需在“通訊狀態(tài)”畫面下按“重試”按鈕即可。 2.4.2 綁定列表 在全點(diǎn)INTOUCH 中需建立四個綁定列表:“alarmhis”,“cortrolog”,“device”,“sysusers”分別對應(yīng)數(shù)據(jù)庫中的表格。“sysusers”只是為了檢查ODBC 連接用的,并無其他用處。在每個列表中用變量與各字段相對應(yīng),如“cortrolog” 中變量“DATETIME” 對應(yīng)字段“DATETIME” ;變量“$OPERATER”對應(yīng)字段“USERNAME” ;變量“RECORD”對應(yīng)字段“RECORD”等。在寫記錄前,只需先對變量復(fù)值,再執(zhí)行語句: SQLInsert( ConnectionId, "CortrolLog", "CortrolLog" ); 即可。 查詢記錄時,首先準(zhǔn)備一個查詢條件,例如在“稀礬池液位”的動作腳本中有以下語句 DEVICE_ID= LT51027.Name; ShowAt("設(shè)備檔案",$ObjHor +200, $ObjVer +50); SQLSelect( ConnectionId , "DevICE" , "DevICE" , "Device_ID=" + "’"+ device_id +"’" , "" ); SQLFirst( ConnectionId ); 首先將要查詢的設(shè)備名(LT51027)賦給DEVICE_ID。 “SQLSelect”語句實(shí)際上執(zhí)行了一條SQL 語句: SELECT * FROM DEVICE WHERE DEVICE_ID = ‘LT51027’ 后將查詢到的記錄的字段值賦給綁定列表中的變量。這樣在設(shè)備檔案中里,只要放上綁定 列表中的變量就能顯示查詢的結(jié)果了。下圖為從數(shù)據(jù)庫中查到的設(shè)備’ LT51027’的信息。 3 管理層應(yīng)用程序 有了數(shù)據(jù)庫中的“操作記錄”、“報警記錄”和“設(shè)備檔案”,可以方便的開發(fā)管理層應(yīng)用程序。下圖是用Delphi 開發(fā)的一個客戶端軟件,用來查詢記錄及維護(hù)設(shè)備檔案,它可以運(yùn)行在工程師的PC 上。 另外,利用Intouch 的NETDDE 功能,可將生產(chǎn)數(shù)據(jù)實(shí)時地通過第三方軟件進(jìn)行發(fā)布,這里涉及更多的軟件編程技術(shù),就不在深入了。下圖為將數(shù)據(jù)以WEB 的方式進(jìn)行發(fā)布。 結(jié)束語 以上的數(shù)據(jù)庫及WEB 功能也可以通過IndustrialSQL Sever 和SuiteVoyager 實(shí)現(xiàn),以上的應(yīng)用可以說明InTouch 無論在腳本和第三方軟件的接口方面都是非常靈活的。在過去,組態(tài)軟件往往只針對下位機(jī),一個控制系統(tǒng)通常與外界隔離,成為信息孤島,使用Intouch 可以做到車間層與管理層的緊密結(jié)合,管理者可以在辦公室里瀏覽到生產(chǎn)一線的數(shù)據(jù),使企業(yè)以更高的效率進(jìn)行生產(chǎn)和管理。 |