欧美成人aaaaa免费视频_亚洲欧美激情小说另类_欧美激情一区二区三区视频_一级在线|欧洲

技術頻道

臺達PLC配合組態王實現工廠產量監控查詢系統

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

2 系統設計
2.1系統框圖(圖1)

圖1 產量監控查詢系統框圖

2.2設備選型設計

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

第一步:在控制面板下選擇 管理工具->ODBC數據源,雙擊圖標出現圖2界面。


圖2 ODBC數據源管理器界面

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

圖3 創建新數據源

第三步:單擊第二步的完成按鈕,出現創建到SQL Server的新數據源。如圖4所示。

圖4 創建SQL服務器的新數據源(1)

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

圖5創建SQL服務器的新數據源(2)

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

圖6創建SQL服務器的新數據源(3)



第五步
一定要選擇選項,否則默認數據庫是master。然后選擇您想要連接的數據庫。其余的按
默認設置,如圖7所示。然后單擊下一步按鈕。

圖7創建SQL服務器的新數據源(4)


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

圖8創建SQL服務器的新數據源(5)


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

圖9創建SQL服務器的新數據源(6)


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

圖10建立當天的表格

4.4 基于Active控件的組態王條件查詢
為了完成如此復雜的查詢,使用了Active控件,因為組態王支持第三方控件,將所有的條件羅列出來進行排列組合,將每一種情況都考慮在內。然后通過程序來實現選擇條件轉換成SQLSELECT()函數工作的條件。
(1)任意查詢任意生產線在任意時段的產量。因為工藝要求能夠任意查詢任意生產線在任意時段的產量,為了能夠實現該功能,新建\\本站點\CX_Hour,\\本站點\CX_Minute,\\本站點\CX_Hour1,\\本站點\CX_Minute1變量。在以時間段進行查詢時,先將以前兩個變量輸入的時間做為條件進行查詢,將查詢出記錄的數據賦給在過程中自定義的中間變量。然后再以后兩個變量輸入的時間為條件進行查詢,將查詢出的結果同樣賦給自定義的中間變量。將兩次查詢的結果求差然后,將日期,時間,車間,生產線,產量通過報表的組態添到表格當中。
(2)對于月產量的查詢。需要判斷輸入的月份有幾天,然后從該月的第一天開始到最后一天進行查詢,查詢的時刻為每一天的23:59分時各生產線的產量。然后對查詢出的數據進行累加,直到該月的最后一天,然后按照特定的格式將數據填寫到報表當中。在該過程中需要靈活的運用循環語句:While{}以及深刻的體會組態王的變量與數據庫進行數據交換的過程。
查詢的條件比較復雜,有些條件不能同時成立,因此在選擇條件時,應該要互相限制,以避免出現混亂的現象。具體的程序在應用程序命令語言運行時寫如下程序:
//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="通訊正常!";}


//===================統計月產量時,查詢報表的個數計算====================
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;}
//=================月產量查詢的條件限定===================
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>.工藝要求能夠查詢任意生產線每分鐘的產量,所以通過事件發生命令語言實現。每當系統時間的秒等于59時,觸發執行如下程序。該部分的程序如下:
//==========================向數據庫插入數據============================
long ih=1;
車間=1;
//SQLInsertPrepare( DeviceID, NameTable, "bind", SQLHandle);

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

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

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

圖11數據庫操作畫面




圖12產量柱狀圖



圖13產量的趨勢圖

7 結束語
盡管臺達的PLC屬于小型PLC,但可靠的性能,支持485通訊等特點,同樣能夠完成集中控制的功能。同時配合組態軟件,一樣能夠實現復雜的工廠監控、數據查詢、打印、報表等DCS系統的功能。篇幅有限,歡迎讀者聯系作者深入交流。

文章版權歸西部工控xbgk所有,未經許可不得轉載。

