PDA

Просмотр полной версии : Обмен данными между Объектом и ОРС-сервером



Александр
26.10.2017, 12:06
Добрый день!
Возник вопрос по обмену данными между объектом и ОРС-сервером.
При состоянии команды1 - ВКЛ, соответствующий тег в ОРС-сервере имеет значение «1», выход модуля дискретного вывода должен быть замкнут, и так и происходит. Но в случае выключения питания модуля и последующего включения, несмотря на то что состояние команды1 - ВКЛ, соответствующий тег ОРС-сервера (после выключения модуля получивший от него данные о состоянии ) имеет значение «0», и не принимает значения связанной с ним команды1.
Команда1 в вложенном объекте, менял в свойствах команды «Опрос» тип опроса на периодический, 1 такт. Выставлял тот же тип опроса в свойствах родительского объекта (у которого в общем настроен опрос по изменению входов с малой мертвой зоной), включал "Собственный цикл" у подобъекта содержащего команду1. В настройках тега ОРС-сервера , во вкладке Опрос выхода, галочка «по изменению» снята. У ОРС-сервера в настройках "Периодический опрос изменений, период: 1000мс, мертвая зона 0,1%", в разделе "Передача данных ОРС-серверу" Периодическая, период: 1000". Все равно не передается значение команды1 серверу. Понял что не понимаю принципов настройки опроса )
По идее «Опрос выхода» это настройка того как переменная отдает данные, а «Опрос», настройки получения. Пытался этот момент разобрать по справке MS, но все равно нет четкого понимания что за что отвечает. Что делаю не так?

SCADAMaster
26.10.2017, 13:25
Даже если запись будет периодическая, значение в ОРС не меняется, и он его не пишет. А если бы писал постоянно, то это завалило бы опрос.
В приложении проектное решенение, которое будет записывать значение если оно отличается от заданного.

Александр
27.10.2017, 07:43
1) Попробую применить этот способ, хотя не понимаю почему не может работать предусмотренный механизм обмена данными - периодический опрос ОРС-сервером отдельных команд объекта. В общем-то приемлемо было бы увеличить период опроса до 10 секунд допустим, если это решит проблему. Не могу тогда понять как вообще должен работать периодический опрос, ведь периодически опрашивать и не принимать значения смысла нет... Ведь это же задумано именно для этого-чтобы неизменяющиеся значения принудительно передавались с заданной частотой. Вопрос не срочный, можно ли в перспективе решить этот вопрос стандартным способом? Версия 3.8.0.59467 3.8(30009914_6764)_17_07_17_12_35 с лицензией.
2) Тут вылез не менее неприятный момент: функция "восстановление при рестарте" работает некорректно. Отдельным командам в свойствах устанавливаю "восстановление при рестарте", а в вкладке объекта "Опрос" - "Восстановление при рестарте", в перечне команд которым установлено это восстановление, присутствуют только часть этих команд. Флаг "Хранить" и "Конфигурация" установлены. Соответственно при перезапуске программы только часть команд восстанавливают предыдущие значения. При том что таких переменных более 100 (команды на включение, задание уставок) это очень актуально. Может есть смысл скинуть вам проект или его часть, чтобы смогли определить в чем проблема?

SCADAMaster
27.10.2017, 09:36
2) Тут вылез не менее неприятный момент: функция "восстановление при рестарте" работает некорректно. Отдельным командам в свойствах устанавливаю "восстановление при рестарте", а в вкладке объекта "Опрос" - "Восстановление при рестарте", в перечне команд которым установлено это восстановление, присутствуют только часть этих команд. Флаг "Хранить" и "Конфигурация" установлены. Соответственно при перезапуске программы только часть команд восстанавливают предыдущие значения. При том что таких переменных более 100 (команды на включение, задание уставок) это очень актуально. Может есть смысл скинуть вам проект или его часть, чтобы смогли определить в чем проблема?
Так где именно вы включили восстановление при рестарте.
Команды будут восстанавливаться, только если у них на вкладке "Опрос выхода" стоит флаг "Восстановление при рестарте". У проблемных переменных он стоит?

