This is topic Запись по MODBUS in forum Драйверы / Device Drivers at Форум TRACE MODE: техническая поддержка.


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

Posted by Abram Shnider (Участник № / Member № 4534) on :
 
Уважаемая техническая поддержка!

Требуется записать в прибор по MODBUS значение 0, однако, этого сделать не получается...

Вопрос: что происходит со значением "канала" драйвера, после передачи данных? Может быть значение обнуляется и тогда драйвер не воспринимает значение 0?
 
Posted by A40 (Участник № / Member № 3999) on :
 
Если перед записью нуля в канал в нем был ноль при старте монитора - в оборудование посылка не уйдет.
Установите в 1 атрибут EXEC
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Все каналы OUT самостоятельно отрабатывают свою функцию только при изменении их значения.
Если значение было равно "0" и Вы посылаете в него "0", ожидая, что он передаст его своему приемнику, канал не отработает функцию передачи.
В этом случае необходимо принудительно заставить отработать этот канал, послав одновременно "1" в его атрибут EXEC (39).
 
Posted by Abram Shnider (Участник № / Member № 4534) on :
 
Всем спасибо! Я так и предполагал...

А если работать напрямую с драйвером? Насколько я понял, атрибут EXEC в нем не доступен...
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Напрямую слинковать аргументы экранов и программ с шаблонами "Источников/Приемников" не рекомендуется. Кроме начальной простоты в процессе создания проекта это никакого выигрыша не дает. А недостатки могут быть. Один из них связан с рассматриваемой проблемой.
С драйвером должен работать явно созданный канал.
Им можно управлять, его легко диагностировать и многократно использовать при обработке, архивировании и документировании процессов.
 
Posted by Abram Shnider (Участник № / Member № 4534) on :
 
Благодарю за разъяснения!

Абсолютно с Вами согласен по поводу перечисленных преимуществ каналов! Проблема исчерпана.
 
Posted by A40 (Участник № / Member № 3999) on :
 
Вот только очевидно, что в канал типа OUT надо добавить еще один атрибут - "инициализирован"
Тогда, если при старте монитора у канала не установлен атрибут "выполнить при старте" то первая запись в канал приводит к выдаче данных в оборудования и поднятию данного атрибута. И далее - только по изменению.
А то приходится обходить программно. Ну и кому нужна система, требующая таких костылей?
 
Posted by Abram Shnider (Участник № / Member № 4534) on :
 
Это было бы здорово!

Но, видимо, сам механизм каналов не позволит проделать такую операцию. Следовательно, это относится скорее к функциям МРВ; а это почти тоже самое, что и преодолеть проблему программно [Пдмигивание / Wink]
 
Posted by A40 (Участник № / Member № 3999) on :
 
Что-что?
Если это возможно сделать через свойство CALL или еще как - нельзя внутри канала???
 
Posted by Abram Shnider (Участник № / Member № 4534) on :
 
По крайней мере нам оно не доступно... [duno / незнайка]
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Это будет реализовано в ближайшем релизе.
 
Posted by A40 (Участник № / Member № 3999) on :
 
Релиз вышел.
Эта особенность реализована?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Реализована.
Канал OUT, связанный с "Приемником", у которого установлен флаг "Отработать", передаст свое начальное значение "Приемнику" независимо от того, равно оно 0 или нет.
 
Posted by A40 (Участник № / Member № 3999) on :
 
Понятно.
А по сути вопроса? Именно "стартовая раскрутка", которая не работает на МОДБАС при установке "смена типа входа/выхода"? Когда нельзя "затирать" имеющуюся уставку!

[ 06.06.2011, 12:01: Сообщение отредактировал / Message edited by AdAstra Technical Support ]
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
"Смена типа вход/выход" возможна только для тех протоколов, где формат команды не зависит от типа "Запись/Чтение".
Интерфейсы Modbus и OPC такими возможностями не обладают.
Что такое "стартовая раскрутка" и что означает "нельзя "затирать" имеющуюся уставку" - не ясно.
Опишите, пожалуйста, проблему более подробно на адрес hotline@adastra.ru.
 
