国产精品久久久久久久久软件,国产成人久久久精品二区三区,国产成人无码一区二区三区在线 ,大又大粗又爽又黄少妇毛片,国产精品成人aaaaa网站

首頁 新聞 工控搜 論壇 廠商論壇 產(chǎn)品 方案 廠商 人才 文摘 下載 展覽
首 頁 新聞動態(tài) 產(chǎn)品中心 方案與應(yīng)用 技術(shù)文摘 資料下載 關(guān)于我們 臺達網(wǎng)站 在線視頻
臺達PLC配合組態(tài)王實現(xiàn)工廠產(chǎn)量監(jiān)控查詢系統(tǒng)

中達電通股份有限公司
收藏本文     查看收藏

中達電通股份有限公司上海機電業(yè)務(wù)處FAE          李 強

摘    要:某塑膠有限公司是專業(yè)生產(chǎn)手術(shù)等專用手套的億元年產(chǎn)值企業(yè)。整個工廠多達26條生產(chǎn)線。由于生產(chǎn)產(chǎn)量都是依靠人工進行統(tǒng)計,所以在實際操作過程中,出現(xiàn)產(chǎn)品缺失導(dǎo)致投入的原料量和產(chǎn)出的成品量嚴重失衡,急需對整個工廠的產(chǎn)量進行準確的計量,因此項目基于性價比極高的臺達PLC和組態(tài)王界面軟件成功的開發(fā)出產(chǎn)量監(jiān)控查詢系統(tǒng),得到了客戶的贊揚。
關(guān) 鍵 字:臺達PLC 組態(tài)王 數(shù)據(jù)庫 數(shù)據(jù)的查詢打印 報表組態(tài)
1引言
產(chǎn)量監(jiān)控查詢系統(tǒng)系統(tǒng)對整個工廠所有生產(chǎn)線進行實時監(jiān)控,對每一條生產(chǎn)線的產(chǎn)量進行實時的存儲,存儲的數(shù)據(jù)通過組態(tài)王連接PLC,將PLC中掉電保持區(qū)的數(shù)據(jù)讀到組態(tài)王自定義的相應(yīng)變量當中,每分鐘通過標準的SQL語言對數(shù)據(jù)進行存儲(每分鐘向SQLSERVER數(shù)據(jù)庫中存儲26條數(shù)據(jù),即26條生產(chǎn)線的當前產(chǎn)量)。用戶可以通過:日期、時間、時間段、車間、生產(chǎn)線對任何車間、任何生產(chǎn)線進行產(chǎn)量的查詢;能夠?qū)θ魏诬囬g、任何生產(chǎn)線進行月產(chǎn)量的統(tǒng)計。同時在查詢出滿足條件的記錄后,將結(jié)果通過報表的組態(tài)顯示在相應(yīng)的表格當中,可以對該結(jié)果進行存儲和打印。




2    系統(tǒng)設(shè)計 
2.1系統(tǒng)框圖

2.2設(shè)備選型設(shè)計



3 系統(tǒng)分析 
3.1功能要求 
可以任意查詢一車間、二車間任何生產(chǎn)線(共26條生產(chǎn)線)任何時段的產(chǎn)量。具體明 
細如下: 
(1)每條生產(chǎn)線產(chǎn)量的數(shù)據(jù)至少能夠保存四個月的儲存期,以便對歷史數(shù)據(jù)進行查詢。 
(2)要求能夠查詢每條生產(chǎn)線任意每月、任意每天、任意每小時、任意每分鐘的產(chǎn)量。 
(3)要求能夠?qū)θ我饷織l生產(chǎn)線在任意時段的產(chǎn)量進行查詢。 
(4)查詢出來的任何結(jié)果要以特定的格式在報表中進行組態(tài),同時將結(jié)果打印。 
(5)各生產(chǎn)線任意每月產(chǎn)量、任意每天產(chǎn)量、任意每小時產(chǎn)量、任意每分鐘產(chǎn)量可以在電腦上用柱狀圖、實時趨勢曲線的形式表現(xiàn)出來 
3.2查詢方式 
(1)能夠按照日期進行查詢(格式:Year/Month/Day) 
(2)能夠按照時間進行查詢(格式:Hour/Minute/Second) 
(3)能夠按照生產(chǎn)線進行查詢(一車間:1-1、1-2;2-1,2-2;3-1,3-2;4-1,4-2; 
5-1,5-2;6-1,6-2;7-1,7-2;8-1,8-2  二車間:1-1,1-2;2-1,2-2;3-1,3-2;4-1,4-2,4-3,4-4) 
    (4)能夠按照任意時間段進行查詢(格式:Year/Month/Day Hour/Minute/Second  To  Year/Month/Day/ Hour/Minute/Second) 
    (5)能夠按照班次進行查詢(格式:早班,中班,晚班)早班:7:30—15:30       
        中班:15:30—23:30      晚班:23:30—7:30 
    (6)能夠查詢?nèi)我饷吭氯我廛囬g、任意生產(chǎn)線的產(chǎn)量 
    (7)能夠運用<1>——<5>的各種不同的排列組合進行復(fù)雜的查詢 