Александр
27.10.2017, 10:55
Да, конечно, у всех команд которые должны при старте принимать последние значения стоит флаг. На первом скрине видно, что допустим у объекта "Синтез" - "Д352 1-4" - "Управление ЭНГЛУ" - команда "Д352-1" флаг стоит, а на втором скрине видно что нет вообще этой ветки "Синтез.Д352 1-4.Управление ЭНГЛУ."
33893 33894

SCADAMaster
27.10.2017, 12:37
И эта переменная не сохраняет свое значение? Приложите проект (проект - Экспортировать).

Александр
30.10.2017, 08:00
Присоединил архив с проектом. На данный момент 3 вопроса.
1) Восстановление при рестарте команд (все кнопки с мнемосхем, и все команды с вводом данных на мнемосхемах).
2) Периодическая передача данных с команд объекта ОРС-серверу (даже если значение команды не меняется) - Для примера: (Объект. Синтез. Давление техн. Блокировки по давлению. Уставки блокировок ТРМ138. Блок по Р в Д-352-4. Команда на мод вывода.)
3) Тренды на мнемосхемах подобъектов, в режиме только графики, не могу понять как зафиксировать интервал времени, чтобы оператор не мог масштабировать его колесом мыши, чтобы не мог сбить 30-минутный интервал на множестве трендов.

SCADAMaster
30.10.2017, 09:48
Присоединил архив с проектом. На данный момент 3 вопроса.
1) Восстановление при рестарте команд (все кнопки с мнемосхем, и все команды с вводом данных на мнемосхемах).

Включили команды Синтез.П351 1-7.Управление ЭНГЛУ.П351-1 (2,3). Выключили скаду, включили скаду - все значения во Вкл.
На каких именно переменных проблема, и как она проявляется?



2) Периодическая передача данных с команд объекта ОРС-серверу (даже если значение команды не меняется) - Для примера: (Объект. Синтез. Давление техн. Блокировки по давлению. Уставки блокировок ТРМ138. Блок по Р в Д-352-4. Команда на мод вывода.)

Мы вам написали как нужно сделать.



3) Тренды на мнемосхемах подобъектов, в режиме только графики, не могу понять как зафиксировать интервал времени, чтобы оператор не мог масштабировать его колесом мыши, чтобы не мог сбить 30-минутный интервал на множестве трендов.
Продвинутый уровень - Общие настройки - Производительность отрисовки->мышь граф области выключить.

Александр
31.10.2017, 08:00
Спасибо за оперативную помощь.
1) По восстановлению ситуация такая: несколько недель назад настроил и все работало. Спустя какое-то время увидел что в Системе, у ОРС тегов тоже включено "Восстановление при рестарте", выключил, исходя из того чтобы исключить дублирование (раз у команды в Объекте, связанной с тегом ОРС включена функция "Восст. при рест.", то зачем ее включать и у тега ОРС). А на днях заметил что не все команды при запуске Скады принимают предыдущие значения. Смутило и то что на вкладке Объекта - Опрос- Восст. при рестарте - не было части команд, которым назначена эта функция. Сейчас проверяю, вроде все восстанавливаются. У всех тегов ОРС функция "Восст. при рест." тоже включена. Может это объяснять то что ранее не все команды восстанавливались?
2) Еще вопрос по трендам в режиме "только график". Можно ли сделать так чтобы не было вертикального курсора (вертикальная линия), который дойдя до правого края поля тренда, делает отступ назад, и получается что около 30% правой части графика не используются (не отстраивается кривая), а при таком малом размере поля графиков как в проекте, это потеря полезного пространства. Еще хотелось бы услышать ваше мнение по поводу такого решения - большое количество трендов в режиме "только графики", на мнемосхемах. С точки зрения правильности решения, и загруженности процесса.

