Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
doc:jroboplc:modules:motohr [2025/03/21 13:15]
denis [Параметры]
doc:jroboplc:modules:motohr [2025/03/21 14:11] (текущий)
denis [Системные команды]
Строка 56: Строка 56:
 |''​system.util ​            '' ​ |  ''​STRING ​ '' ​ |  ''​RW'' ​ |Тег для ввода системных команд (см. ...)  | |''​system.util ​            '' ​ |  ''​STRING ​ '' ​ |  ''​RW'' ​ |Тег для ввода системных команд (см. ...)  |
 |  Группы тегов по каждому типу счетчиков ​  |||| |  Группы тегов по каждому типу счетчиков ​  ||||
-|''​cnttype.<​счетчик>.descr '' ​ |  ''​STRING ​ '' ​ |  '''' ​   |Описание счетчика ​ | +|''​cnttype.<​ctId>.descr '' ​ |  ''​STRING ​ '' ​ |  '''' ​   |Описание счетчика ​ | 
-|''​cnttype.<​счетчик>.timer '' ​ |  ''​BOOL ​   '' ​ |  '''' ​   |Счетчик является таймером ​ |+|''​cnttype.<​ctId>.timer '' ​ |  ''​BOOL ​   '' ​ |  '''' ​   |Счетчик является таймером ​ |
 |  Группы тегов по каждой единице оборудования ​ |||| |  Группы тегов по каждой единице оборудования ​ ||||
-|''<​машина>.<cчетчик>      '' ​ |  ''​INT ​    '' ​ |  ''​RW'' ​ |Значение счетчика без учета рабочего времени с момента последнего старта ​ | +|''<​machName>.cnt<ctId>      '' ​ |  ''​INT ​    '' ​ |  ''​RW'' ​ |Значение счетчика без учета рабочего времени с момента последнего старта ​ | 
-|''<​машина>​.time ​          '' ​ |  ''​LONG ​   '' ​ |  '''' ​   |Локальное время в секундах с момента последнего старта,​ либо 0, если машина остановлена ​ | +|''<​machName>​.time ​          '' ​ |  ''​LONG ​   '' ​ |  '''' ​   |Локальное время в секундах с момента последнего старта,​ либо 0, если машина остановлена ​ | 
-|''<​машина>​.descr ​         '' ​ |  ''​STRING ​ '' ​ |  ''​RW'' ​ |Описание машины ​ |+|''<​machName>​.descr ​         '' ​ |  ''​STRING ​ '' ​ |  ''​RW'' ​ |Описание машины ​ | 
 +где: 
 +  * ''​ctId''​ - идентификатор типа счетчика,​ значения от 1 и более. Значение 1 всегда имеет счетчик "​Всего",​ называемый далее **''​total''​**. 
 +  * ''​machName''​ - имя машины 
 +  
 +Примечание:​  
 +  *Локальное время в секундах - от 1970-01-01T00:​00:​00Z без часового пояса.
  
-Примечание:​ Локальное время в секундах - от 1970-01-01T00:​00:​00Z без часового пояса. 
  
  
- +Пример выборки тегов:
-Пример выборки тегов ​для машины ''​M1001''​ из вышеприведенной конфигурации:+
 ^  Имя тега ​ ^  Тип данных ​ ^  Значение тега ​ ^ ^  Имя тега ​ ^  Тип данных ​ ^  Значение тега ​ ^