4難點及實現(xiàn)方法 
4.1 海量數(shù)據(jù)管理 
兩個車間共26條生產(chǎn)線,每分鐘要有26條記錄生成,每分鐘向數(shù)據(jù)庫插入26條記錄。 
該系統(tǒng)全天24小時工作,不允許停。所以一天的數(shù)據(jù)量為37440條記錄。每月的數(shù)據(jù)量為1160640條記錄。如果要存儲四個月,則數(shù)據(jù)量為4642260條記錄。數(shù)據(jù)量是相當龐大的。硬盤的數(shù)據(jù)存儲接近2-3G,不僅會造成在查詢時,系統(tǒng)資源嚴重被占用,同時普通的數(shù)據(jù)庫如ACCESS的表格沒有能力管理如此龐大的數(shù)據(jù)系統(tǒng)。ACCESS在管理如此龐大的數(shù)據(jù)時,不僅系統(tǒng)會造成不穩(wěn)定,同時會出現(xiàn)不可預(yù)料的情形。所以只能尋找能夠管理大型數(shù)據(jù)系統(tǒng)的數(shù)據(jù)庫,因此可以選擇SQLSERVER或Oracle。 
4.2 基于WindowsXP創(chuàng)建SQL服務(wù)器的新數(shù)據(jù)源 
組態(tài)王支持對標準的數(shù)據(jù)庫進行數(shù)據(jù)的插入、選擇、刪除等基本的操作。同時支持標準的SQL語言。靈活的運用組態(tài)王提供的SQL函數(shù)使組態(tài)王通過ODBC(開放性的數(shù)據(jù)源)配合標準的SQL語言對數(shù)據(jù)庫進行各種簡單和復(fù)雜的操作。 
在Win2000/Winnt/Winxp等操作系統(tǒng)下,必須正確的進行設(shè)置:從控制面板中 
雙擊性能和維護,如圖3所示。以WindowsXP為例說明。 
第一步:在控制面板下選擇 管理工具->ODBC數(shù)據(jù)源,雙擊圖標出現(xiàn)圖2界面。


第二步:在用戶DSN 選項卡片上,單擊添加按鈕,出現(xiàn) 創(chuàng)建新數(shù)據(jù)源 對話框,選擇SQL Server(圖3)。


第三步:單擊第二步的完成按鈕,出現(xiàn)創(chuàng)建到SQL Server的新數(shù)據(jù)源。如圖4所示。


輸入數(shù)據(jù)源名稱、數(shù)據(jù)源描述和SQL Server 所在的服務(wù)器名稱或者IP地址。服務(wù)器名稱可以是SQL Server所在的機器名稱,也可以是IP地址。單擊下一步按鈕。 
    第四步:選擇登錄SQL Server時的身份驗證方式。并輸入登錄SQL Server時所用到的用戶名和密碼。如圖5所示。 


這里的用戶名和密碼是在SQL Server中建立的。在SQL Server數(shù)據(jù)庫中選擇 安全性->登錄,新建用戶,如圖6所示。


第五步:一定要選擇"更新默認的數(shù)據(jù)庫為"選項,否則默認數(shù)據(jù)庫是master。然后選擇您想要連接的數(shù)據(jù)庫。其余的按默認設(shè)置,如圖7所示。然后單擊下一步按鈕。


第六步:按默認設(shè)置,單擊完成按鈕(圖8)。