SCADAMaster
31.10.2017, 10:04
Спасибо за оперативную помощь.
1) По восстановлению ситуация такая: несколько недель назад настроил и все работало. Спустя какое-то время увидел что в Системе, у ОРС тегов тоже включено "Восстановление при рестарте", выключил, исходя из того чтобы исключить дублирование (раз у команды в Объекте, связанной с тегом ОРС включена функция "Восст. при рест.", то зачем ее включать и у тега ОРС). А на днях заметил что не все команды при запуске Скады принимают предыдущие значения. Смутило и то что на вкладке Объекта - Опрос- Восст. при рестарте - не было части команд, которым назначена эта функция. Сейчас проверяю, вроде все восстанавливаются. У всех тегов ОРС функция "Восст. при рест." тоже включена. Может это объяснять то что ранее не все команды восстанавливались?

Если покажите проект на котором проблема проявляется.



2) Еще вопрос по трендам в режиме "только график". Можно ли сделать так чтобы не было вертикального курсора (вертикальная линия), который дойдя до правого края поля тренда, делает отступ назад, и получается что около 30% правой части графика не используются (не отстраивается кривая), а при таком малом размере поля графиков как в проекте, это потеря полезного пространства.
Уменьшите значение параметра Производительность - Сдвиг автопрокрутки.



Еще хотелось бы услышать ваше мнение по поводу такого решения - большое количество трендов в режиме "только графики", на мнемосхемах. С точки зрения правильности решения, и загруженности процесса.
Конечно это повысит нагрузку. Каждый график - это WPF контрол, который требователен к ресурсам.

Александр
02.11.2017, 07:12
Если покажите проект на котором проблема проявляется.

Я вам как раз этот проект и отправил. Ситуация в том что настройка "восст. при рест." у команд сделана, а в списке восстанавливающихся команд на вкладке "Опрос" они присутствуют не все, и было пару раз зафиксировано что отдельные команды не восстановили предыдущее состояние, какие именно сейчас не скажу (но у них также включено "восст. при рест."). Может в список восстанавливающихся команд попадают только те у которых есть "Текущее значение", а те у которых "значение до опроса" не попадают в список? Вы можете сказать - все команды у которых включена эта функция должны присутствовать в списке восстанавливающихся команд на вкладке "Опрос" или нет? Спасибо.

SCADAMaster
02.11.2017, 10:16
Я вам как раз этот проект и отправил.
Имелось ввиду проект на котором проблема проявляется. На присланном - не проявляется.


Вы можете сказать - все команды у которых включена эта функция должны присутствовать в списке восстанавливающихся команд на вкладке "Опрос" или нет? Спасибо.
В список на вкладке объект Восстановление при рестарте попадают те переменные, у которых есть значение, которое будет восстановлено. В приложении скриншот, в котором переменные, которые были у вас не видны в списке появились.

Александр
02.11.2017, 10:53
Понятно, спасибо, буду наблюдать.

Адлан
07.10.2019, 23:37
Здравствуйте!
В проекте управление частотниками - записывается командное слово и скорость в два соседних регистра (h2000 и h2001 соответственно), читается состояние и аварии из двух других регистров. В объекте скорость задается командой (тип целый), командное слово - выходной переменной ST программы (тип короткий целый). Если выставить в свойствах команды (задающей скорость) флаг "восстановление при рестарте", программа пишет в ПЧ не один, а сразу два регистра - в результате данные "попадают не туда" и ПЧ не управляется. Конечно, можно задать адрес регистра "с поправкой" или решить с перестановкой байт/слов, но хотелось бы понимать, что происходит и почему. Проект (почему-то) получился слишком большой - хлопотно выкладывать

SCADAMaster
08.10.2019, 08:56
Связь идет через Modbus Universal?
Вообще, если контроллер способен хранить значение уставки, или тем более если уставка может меняться локально на приборе, то восстановление при рестарте использовать нельзя. Нужно использовать команду с обратной связью.

Адлан
08.10.2019, 17:15
Связь идет через Modbus Universal?
.
Да, Modbus Universal. С ключом. Сегодня я не на объекте, завтра попробую без восстановления. А вот с двумя регистрами, все равно, не понятно

SCADAMaster
08.10.2019, 19:20
А что с двумя регистрами? Включаете у тега "Наличие отдельного регистра для записи"

Адлан
08.10.2019, 19:37
ОК, благодарю. Завтра попробую