This is topic БАЗА ДАННЫХ in forum TRACE MODE 7 бесплатная базовая версия / TRACE MODE 7 free basic version at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/60/t/000026.html

Posted by ДИМА (Участник № / Member № 6145) on :
 
Добрый день.
Столкнулся с такой интересной проблемкой в ТМ7,
Создал проект с передачей данных в БД MS Access,
запускаю проверку через профайлер, данные отправляет, но через импульсный триггер по переднему фронту отправляет несколько запросов сразу, причем запросы отправляет сразу при включении профайлера, и что интересно еще несколько запросов отправляет при выключении профайлера.Запускаю этот же проект в мониторе и ничего не происходит, даже если подаю команду на триггер.
Получается что в профайлере передача есть а в мониторе нет, и вот еще, при подаче сигнала на вход триггера, на выходе создается импульс который идет в БД соответственно запрос должен пройти один раз, а по факту запрос идет постоянно пока на вход триггера поступает сигнал. Триггер использую rTrig.
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
Здравствуйте.
Первым делом стоит разделить вопрос на две части.
Во первых, блок rTRIG в 7.00.2 работает корректно и под Профайлером, и под МРВ. После подачи любого положительного значения во вход блока, выход блока держит значение "1" ровно один цикл (цикл пересчета канала).

Во вторых, с каналом Call.SQLQuery нельзя работать с помощью rTRIG. В канал необходимо подавать положительное значение, а канал сам его сбросит. Однако, по Вашей схеме Call.SQLQuery будет принудительно остановлен через один цикл.

Рекомендую, отдельно проверить rTRIG, отдельно проверить работу Call.SQLQuery.

Для активации записи в БД, проще всего запускать по кнопке (прямая передача значения во входное значение канала Call.SQLQuery).
 
Posted by ДИМА (Участник № / Member № 6145) on :
 
Добрый день.
давайте разбираться, я не говорил что триггер не работает, в отладчике как и положено дает импульс на один скан, с этим все в порядке, я писал что запрос в БД происходит сразу после запуска профайлера, сигнал на триггер я даже не подавал, и сигналов проходит порядка 200шт. Мне необходимо считывать показание счетчика 1 раз в сутки, т.е. 1 запрос!
Тоже самое происходит при выключении профайлера, тоже происходит самопроизвольный запрос. После вашего ответа я переделал программу, в шаблонах БД создал DB, отредактировал его. В узле РТМ создал канал Call c типом SQLQuery и вызовом DB.
Создал программу FBD с блоком MOV на входе аргумент real, на выходе тоже аргумент real, перетащил программу в РТМ и привязал аргументы к каналам соответственно, аналоговый с типом rial(R)
и call DB(R), в справочной написано что "Для выполнения SQL-запроса в реальном времени в узле должен быть создан канал класса CALL с типом вызова SQLQuery, настроенный на вызов шаблона связи с БД.
Запрос выполняется при присвоении любого натурального числа атрибуту (0, R) канала."
Все скомпилировал и запустил профайлер, пропал самопроизвольный запрос, но при подачи команды на запрос происходит не один запрос а 103 запроса, т.е. подаю единицу на вход программы и канал SQLQuery отправляет 103 запроса вместо одного. Это происходит в профайлере, а в мониторе запрос вообще не проходит, как с этим бороться?
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
Зачем Вы сделали блок MOVE?
Я предлагал просто кнопку с прямой передачей значения.

Вы же допускаете ошибку в написании FBD-программы.
Когда Вы использовали MOVE (пожалуйста, ознакомьтесь с описанием блоков), то выход MOVE равен входу. Когда Вы подали 1 на вход, то выход будет равен 1 до тех пор, пока Вы его не сбросите.
Т.е., в Вашей конструкции, будет постоянно отрабатывать Call.SQLQuery (он отработает, а MOVE его снова активирует).

Так как Вам необходимо раз в сутки записывать данные в БД, то лучше всего в шаблоне программы задать условие отправки команды по времени, например, текущее время (часы, минуты и секунды) равны заданному значению. Тогда посылаем 1. Все. В указанное время будет подана команда, а в следующую секунду уже условие выполняться не будет и 1 не будет подана на выход программы.

Данный топик переносится в раздел "базовой версии".
 
Posted by ДИМА (Участник № / Member № 6145) on :
 
Кнопка мне не подходит, команду на запрос отправляет контроллер, а далее ТМ передает в БД, в ТМ6 у меня это было реализовано именно через импульсный триггер и все прекрасно работает. Задача заключается в передаче показания счетчиков по команде контроллера, время передачи определяет контроллер. Я могу отправить Вам проект ТМ7 и ТМ6, и если Вы сможете посмотреть и подсказать что не так, то буду вам признателен. Проект ТМ6 работает нормально, а вот с ТМ7 проблемы, или если можно вышлите пример передачи в БД одного запроса INSERT по команде от внешнего контроллера,
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
пришлите проект ТМ7 (упрощенный, удалите все лишнее) на электронную почту Службы технической поддержки, с описанием что и где.
 


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2