第七步:圖9給出了數(shù)據(jù)庫連接的摘要信息,如果想測試一下是否能夠連接到數(shù)據(jù)庫,可以單擊“測試數(shù)據(jù)源”按鈕,會出現(xiàn)測試結(jié)果。


單擊確定完成連接。接下來的工作就是在組態(tài)王王建立記錄體、表格模板。其中連接數(shù)據(jù)庫的時候,一定要輸入和剛才數(shù)據(jù)源名稱一致的DSN。如 dsn = wuhandsn. 
4.3 表格名稱創(chuàng)新 
即使使用大型的數(shù)據(jù)庫,SQL Server或Oracle,由于每天的數(shù)據(jù)量多達37440條記錄, 
如果將一個月,甚至是四個月的記錄全部寫入同一個數(shù)據(jù)庫的同一個表格,則所有的數(shù)據(jù)量大的將使表格崩潰,即使數(shù)據(jù)庫能夠管理,查詢的速度也是可想而知的。將會非常的慢。經(jīng)過作者反復(fù)的思索,想出了一個巧妙的辦法,就是以系統(tǒng)的日期作為當天的表格名稱。當系統(tǒng)時間為00:00:00時刻時,新建一個表格,通過SQLCreateTable( DeviceID, "TableName", "TemplateName" )函數(shù)建立不同的表格。因為組態(tài)王支持字符串函數(shù),如下所示: 
StrASCII( Char );// 此函數(shù)返回某一指定的文字變量首字符的ASCII值 
StrChar( ASCII );// 此函數(shù)返回某一指定ASCII碼所對應(yīng)的字符 
StrFromInt( Integer, Base );// 此函數(shù)將一整數(shù)值轉(zhuǎn)換為另一進制下的字符串表示 
StrFromReal( Real, Precision, Type );// 此函數(shù)將一實數(shù)值轉(zhuǎn)換成字符串形式 
StrFromTime( SecsSince1-1-70, StringType );// 此函數(shù)將一個時間值轉(zhuǎn)換為字符串 
StrInStr( Text, SearchFor, StartPos, CaseSens );// 此函數(shù)用于查找文本 
StrLeft( Text, Chars );// 此函數(shù)返回指定文字變量的開始(或最左的)若干個字符 
StrLen( Text );// 此函數(shù)返回某一指定的文字變量的長度 
StrLower( Text );// 此函數(shù)將指定文字中的所有大寫字母轉(zhuǎn)換為小寫字母 
StrMid( Text, StartChar, Chars );// 此函數(shù)從指定的位置開始,從一個文字變量中返回指定個數(shù)的字符 
StrReplace( Text, SearchFor, ReplaceWith, CaseSens, NumToReplace, MatchWholeWords ); 
//此函數(shù)替換或改變所提供字符串的指定部分 
StrRight( Text, Chars );// 此函數(shù)返回指定文字變量的最末端(或最右)若干個字符 
StrSpace( NumSpaces );// 此函數(shù)在文字變量中或表達式中產(chǎn)生一個空格串 
StrToInt( Text );// 此函數(shù)在文字變量中或表達式中產(chǎn)生一個空格串 
StrToReal( Text );// 此函數(shù)將一個由數(shù)字組成的字符串轉(zhuǎn)換成一個能用于數(shù)字計算的實數(shù)值 
StrTrim( Text, TrimType );// 此函數(shù)刪除文字變量中無用的空格 
StrType( Text, TestType );// 此函數(shù)檢測文字變量的首字符以確定其是否為某一類型 
StrUpper( Text );// 此函數(shù)將一指定文字變量中所有的小寫字符轉(zhuǎn)換成大寫字符 
在組態(tài)王中建立內(nèi)存型字符變量NameTable="A"+StrFromInt( \\本站點\$年, 10)+StrFromInt( \\本站點\$月, 10)+StrFromInt( \\本站點\$日, 10);NameTable的構(gòu)成為字母A+系統(tǒng)日期。將系統(tǒng)提供的整型變量轉(zhuǎn)換成字符型變量。這樣可以在數(shù)據(jù)庫中建立每天的表格。每當系統(tǒng)日期由23:59:59跳變到00:00:00時,執(zhí)行SQLCreateTable()函數(shù),建立當天的表格,如圖10所示,在SQL Server中組態(tài)王建立了A2006619日的表格。


 4.4 基于Active控件的組態(tài)王條件查詢 