-|''​mh.cnttype.c1.descr  '' ​ |  ''​STRING'' ​ |  ''​Счетчик 1'' ​     +|''​mh.cnttype.1.descr'' ​ |  ''​STRING'' ​ |  ''​Всего        ​'' ​ 
-|''​mh.cnttype.c1.timer  '' ​ |  ''​BOOL '' ​ |  '' ​ off        '' ​ | +|''​mh.cnttype.1.timer'' ​ |  ''​BOOL '' ​ |  ''​off ​         '' ​ | 
-|''​mh.cnttype.c2.descr '' ​ |  ''​STRING'' ​ |  ''​Счетчик ​2'' ​     | +|''​mh.cnttype.2.descr '' ​ |  ''​STRING'' ​ |  ''​Счетчик ​A'' ​     | 
-|''​mh.cnttype.c2.timer '' ​ |  ''​BOOL '' ​ |  ''​off ​         '' ​ | +|''​mh.cnttype.2.timer '' ​ |  ''​BOOL '' ​ |  ''​off ​         '' ​ | 
-|''​mh.cnttype.t1.descr '' ​ |  ''​STRING'' ​ |  ''​Таймер 1     '' ​ +|''​mh.cnttype.3.descr '' ​ |  ''​STRING'' ​ |  ''​Счетчик B'' ​     
-|''​mh.cnttype.t1.timer '' ​ |  ''​BOOL '' ​ |  ''​on           '' ​ | +|''​mh.cnttype.3.timer '' ​ |  ''​BOOL '' ​ |  '' ​ ​off ​       ​'' ​ | 
-|''​mh.cnttype.total.descr'' ​ |  ''​STRING'' ​ |  ''​Всего        ​'' ​ | +|''​mh.cnttype.4.descr  '' ​ |  ''​STRING'' ​ |  ''​Таймер 1     '' ​ | 
-|''​mh.cnttype.total.timer'' ​ |  ''​BOOL '' ​ |  ''​off          ​'' ​ | +|''​mh.cnttype.4.timer  '' ​ |  ''​BOOL '' ​ |  ''​on           '' ​ | 
-|''​mh.M1001.c1          '' ​ |  ''​INT '' ​ |  ''​5328 ​        '' ​ | +|''​mh.100.cnt1          '' ​ |  ''​INT '' ​ |  ''​5328 ​        '' ​ | 
-|''​mh.M1001.c2          '' ​ |  ''​INT '' ​ |  ''​5328 ​        '' ​ | +|''​mh.100.cnt2          '' ​ |  ''​INT '' ​ |  ''​5328 ​        '' ​ | 
-|''​mh.M1001.t1          '' ​ |  ''​INT '' ​ |  ''​-5328 ​       '' ​ | +|''​mh.100.cnt4          '' ​ |  ''​INT '' ​ |  ''​-5328 ​       '' ​ | 
-|''​mh.M1001.descr '' ​ |  ''​STRING'' ​ |  ''​1001 Световой сигнализоатор ​  '' ​ | +|''​mh.100.descr '' ​ |  ''​STRING'' ​ |  ''​100 Нория   '' ​ | 
-|''​mh.M1001.time '' ​ |  ''​LONG '' ​ |  ''​1740347568 ​  '' ​ | +|''​mh.100.time '' ​ |  ''​LONG '' ​ |  ''​1740347568 ​  '' ​ |
-|''​mh.M1001.total '' ​ |  ''​INT '' ​ |  ''​5328 ​        '' ​ |+
 |''​mh.system.time '' ​ |  ''​LONG '' ​ |  ''​1740349832 ​  '' ​ | |''​mh.system.time '' ​ |  ''​LONG '' ​ |  ''​1740349832 ​  '' ​ |
 |''​mh.system.util '' ​ |  ''​STRING'' ​ |  '' ​            '' ​ | |''​mh.system.util '' ​ |  ''​STRING'' ​ |  '' ​            '' ​ |
 |''​mh.connected  ​        '' ​ |  ''​BOOL'' ​   |  ''​on ​          '' ​ | |''​mh.connected  ​        '' ​ |  ''​BOOL'' ​   |  ''​on ​          '' ​ |
-|''​UVRD.MCHB_1001_Plata  '' ​ |  ''​INT '' ​ |  ''​1 ​           '' ​ |+|''​UVRD.MCHB_100_Plata  '' ​ |  ''​INT '' ​ |  ''​1 ​           '' ​ |
  
 ===== База данных ===== ===== База данных =====
-{{:​doc:​jroboplc:​modules:​motohr_db2.png|}}+{{:​doc:​jroboplc:​modules:​motohr_db.png|}}
  
  
Строка 110: Строка 113:
 Машины Машины
   * ''​DESCR''​ - описание машины,​ подтягиваемое из тега описания. Если тег описания отсутствует,​ то допустима произвольная запись в данное поле   * ''​DESCR''​ - описание машины,​ подтягиваемое из тега описания. Если тег описания отсутствует,​ то допустима произвольная запись в данное поле
 +  * ''​TAGNAME''​ - полное имя тега состояния машины,​ например:​ ''​UVRD.MCHB_100_Plata''​
  
 === MH_COUNTER === === MH_COUNTER ===
Строка 134: Строка 138:
   * ''​SEC''​ - время от старта до стопа в секундах   * ''​SEC''​ - время от старта до стопа в секундах
   ​   ​
 +=== MH_LOGBOOK ===
 +Журнал изменений значений счетчиков пользователем
  
 ===== Принцип работы ===== ===== Принцип работы =====
  
 === Формирование списка типов счетчиков === === Формирование списка типов счетчиков ===
-Создается тип счетчика ''​total''​ (Всего),​ после чего из конфигурации ​загружаются другие типы счетчиков. +Создается тип счетчика ''​total''​ (Всего),​ после чего из базы данных ​загружаются другие типы счетчиков. 
-Тип счетчика ''​total''​ - это несбрасываемый ​счетчик. Данный тип не нужно прописывать,​ он создается по умолчанию. ​Однако в правилах машин он должен ​быть указан ​в составе счетчиков, если он необходим. +Тип счетчика ''​total''​ - это ​обязательный счетчик, ​сбрасываемый только при полной замене оборудования. Данный тип не нужно явно прописывать,​ он создается по умолчанию. ​Другие типы счетчиков добавляются в базу данных ​через клиентское ​приложение.
  
 === Формирование списка машин === === Формирование списка машин ===
