ДИМА
Forum Haunter / Завсегдатай форума
Участник № / Member № 6145
отправлено / posted
Добрый день. Столкнулся с такой интересной проблемкой в ТМ7, Создал проект с передачей данных в БД MS Access, запускаю проверку через профайлер, данные отправляет, но через импульсный триггер по переднему фронту отправляет несколько запросов сразу, причем запросы отправляет сразу при включении профайлера, и что интересно еще несколько запросов отправляет при выключении профайлера.Запускаю этот же проект в мониторе и ничего не происходит, даже если подаю команду на триггер. Получается что в профайлере передача есть а в мониторе нет, и вот еще, при подаче сигнала на вход триггера, на выходе создается импульс который идет в БД соответственно запрос должен пройти один раз, а по факту запрос идет постоянно пока на вход триггера поступает сигнал. Триггер использую rTrig.
Сообщения / Posts 121 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Здравствуйте. Первым делом стоит разделить вопрос на две части. Во первых, блок rTRIG в 7.00.2 работает корректно и под Профайлером, и под МРВ. После подачи любого положительного значения во вход блока, выход блока держит значение "1" ровно один цикл (цикл пересчета канала).
Во вторых, с каналом Call.SQLQuery нельзя работать с помощью rTRIG. В канал необходимо подавать положительное значение, а канал сам его сбросит. Однако, по Вашей схеме Call.SQLQuery будет принудительно остановлен через один цикл.
Рекомендую, отдельно проверить rTRIG, отдельно проверить работу Call.SQLQuery.
Для активации записи в БД, проще всего запускать по кнопке (прямая передача значения во входное значение канала Call.SQLQuery).
Сообщения / Posts 17345 | Из / From: Россия
| IP / IP: IP адрес / IP address |
ДИМА
Forum Haunter / Завсегдатай форума
Участник № / Member № 6145
отправлено / posted
Добрый день. давайте разбираться, я не говорил что триггер не работает, в отладчике как и положено дает импульс на один скан, с этим все в порядке, я писал что запрос в БД происходит сразу после запуска профайлера, сигнал на триггер я даже не подавал, и сигналов проходит порядка 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 запроса вместо одного. Это происходит в профайлере, а в мониторе запрос вообще не проходит, как с этим бороться?
Сообщения / Posts 121 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Зачем Вы сделали блок MOVE? Я предлагал просто кнопку с прямой передачей значения.
Вы же допускаете ошибку в написании FBD-программы. Когда Вы использовали MOVE (пожалуйста, ознакомьтесь с описанием блоков), то выход MOVE равен входу. Когда Вы подали 1 на вход, то выход будет равен 1 до тех пор, пока Вы его не сбросите. Т.е., в Вашей конструкции, будет постоянно отрабатывать Call.SQLQuery (он отработает, а MOVE его снова активирует).
Так как Вам необходимо раз в сутки записывать данные в БД, то лучше всего в шаблоне программы задать условие отправки команды по времени, например, текущее время (часы, минуты и секунды) равны заданному значению. Тогда посылаем 1. Все. В указанное время будет подана команда, а в следующую секунду уже условие выполняться не будет и 1 не будет подана на выход программы.
ДИМА
Forum Haunter / Завсегдатай форума
Участник № / Member № 6145
отправлено / posted
Кнопка мне не подходит, команду на запрос отправляет контроллер, а далее ТМ передает в БД, в ТМ6 у меня это было реализовано именно через импульсный триггер и все прекрасно работает. Задача заключается в передаче показания счетчиков по команде контроллера, время передачи определяет контроллер. Я могу отправить Вам проект ТМ7 и ТМ6, и если Вы сможете посмотреть и подсказать что не так, то буду вам признателен. Проект ТМ6 работает нормально, а вот с ТМ7 проблемы, или если можно вышлите пример передачи в БД одного запроса INSERT по команде от внешнего контроллера,
Сообщения / Posts 121 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
пришлите проект ТМ7 (упрощенный, удалите все лишнее) на электронную почту Службы технической поддержки, с описанием что и где.
Сообщения / Posts 17345 | Из / From: Россия
| IP / IP: IP адрес / IP address |