為了完成如此復(fù)雜的查詢,使用了Active控件,因為組態(tài)王支持第三方控件,將所有的條件羅列出來進行排列組合,將每一種情況都考慮在內(nèi)。然后通過程序來實現(xiàn)選擇條件轉(zhuǎn)換成SQLSELECT()函數(shù)工作的條件。  
(1)任意查詢?nèi)我馍a(chǎn)線在任意時段的產(chǎn)量。因為工藝要求能夠任意查詢?nèi)我馍a(chǎn)線在任意時段的產(chǎn)量,為了能夠?qū)崿F(xiàn)該功能,新建\\本站點\CX_Hour,\\本站點\CX_Minute,\\本站點\CX_Hour1,\\本站點\CX_Minute1變量。在以時間段進行查詢時,先將以前兩個變量輸入的時間做為條件進行查詢,將查詢出記錄的數(shù)據(jù)賦給在過程中自定義的中間變量。然后再以后兩個變量輸入的時間為條件進行查詢,將查詢出的結(jié)果同樣賦給自定義的中間變量。將兩次查詢的結(jié)果求差然后,將日期,時間,車間,生產(chǎn)線,產(chǎn)量通過報表的組態(tài)添到表格當中。 
(2)對于月產(chǎn)量的查詢。需要判斷輸入的月份有幾天,然后從該月的第一天開始到最后一天進行查詢,查詢的時刻為每一天的23:59分時各生產(chǎn)線的產(chǎn)量。然后對查詢出的數(shù)據(jù)進行累加,直到該月的最后一天,然后按照特定的格式將數(shù)據(jù)填寫到報表當中。在該過程中需要靈活的運用循環(huán)語句:While{}以及深刻的體會組態(tài)王的變量與數(shù)據(jù)庫進行數(shù)據(jù)交換的過程。 
查詢的條件比較復(fù)雜,有些條件不能同時成立,因此在選擇條件時,應(yīng)該要互相限制,以避免出現(xiàn)混亂的現(xiàn)象。具體的程序在應(yīng)用程序命令語言運行時寫如下程序: 
//String Systime=StrFromInt(\\本站點\$時,10 )+":"+StrFromInt(\\本站點\$分,10 ); 
//===================判斷 早班,中班,晚班和查詢的時段=================================== 
String Timestr=StrFromInt( \\本站點\$時, 10 )+StrFromInt( \\本站點\$分, 10 ); 
Long Timereal=StrToInt( Timestr ); 
if(Timereal>=730) 
  { if(Timereal<=1530) 
    \\本站點\班次1="早班";   } 
if(Timereal>1530) 
  { if(Timereal<=2330) 
    \\本站點\班次1="中班";   } 
if(Timereal>2330) 
  { if(Timereal<=2359) 
    \\本站點\班次1="晚班";   } 
if(Timereal>=0) 
  { if(Timereal<730) 
    \\本站點\班次1="晚班";   } 


\\本站點\日期=\\本站點\$日期; 
\\本站點\時間=StrFromReal( \\本站點\$時, 0, "f" )+":"+StrFromReal( \\本站點\$分, 0, "f" ); 
if(CommFine1) 
  { CommText1="通訊失敗!";} 
else 
   { CommText1="通訊正常!";} 
if(CommFine2) 
  { CommText2="通訊失敗!";} 
else 
  { CommText2="通訊正常!";} 


