Современные технологии автоматизации» («СТА») —  журнал для квалифицированных специалистов по промышленной автоматизации Форум СТА — современные технологии автоматизации Домашняя страница
Домашняя страница форума CTA Домашняя страница форума CTA > II. АСУТП и SCADA > Архив
  Активные темы Активные темы
  FAQ FAQ  Искать в форуме   Зарегистрироваться Зарегистрироваться  Вход в систему Вход в систему

AdamView - SQL

 Ответить Ответить
Автор
Сообщение
Timur Смотреть выпадающим
Новичок
Новичок


Присоединился: 22 Май 2006
Online Status: Offline
Публикации: 1
Свойства публикации Свойства публикации   Ответить, цитируя автора - Timur Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: AdamView - SQL
    Опубликовано: 22 Май 2006 15:22
Доброе время суток!!!
Подскажите,плиз, как расшифровать файлы *.h01, которые образуются при работе AdamView, где записаны показания датчика (радарного уровнемера).Или как-то другим путем хранить историю показаний и по возможности поместить ее в SQL-сервер.
Заранее спасибо!
Наверх
Mast Смотреть выпадающим
Новичок
Новичок


Присоединился: 12 Май 2006
Категория: Kazakhstan
Online Status: Offline
Публикации: 5
Свойства публикации Свойства публикации   Ответить, цитируя автора - Mast Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 25 Май 2006 07:21

public DBCenter As Variant
public cur_time,ls&
public a() As Variant

Sub SCR2()
 dim s as string
 dim cd as tag
 dim dt(),ab() as Variant
  set cd = gettag("VIRTASK","CD")
 On Error Goto Trap
 sql$="SELECT CURTIME(),CURDATE()"
 qry=SQLRequest("dsn=MySql;",sql$,dt,,4,True)
 time$=dt(1,0)
 date$=dt(1,1)
    if ls&=0 Then ' Первый запуск программы
  Set DBCenter = CreateObject("GeniDAQ32.OleDB")
  sql$="Select * From acp WHERE ceh='CEN'"
     qry=SQLRequest("dsn=MySql;",sql$,a,,4,True) ' Заполняю массив каналов опроса
  Open "error.net" For Append Access Read Write Shared As #1
  Print #1,date$;"-";time$;" Связь установлена"
  Close #1
  cur_time=timer
  ls&=1
   end if
  if cd.value<>date$ then
     sql$="CREATE TABLE IF NOT EXISTS DATA"
    sql$=sql$+"(`date_id` CHAR(16) NOT NULL,"
    for i=0 to 23
       sql$=sql$+"`h"+trim$(str(i))+"` FLOAT(10,4),"
    next
      sql$=sql$+"`day` FLOAT(10,2),"
      sql$=sql$+"PRIMARY KEY(`date_id`)"
    sql$=sql$+") ENGINE = InnoDB"
      qry=SQLRequest("dsn=MySQL",sql$,ab,,4)
    sq$="INSERT INTO DATA (date_id,"
    sqemp$="UPDATE acp set "
    for j=0 to 23
     sqemp$=sqemp+" h"+trim$(str(j))+"=0.00,"
     sq$=sq$+" h"+trim$(str(j))+","
    next
    sqemp$=sqemp$+"day=0.00"
        sq$=sq$+"day) value ("

    for i=1 to ubound(a) 'Цикл по каналам опроса  
     sql$=sq$+"'"+cd.value+a(i,1)+"',"
     for j=0 to 23
      sql$=sql$+str(a(i,j+10))+","
      a(i,j+10)=0
     next
     sql$=sql$+str(a(i,34))+")"
     a(i,34)=0
     qry=SQLRequest("dsn=MySql;",sql$,ab,,4)
     sql$=sqemp$+" WHERE id='"+a(i,1)+"'"
     qry=SQLRequest("dsn=MySql;",sql$,ab,,4)' Зачистка базы ACP
    next
    cd.value=date$
    cur_time=timer
    UpdateHoldFile ' Запишем переход на другие сутки для Geni
  end if 'Переход на другие сутки закончен
  delta=timer-cur_time  'секунд между опросами
  cur_time=timer
  h=int(cur_time/3600)'Текущий час
  filesql$="S"+mid(date$,7,4)+left(date$,2)+mid(date$,4,2)
  sql$="CREATE TABLE IF NOT EXISTS `"+filesql$
  sql$=sql$+"` (`id` CHAR(6) NOT NULL, `time` int(6) NOT NULL,`val` float(10,4),"
    sql$=sql$+"PRIMARY KEY(`id`,`time`)) ENGINE = NDB DEFAULT CHARSET=cp1251"
  qry=SQLRequest("dsn=MySql;",sql$,ab,,4)
  for i=1 to ubound(a) 'Цикл по каналам опроса
   ff=dbcenter.gettagdatafloat(a(i,2),a(i,3),0) 'Опрос канала
   if ff>=a(i,6) and ff<=a(i,7) then 'В диапазоне доставерности
    summa=(ff*delta)/3600 ' Натикало за это время
    a(i,h+10)=a(i,h+10)+summa ' Прибавим к текущему часу
    a(i,34)=a(i,34)+summa ' Прибавик к суткам
    sql$="UPDATE acp SET value="+str(ff)+","
    sql$=sql$+"H"+trim$(str(h))+"="+str(a(i,h+10))+","
    sql$=sql$+"DAY="+str(a(i,34))
    sql$=sql$+" WHERE id='"+a(i,1)+"'" 'Запись часового и суточного расхода
    qry=SQLRequest("dsn=MySql;",sql$,ab,,4)
   end if
   'if ff<> a(i,9) then ' Показания изменились
    ' Теперь запишем в базу графиков
    a(i,9)=ff
    sql$="INSERT INTO `"+filesql$+"` (id,time,val) value ('"
    sql$=sql$+a(i,1)+"',"+str(cur_time)+","+str(ff)+")"
    qry=SQLRequest("dsn=MySql;",sql$,ab,,4)
   'end if
  'a$="insert into stream (timereg,val) value('"+time$+"',"+str(mytag1)+")"
  'qry=SQLExecQuery(id&,a$)
  next i ' Конец опроса

  outputs cd.value
 goto netrap

 Trap: 'Ошибка соединения с MySQL
    On Error Goto 0
    Open "error.net" For Append  Access Read Write Shared As #1
    if ls&<>0 then 
    Print #1,date$;"-";time$;" Потеря связи" ; sql$
   
    ls&=0 ' Повторить попытку позже
      end if
    Close #1
      On Error Goto Trap
 netrap:
End Sub

 

Наверх
Mast Смотреть выпадающим
Новичок
Новичок


Присоединился: 12 Май 2006
Категория: Kazakhstan
Online Status: Offline
Публикации: 5
Свойства публикации Свойства публикации   Ответить, цитируя автора - Mast Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 25 Май 2006 07:31

Надо еще завести в VIRTASK tag с именем CD со свойством HOLD нужный для запоминания текущей даты 

Структура базы каналов опроса

CREATE TABLE `acp` (
  `ceh` char(3) NOT NULL default '',
  `id` char(6) NOT NULL default '',
  `task` char(10) NOT NULL default '',
  `tag` char(10) NOT NULL default '',
  `min` float(10,2) default '0.00',
  `max` float(10,2) default '0.00',
  `min_` float(10,2) default '0.00',
  `max_` float(10,2) default '0.00',
  `name` char(45) default 'Имя параметра',
  `value` float(10,2) default '0.00',
  `h0` float(10,4) default '0.0000',
  `h1` float(10,4) default '0.0000',
  `h2` float(10,4) default '0.0000',
  `h3` float(10,4) default '0.0000',
  `h4` float(10,4) default '0.0000',
  `h5` float(10,4) default '0.0000',
  `h6` float(10,4) default '0.0000',
  `h7` float(10,4) default '0.0000',
  `h8` float(10,4) default '0.0000',
  `h9` float(10,4) default '0.0000',
  `h10` float(10,4) default '0.0000',
  `h11` float(10,4) default '0.0000',
  `h12` float(10,4) default '0.0000',
  `h13` float(10,4) default '0.0000',
  `h14` float(10,4) default '0.0000',
  `h15` float(10,4) default '0.0000',
  `h16` float(10,4) default '0.0000',
  `h17` float(10,4) default '0.0000',
  `h18` float(10,4) default '0.0000',
  `h19` float(10,4) default '0.0000',
  `h20` float(10,4) default '0.0000',
  `h21` float(10,4) default '0.0000',
  `h22` float(10,4) default '0.0000',
  `h23` float(10,4) default '0.0000',
  `day` float(10,4) default '0.0000',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

Наверх
 Ответить Ответить

Переход на форум Права доступа на форуме Смотреть выпадающим

Bulletin Board Software by Web Wiz Forums® version 9.64
Powered by Web Wiz Forums Free Express Edition
Copyright ©2001-2009 Web Wiz