Строка 148: Строка 153:
 Из найденого тега статуса формируется имя тега описания,​ после чего из него берется значение - текст описания машины. Если тег описания не найден,​ то берется описание машины из ''​MH_MACH.DESCR'',​ введенное пользователем посредством тега машины ''​descr''​ или непосредственно update-запросом к данной таблице. Из найденого тега статуса формируется имя тега описания,​ после чего из него берется значение - текст описания машины. Если тег описания не найден,​ то берется описание машины из ''​MH_MACH.DESCR'',​ введенное пользователем посредством тега машины ''​descr''​ или непосредственно update-запросом к данной таблице.
  
-Допускается попадание одной и той же машины в несколько правил, при этом у такой машины наборы счетчиков,​ указанные в правилах,​ объединяются.+Допускается попадание одной и той же машины в несколько правил.
  
 === Синхронизация === === Синхронизация ===
-Полученная конфигурация машин и счетчиков сохраняется/​обновляется в базе данных. Из базы данных загружается состояние машин и значения счетчиков. ​+Полученная конфигурация машин и счетчиков сохраняется/​обновляется в базе данных. Из базы данных загружается состояние машин и значения ​назначенных ​счетчиков. ​
  
 === Мониторинг === === Мониторинг ===
Строка 168: Строка 173:
  
 === Запись статистики === === Запись статистики ===
-В 00:00:00 происходит сброс накопленных данных ​для машин, имеющих ​счетчик типа ''​total''​. По каждой машине:​+В 00:00:00 происходит сброс накопленных ​за сутки ​данных ​в таблицу статистики. По каждой машине:​
   * в таблице ''​MH_STAT''​ создается запись:​   * в таблице ''​MH_STAT''​ создается запись:​
     * ''​CNT = MH_MACH_STATE.STATCNT'' ​     * ''​CNT = MH_MACH_STATE.STATCNT'' ​
Строка 186: Строка 191:
 Пример с использованием тегов: Пример с использованием тегов:
 <code java> <code java>
-  long machtime = getTagVal("​mh.M1001.time"​);​+  long machtime = getTagVal("​mh.100.time"​);​
   long systime = getTagVal("​mh.system.time"​);​   long systime = getTagVal("​mh.system.time"​);​
-  int cnt = getTagVal("​mh.M1001.total"​) + (machtime == 0? 0: systime - machtime);+  int cnt = getTagVal("​mh.100.total"​) + (machtime == 0? 0: systime - machtime);
 </​code>​ </​code>​
  
Строка 200: Строка 205:
 join mh_mach_state ms on ms.mach_id = m.id join mh_mach_state ms on ms.mach_id = m.id
 where where
-  m.name = 'M1001' and ct.name '​total'​+  m.name = '100' and ct.id 1
 </​code>​ </​code>​
  
Строка 212: Строка 217:
 В таймеры можно записать значение от 0 включительно и более. В не-таймеры можно записать только 0. В таймеры можно записать значение от 0 включительно и более. В не-таймеры можно записать только 0.
  
-Запись 0 в ''​total'' ​расценивается как ​замена машины на новую, поэтому обнуляются все используемые счетчики.+Запись 0 в ''​total''​ возможна только при остановленной машине.
  
 Если счетчик временно не используется,​ можно его отключить,​ записав значение ''​0x7FFF_FFFF''​. Если счетчик временно не используется,​ можно его отключить,​ записав значение ''​0x7FFF_FFFF''​.
Строка 224: Строка 229:
   * ''​sweep-stat <​yyyymm>''​ - удаление из ''​MH_STAT''​ записей старше заданной даты включительно   * ''​sweep-stat <​yyyymm>''​ - удаление из ''​MH_STAT''​ записей старше заданной даты включительно
   * ''​pach-mach''​ - удаление из ''​MH_MACH''​ не актуальных машин, которые отсутствуют в текущем сформированном списке машин   * ''​pach-mach''​ - удаление из ''​MH_MACH''​ не актуальных машин, которые отсутствуют в текущем сформированном списке машин
 +  * ''​reinit''​ - перезагрузка модуля. Данную команду необходимо послать для вступления в силу изменений,​ сделанных в базе данных клиентом.
  
 Команды ''​sweep-*''​ использовать с осторожностью,​ т.к. можно легко остаться с пустыми таблицами. Команды ''​sweep-*''​ использовать с осторожностью,​ т.к. можно легко остаться с пустыми таблицами.
doc/jroboplc/modules/motohr.1742552147.txt.gz · Последние изменения: 2025/03/21 13:15 — denis
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0