//===================統(tǒng)計月產(chǎn)量時,查詢報表的個數(shù)計算==================== 
if(\\本站點\MonthInput==1){ \\本站點\DayNumber=31;} 
if(\\本站點\MonthInput==2){ \\本站點\DayNumber=28;} 
if(\\本站點\MonthInput==3){ \\本站點\DayNumber=31;} 
if(\\本站點\MonthInput==4){ \\本站點\DayNumber=30;} 
if(\\本站點\MonthInput==5){ \\本站點\DayNumber=31;} 
if(\\本站點\MonthInput==6){ \\本站點\DayNumber=30;} 
if(\\本站點\MonthInput==7){ \\本站點\DayNumber=31;} 
if(\\本站點\MonthInput==8){ \\本站點\DayNumber=31;} 
if(\\本站點\MonthInput==9){ \\本站點\DayNumber=30;} 
if(\\本站點\MonthInput==10){ \\本站點\DayNumber=31;} 
if(\\本站點\MonthInput==11){ \\本站點\DayNumber=30;} 
if(\\本站點\MonthInput==12){ \\本站點\DayNumber=31;} 
//=================月產(chǎn)量查詢的條件限定=================== 
if(Check6) 
{ Check1=0;Check2=0;Check3=0;Check4=0;Check5=0;} 
//==================查詢時間和時間段不能同時有效=================== 
if(\\本站點\Check2) 
{\\本站點\Check3=0;Check1=1;} 
if(\\本站點\Check3) 
{\\本站點\Check2=0;Check1=1;Check6=0;} 

//====================插入表格的名稱====================== 
NameTable="A"+StrFromInt( \\本站點\$年, 10)+StrFromInt( \\本站點\$月, 10)+StrFromInt( \\本站點\$日, 10); 

<7>.工藝要求能夠查詢?nèi)我馍a(chǎn)線每分鐘的產(chǎn)量,所以通過事件發(fā)生命令語言實現(xiàn)。每當系統(tǒng)時間的秒等于59時,觸發(fā)執(zhí)行如下程序。該部分的程序如下: 
//==========================向數(shù)據(jù)庫插入數(shù)據(jù)============================ 
long ih=1; 
車間=1; 
//SQLInsertPrepare( DeviceID, NameTable, "bind", SQLHandle); 

while(ih<=16) 
        {  if(ih==1) {產(chǎn)量=Fir_NO1;生產(chǎn)線="1-1";}   if(ih==2) {產(chǎn)量=Fir_NO2;生產(chǎn)線="1-2";}    if(ih==3){產(chǎn)量=Fir_NO3;生產(chǎn)線="2-1";}     if(ih==4) {產(chǎn)量=Fir_NO4;生產(chǎn)線="2-2";}       if(ih==5) {產(chǎn)量=Fir_NO5;生產(chǎn)線="3-1";}     if(ih==6){產(chǎn)量=Fir_NO6;生產(chǎn)線="3-2";} 
           if(ih==7) {產(chǎn)量=Fir_NO7;生產(chǎn)線="4-1";}     if(ih==8) {產(chǎn)量=Fir_NO8;生產(chǎn)線="4-2";}        if(ih==9){產(chǎn)量=Fir_NO9;生產(chǎn)線="5-1";}     if(ih==10) {產(chǎn)量=Fir_NO10;生產(chǎn)線="5-2";}   if(ih==11) {產(chǎn)量=Fir_NO11;生產(chǎn)線="6-1";}  if(ih==12){產(chǎn)量=Fir_NO12;生產(chǎn)線="6-2";} 
           if(ih==13) {產(chǎn)量=Fir_NO13;生產(chǎn)線="7-1";}   if(ih==14) {產(chǎn)量=Fir_NO14;生產(chǎn)線="7-2";}    if(ih==15){產(chǎn)量=Fir_NO15;生產(chǎn)線="8-1";}  if(ih==16) {產(chǎn)量=Fir_NO16;生產(chǎn)線="8-2";}    
           // \\本站點\序號=\\本站點\序號+1;        
            SQLInsert( DeviceID,NameTable, "bind"  );   
           //SQLInsertExecute( DeviceID, "bind", SQLHandle);           
           ih=ih+1;          
           }  

long jh=1; 
車間=2; 
while(jh<=10) 
        {   
           if(jh==1) {產(chǎn)量=Sec_NO1;生產(chǎn)線="1-1";}  if(jh==2) {產(chǎn)量=Sec_NO2;生產(chǎn)線="1-2";}        if(jh==3){產(chǎn)量=Sec_NO3;生產(chǎn)線="2-1";}   if(jh==4) {產(chǎn)量=Sec_NO4;生產(chǎn)線="2-2";}       if(jh==5) {產(chǎn)量=Sec_NO5;生產(chǎn)線="3-1";}    if(jh==6){產(chǎn)量=Sec_NO6;生產(chǎn)線="3-2";} 
           if(jh==7) {產(chǎn)量=Sec_NO7;生產(chǎn)線="4-1";}  if(jh==8) {產(chǎn)量=Sec_NO8;生產(chǎn)線="4-2";}        if(jh==9){產(chǎn)量=Sec_NO9;生產(chǎn)線="4-3";}    if(jh==10) {產(chǎn)量=Sec_NO10;生產(chǎn)線="4-4";}    
           //\\本站點\序號=\\本站點\序號+1; 
           SQLInsert( DeviceID,NameTable, "bind"  );  
           //SQLInsertExecute( DeviceID, "bind", SQLHandle); 
           jh=jh+1; 
           }  
