Требуется записать в прибор по MODBUS значение 0, однако, этого сделать не получается...
Вопрос: что происходит со значением "канала" драйвера, после передачи данных? Может быть значение обнуляется и тогда драйвер не воспринимает значение 0?
Сообщения / Posts 78 | Из / From: РФ
| IP / IP: IP адрес / IP address |
A40
unregistered
отправлено / posted
Если перед записью нуля в канал в нем был ноль при старте монитора - в оборудование посылка не уйдет. Установите в 1 атрибут EXEC
IP / IP: IP адрес / IP address |
отправлено / posted
Все каналы OUT самостоятельно отрабатывают свою функцию только при изменении их значения. Если значение было равно "0" и Вы посылаете в него "0", ожидая, что он передаст его своему приемнику, канал не отработает функцию передачи. В этом случае необходимо принудительно заставить отработать этот канал, послав одновременно "1" в его атрибут EXEC (39).
Сообщения / Posts 17316 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Abram Shnider
Active Forum Member / Активный участник форума
Участник № / Member № 4534
отправлено / posted
Всем спасибо! Я так и предполагал...
отправлено / posted
Напрямую слинковать аргументы экранов и программ с шаблонами "Источников/Приемников" не рекомендуется. Кроме начальной простоты в процессе создания проекта это никакого выигрыша не дает. А недостатки могут быть. Один из них связан с рассматриваемой проблемой. С драйвером должен работать явно созданный канал. Им можно управлять, его легко диагностировать и многократно использовать при обработке, архивировании и документировании процессов.
Сообщения / Posts 17316 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Abram Shnider
Active Forum Member / Активный участник форума
Участник № / Member № 4534
отправлено / posted
Вот только очевидно, что в канал типа OUT надо добавить еще один атрибут - "инициализирован" Тогда, если при старте монитора у канала не установлен атрибут "выполнить при старте" то первая запись в канал приводит к выдаче данных в оборудования и поднятию данного атрибута. И далее - только по изменению. А то приходится обходить программно. Ну и кому нужна система, требующая таких костылей?
IP / IP: IP адрес / IP address |
Abram Shnider
Active Forum Member / Активный участник форума
Участник № / Member № 4534
отправлено / posted
Это было бы здорово!
Но, видимо, сам механизм каналов не позволит проделать такую операцию. Следовательно, это относится скорее к функциям МРВ; а это почти тоже самое, что и преодолеть проблему программно
Сообщения / Posts 78 | Из / From: РФ
| IP / IP: IP адрес / IP address |
A40
unregistered
отправлено / posted
Что-что? Если это возможно сделать через свойство CALL или еще как - нельзя внутри канала???
IP / IP: IP адрес / IP address |
Abram Shnider
Active Forum Member / Активный участник форума
Участник № / Member № 4534
отправлено / posted
Реализована. Канал OUT, связанный с "Приемником", у которого установлен флаг "Отработать", передаст свое начальное значение "Приемнику" независимо от того, равно оно 0 или нет.
Сообщения / Posts 17316 | Из / From: Россия
| IP / IP: IP адрес / IP address |
A40
unregistered
отправлено / posted
Понятно. А по сути вопроса? Именно "стартовая раскрутка", которая не работает на МОДБАС при установке "смена типа входа/выхода"? Когда нельзя "затирать" имеющуюся уставку!
[ 06.06.2011, 12:01: Сообщение отредактировал / Message edited by AdAstra Technical Support ]
IP / IP: IP адрес / IP address |
отправлено / posted
"Смена типа вход/выход" возможна только для тех протоколов, где формат команды не зависит от типа "Запись/Чтение". Интерфейсы Modbus и OPC такими возможностями не обладают. Что такое "стартовая раскрутка" и что означает "нельзя "затирать" имеющуюся уставку" - не ясно. Опишите, пожалуйста, проблему более подробно на адрес hotline@adastra.ru.
Сообщения / Posts 17316 | Из / From: Россия
| IP / IP: IP адрес / IP address |
A40
unregistered
отправлено / posted
Я уже писал и решил данную проблему программой, обрабатывающей старт МРВ и поднятие опроса драйвером. А тогда есть стандартнейшая(!) инженерная задача. МРВ на ПК используется как СКАДА. Тогда при его старте мне считать значения "уставок". И позже изменять их. Но не в коем случае не при старте МРВ!!! И ноль или иная величина (а ноль - это не какоето исключительное число) может случайно совпасть с текущей уставкой в контроллере. Особенно, когда тип ВВ - логический. Вот я и спрашивал и предлагал - нельзя ли первый ввод с экрана обрабатывать отдельно внутри системы? Или не возможно в принципе в принятой модели, ибо канал пересчитывается со своим циклом, и не возможно отследить присвоение ему значения ("ввести и передать" или из программы) от "пустого" цикла.
[ 06.06.2011, 12:02: Сообщение отредактировал / Message edited by AdAstra Technical Support ]
IP / IP: IP адрес / IP address |
Abram Shnider
Active Forum Member / Активный участник форума
Участник № / Member № 4534
отправлено / posted
quote:Отправитель / Originally posted by A40: нельзя ли первый ввод с экрана обрабатывать отдельно внутри системы?
Поддерживаю, однако, думаю, что надо так обрабатывать не только первое значение, но и любое другое (т.к. тут совпадения тоже могут иметь место).
Сообщения / Posts 78 | Из / From: РФ
| IP / IP: IP адрес / IP address |
A40
unregistered
отправлено / posted
Уже нет. 1. Вы должны считать значение через канал типа вход. 2. Если нет - то всегда записывайте 1 в EXEC
IP / IP: IP адрес / IP address |
Romсheg
unregistered
отправлено / posted
2A40: Стукните, пожалуйста, мне в аську:
[ 06.06.2011, 12:03: Сообщение отредактировал / Message edited by AdAstra Technical Support ]
IP / IP: IP адрес / IP address |
отправлено / posted
1. Не очень ясно, что такое "первый ввод с экрана" и в чем его особенность. Обрабатывать аргументы экрана вне цикла канала, который его вызывает, нельзя. 2. В последнем релизе при задании каналу OUT, связанному с "Приемником", цикла пересчета CALC_EXE, любое значение, переданное в него с экрана (в любое время), даже если оно совпадает с текущим значением этого канала, будет передано "Приемнику". 3. Если в контроллере функционирует МикроМРВ 6, то канал OUT в МРВ, связанный с атрибутом канала в контроллере, может при старте МРВ изменить на тип OUT на INPUT, считать этот атрибут в контроллере и после этого изменить свой тип на OUT. Для этого каналу OUT в МРВ надо установить флажок "Смена типа Вх/Вых" в бланке "Дополнительно".
Сообщения / Posts 17316 | Из / From: Россия
| IP / IP: IP адрес / IP address |
A40
unregistered
отправлено / posted
quote:Отправитель / Originally posted by AdAstra Technical Support: 1. Не очень ясно, что такое "первый ввод с экрана" и в чем его особенность.
В очередной раз - тем, что при старте МРВ до первой записи в канал OUT нельзя гарантировать равенство значений канала и контроллера.
quote:Отправитель / Originally posted by AdAstra Technical Support: 3. Если в контроллере функционирует МикроМРВ 6, то канал OUT в МРВ, связанный с атрибутом канала в контроллере, может при старте МРВ изменить на тип OUT на INPUT, считать этот атрибут в контроллере и после этого изменить свой тип на OUT. Для этого каналу OUT в МРВ надо установить флажок "Смена типа Вх/Вых" в бланке "Дополнительно".
отправлено / posted
А если связь осуществляется не по внутренним протоколам Trace Mode 6, то начальное значение из контроллера восстановить в канале OUT можно только программно, как Вы и сделали.
Сообщения / Posts 17316 | Из / From: Россия
| IP / IP: IP адрес / IP address |