Posted by A40 (Участник № / Member № 3999) on :
 
Я уже писал и решил данную проблему программой, обрабатывающей старт МРВ и поднятие опроса драйвером.
А тогда есть стандартнейшая(!) инженерная задача. МРВ на ПК используется как СКАДА. Тогда при его старте мне считать значения "уставок". И позже изменять их. Но не в коем случае не при старте МРВ!!! И ноль или иная величина (а ноль - это не какоето исключительное число) может случайно совпасть с текущей уставкой в контроллере. Особенно, когда тип ВВ - логический.
Вот я и спрашивал и предлагал - нельзя ли первый ввод с экрана обрабатывать отдельно внутри системы? Или не возможно в принципе в принятой модели, ибо канал пересчитывается со своим циклом, и не возможно отследить присвоение ему значения ("ввести и передать" или из программы) от "пустого" цикла.

[ 06.06.2011, 12:02: Сообщение отредактировал / Message edited by AdAstra Technical Support ]
 
Posted by Abram Shnider (Участник № / Member № 4534) on :
 
quote:
Отправитель / Originally posted by A40:
нельзя ли первый ввод с экрана обрабатывать отдельно внутри системы?

Поддерживаю, однако, думаю, что надо так обрабатывать не только первое значение, но и любое другое (т.к. тут совпадения тоже могут иметь место).
 
Posted by A40 (Участник № / Member № 3999) on :
 
Уже нет.
1. Вы должны считать значение через канал типа вход.
2. Если нет - то всегда записывайте 1 в EXEC
 
Posted by Romсheg (Участник № / Member № 3792) on :
 
2A40: Стукните, пожалуйста, мне в аську:

[ 06.06.2011, 12:03: Сообщение отредактировал / Message edited by AdAstra Technical Support ]
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1. Не очень ясно, что такое "первый ввод с экрана" и в чем его особенность. Обрабатывать аргументы экрана вне цикла канала, который его вызывает, нельзя.
2. В последнем релизе при задании каналу OUT, связанному с "Приемником", цикла пересчета CALC_EXE, любое значение, переданное в него с экрана (в любое время), даже если оно совпадает с текущим значением этого канала, будет передано "Приемнику".
3. Если в контроллере функционирует МикроМРВ 6, то канал OUT в МРВ, связанный с атрибутом канала в контроллере, может при старте МРВ изменить на тип OUT на INPUT, считать этот атрибут в контроллере и после этого изменить свой тип на OUT.
Для этого каналу OUT в МРВ надо установить флажок "Смена типа Вх/Вых" в бланке "Дополнительно".
 
Posted by A40 (Участник № / Member № 3999) on :
 
quote:
Отправитель / Originally posted by AdAstra Technical Support:
1. Не очень ясно, что такое "первый ввод с экрана" и в чем его особенность.

В очередной раз - тем, что при старте МРВ до первой записи в канал OUT нельзя гарантировать равенство значений канала и контроллера.
quote:
Отправитель / Originally posted by AdAstra Technical Support:
3. Если в контроллере функционирует МикроМРВ 6, то канал OUT в МРВ, связанный с атрибутом канала в контроллере, может при старте МРВ изменить на тип OUT на INPUT, считать этот атрибут в контроллере и после этого изменить свой тип на OUT.
Для этого каналу OUT в МРВ надо установить флажок "Смена типа Вх/Вых" в бланке "Дополнительно".

Это понятно.
А если нет?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
А если связь осуществляется не по внутренним протоколам Trace Mode 6, то начальное значение из контроллера восстановить в канале OUT можно только программно, как Вы и сделали.
 


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



Powered by Infopop Corporation
UBB.classic™ 6.7.2