//SQLInsertEnd( DeviceID, SQLHandle); 

(3)在系統(tǒng)時間等于00:00:00時刻時,在事件命令語言中建立如下程序,以得到需要新建表格的名稱,同時將PLC中累計產(chǎn)量的寄存器清零,重新開始對該日的產(chǎn)量進行累計。 
5 調(diào)試過程 
因為兩個車間之間的距離在300m左右,而從第一個車間到監(jiān)控室的距離有500m左右,距離比較遠,為了遏制信號的衰減,將信號線用網(wǎng)線代替,同時加中繼器,將信號放大。保證數(shù)據(jù)傳輸?shù)陌踩。要求現(xiàn)場布線時嚴格按照電氣規(guī)范施工。保證安裝的合格。正確的設(shè)置操作系統(tǒng)中數(shù)據(jù)源ODBC的選項,以保證組態(tài)王能夠通過ODBC與數(shù)據(jù)庫SQL Server連接。在組態(tài)王運行系統(tǒng)中執(zhí)行任何操作時,觀察運行反饋信息,以得到相關(guān)的錯誤信息。根據(jù)提示的錯誤信息檢查程序。報表的組態(tài)非常靈活,可以通過While{}循環(huán)語句,將查詢結(jié)果按照順序填寫到報表中。靈活的運用While{}語句同時能夠?qū)⒊绦蚝喕,減少組態(tài)王后臺運行程序的時間。靈活的運用應(yīng)用程序命令語言、數(shù)據(jù)改變命令語言、事件命令語言、熱鍵命令語言、按鈕的彈起、按住、按下命令語言進行編程。在程序量非常大的項目中,養(yǎng)成良好的編程習(xí)慣。定義變量時最好使用英文,這樣能夠增加程序的可讀性。同時對程序進行標注。 
程序畫面設(shè)計參見圖11、圖12、圖13。 


7 結(jié)束語 
盡管臺達的PLC屬于小型PLC,但可靠的性能,支持485通訊等特點,同樣能夠完成集中控制的功能。同時配合組態(tài)軟件,一樣能夠?qū)崿F(xiàn)復(fù)雜的工廠監(jiān)控、數(shù)據(jù)查詢、打印、報表等DCS系統(tǒng)的功能。篇幅有限,歡迎讀者聯(lián)系作者深入交流。 


 
 
臺達相關(guān)解決方案:
臺達堆垛機方案:精準是王道 平穩(wěn)更高效
不負期望 強大性能 | 臺達ASDA-A3伺服高端應(yīng)用面面說
云端漫游智能制造 低碳方案盡在眼前!
看臺達三招化解數(shù)據(jù)中心升級難
云課堂 | 聽數(shù)據(jù)中心專家開講新一代綠色微模塊
建設(shè)低碳綠色智能工廠,從優(yōu)化冷水機開始!
臺達在這個智慧園區(qū)上展現(xiàn)的“硬功夫“和”軟實力”
臺達澆鑄控制解決方案 助力發(fā)泡橡膠制程大升級
臺達為數(shù)據(jù)托管跨國公司提供 28 MW 關(guān)鍵電力解決方案
低碳模式 綠色主張 臺達方案與你分享
臺達LED直流智能照明解決方案,點亮家門口的“指路燈”
深化“雙碳”牽引目標 臺達為智能廠務(wù)增加綠色助力
更多臺達解決方案...
通過中華工控網(wǎng)在線留言中達電通股份有限公司:
用戶名: 密碼: 免費注冊為中華工控網(wǎng)會員
請留下您的有效聯(lián)系方式,以方便我們及時與您聯(lián)絡(luò)
 
中華工控網(wǎng) GKong.com制作發(fā)布 廣告聯(lián)系