您当前的位置:五五电子网电子知识plc技术plc应用台达plc应用台达PLC配合组态王实现工厂产量监控查询系 正文
台达PLC配合组态王实现工厂产量监控查询系

台达PLC配合组态王实现工厂产量监控查询系

点击数:7110 次   录入时间:03-04 11:40:50   整理:http://www.55dianzi.com   台达plc应用
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_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";}

上一页  [1] [2] [3]  下一页


本文关键字:监控  台达plc应用plc技术 - plc应用 - 台达plc应用