欧美成人aaaaa免费视频_亚洲欧美激情小说另类_欧美激情一区二区三区视频_一级在线|欧洲

      9000px;">

          国产成人精品免费一区二区| 一区二区三区在线免费观看| 成人动漫精品一区二区| 亚洲欧美另类图片小说| 国产精品美女久久久久久 | 国产成人亚洲精品狼色在线| 亚洲福利视频一区| 天堂影院一区二区| 日韩av电影免费观看高清完整版在线观看| 亚洲日本欧美天堂| 青娱乐精品视频| 国产成人午夜99999| 国产成+人+日韩+欧美+亚洲| 91麻豆国产福利精品| 69堂国产成人免费视频| 亚洲精品在线电影| 亚洲人成7777| 激情文学综合网| 成人av在线影院| 欧美综合天天夜夜久久| 2024国产精品视频| 亚洲成人在线免费| 99久久精品免费精品国产| 色猫猫国产区一区二在线视频| 精品视频免费看| 一区二区中文字幕在线| 狠狠色狠狠色合久久伊人| 在线欧美日韩精品| 国产精品免费视频一区| 亚洲电影一区二区三区| 国产毛片精品国产一区二区三区| 成人自拍视频在线| 国产亚洲精品超碰| 国产夜色精品一区二区av| 欧美一区二区成人6969| 在线精品视频免费观看| www一区二区| 亚洲国产日日夜夜| av成人免费在线| 久久天天做天天爱综合色| 亚洲国产视频一区| 色先锋资源久久综合| 国产日韩av一区| 国产一区二区三区在线观看免费视频 | 欧美日韩一区视频| 国产日韩av一区二区| 国内偷窥港台综合视频在线播放| 欧美一区二区三区视频| 老色鬼精品视频在线观看播放| 欧美日韩中文国产| 日本成人超碰在线观看| 91精品国产免费| 精品一区二区影视| 最新日韩av在线| 99视频一区二区| 蜜桃传媒麻豆第一区在线观看| 精品日韩成人av| 成人a区在线观看| 石原莉奈一区二区三区在线观看| 日韩精品一区二区三区视频在线观看| 麻豆91免费观看| 欧美精品在线一区二区| 国产成人午夜电影网| 午夜精品一区二区三区免费视频 | 久久综合一区二区| 在线视频欧美精品| 国产在线视视频有精品| 亚洲精品国久久99热| 久久久久久久久久久久久久久99| 91香蕉视频mp4| 国产乱码精品1区2区3区| 夜夜嗨av一区二区三区中文字幕| 3d成人动漫网站| 在线观看网站黄不卡| av一区二区三区四区| 丰满白嫩尤物一区二区| 久久9热精品视频| 美国三级日本三级久久99| 亚洲一二三区不卡| 尤物视频一区二区| 亚洲女人****多毛耸耸8| 国产精品亲子伦对白| 国产精品久久网站| 国产精品福利电影一区二区三区四区| 91精品国产综合久久福利| 欧美一区二区视频观看视频| 日韩女优电影在线观看| 日韩欧美国产不卡| 欧美国产激情二区三区| 亚洲高清视频在线| 激情都市一区二区| av不卡在线观看| 欧美日韩高清一区| 久久久久综合网| 蜜臀av一区二区| 成人午夜视频福利| 欧美一二三在线| 久久婷婷久久一区二区三区| 国产精品高清亚洲| 日本不卡一二三| 一本大道久久a久久综合婷婷| 7777精品伊人久久久大香线蕉| 国产精品久久久久国产精品日日| 国产精品久久久久久久久动漫| 午夜视频一区在线观看| 盗摄精品av一区二区三区| 欧美一区二区三级| 亚洲裸体在线观看| 本田岬高潮一区二区三区| 欧美r级在线观看| 五月天亚洲精品| 美女一区二区久久| 欧美精品三级在线观看| 日本丶国产丶欧美色综合| 在线观看免费成人| 欧美一区二区三区性视频| 亚洲欧美日韩国产中文在线| 经典三级在线一区| 日韩欧美电影在线| 精品一区二区免费看| 日韩欧美中文字幕精品| 蜜桃一区二区三区在线观看| 久久综合999| 国产麻豆精品theporn| 欧美mv和日韩mv国产网站| 日韩一区二区三区四区| 日精品一区二区三区| 日韩一二三四区| 国产乱人伦精品一区二区在线观看| 精品毛片乱码1区2区3区| 久久精品国产第一区二区三区| 精品av久久707| gogo大胆日本视频一区| 亚洲一区二区美女| 欧美电影免费观看高清完整版| 国产麻豆日韩欧美久久| 亚洲欧洲成人自拍| 精品视频资源站| 久久超级碰视频| 亚洲免费视频成人| 精品处破学生在线二十三| 成人天堂资源www在线| 亚洲午夜精品一区二区三区他趣| 久久你懂得1024| 日韩欧美不卡在线观看视频| 色综合久久中文综合久久97 | 蜜桃在线一区二区三区| 亚洲精品视频免费观看| 久久婷婷久久一区二区三区| 欧美午夜不卡视频| 在线精品亚洲一区二区不卡| 97久久精品人人澡人人爽| 国产成人高清视频| 国产成人亚洲综合a∨婷婷| 黑人巨大精品欧美一区| 韩国理伦片一区二区三区在线播放 | 国精产品一区一区三区mba视频| 夜夜精品视频一区二区| 亚洲女与黑人做爰| 欧美视频在线播放| jlzzjlzz欧美大全| 风间由美性色一区二区三区| 日韩女优av电影在线观看| 欧美一区二区视频在线观看2020| 国产999精品久久久久久绿帽| 国产拍欧美日韩视频二区| 日韩精品在线一区| 欧美视频在线一区| 91麻豆自制传媒国产之光| 欧美亚洲日本一区| 欧洲人成人精品| 日本高清不卡一区| 色嗨嗨av一区二区三区| 在线电影国产精品| 日韩欧美一级二级| 久久夜色精品国产欧美乱极品| 中文字幕的久久| 《视频一区视频二区| 亚洲成av人在线观看| 婷婷国产在线综合| 美女一区二区久久| av一区二区三区| 偷窥少妇高潮呻吟av久久免费| 一区二区三区资源| 麻豆精品视频在线观看视频| 亚洲一区二区三区四区的| 三级一区在线视频先锋 | 亚洲成av人片观看| 丝袜诱惑亚洲看片| 91香蕉视频污在线| 日韩精品中文字幕一区二区三区| 国产精品国产馆在线真实露脸| 国产三级精品视频| 亚洲在线观看免费视频| 韩国精品免费视频| 欧美日韩国产片| 欧美精品一区二区三区高清aⅴ| 日韩一区欧美小说| 美国十次综合导航| 欧美视频一区二区|