FAQ

Конкретные решения, лайфхаки, подказки и объяснение неочевидных вещей, "маленькие хитрости"

Обсуждение SCADA-систем: Citect SCADA, Vijeo Citect, CitectSCADA, CitectFacilities, PowerLogic SCADA, PowerSCADA, MX4SCADA, Desigo Insight.
Аватара пользователя
alex
Администратор
Сообщений в теме: 40
Сообщения: 1627
Зарегистрирован: 05 апр 2010, 21:58
Откуда: Москва
Благодарил (а): 41 раз
Поблагодарили: 82 раза
Контактная информация:

FAQ: Vijeo Citect Runtime. Высокая нагрузка на серверный компьютер

#21

Сообщение alex » 25 июн 2013, 23:34

Это можно увидеть также по высокой загрузке процессора серверного компьютера. Если на серверной машине используется многоядерный процессор, можно изучить нагрузку на каждое ядро процессора, возможно одно или несколько ядер будут иметь полную нагрузку.

Vijeo Citect Runtime. Высокая нагрузка на серверный компьютер
Если это так и используется Vijeo Citect 7.20 SP4, то можно «поиграть» привязкой процессов к ядрам или же отключить привязку, отдав на откуп распределение процессов по ядрам процессора операционной системе. Управление привязкой к ядрам или же ее отключение происходит через параметр CPU в Citect.ini, который можно использовать в соответствующей секции соответствующего сервера или же секции клиента.



Аватара пользователя
alex
Администратор
Сообщений в теме: 40
Сообщения: 1627
Зарегистрирован: 05 апр 2010, 21:58
Откуда: Москва
Благодарил (а): 41 раз
Поблагодарили: 82 раза
Контактная информация:

FAQ: Cicode Editor. Как удалить cicode-файл из проекта

#22

Сообщение alex » 10 июл 2013, 13:26

Что может быть очевиднее, открываем Cicode Editor в окне файлов находим нужный нам cicode-файл и удаляем его...

Cicode Editor. Как удалить cicode-файл из проекта
Но не так все просто как может показаться. Оказывается в Cicode Editor нет функции удаления cicode-файлов, нет это функции и в Citect Explorer, если пройди по дереву проекта к ветке Cicode Files. Так как же удалить нужный нам, а вернее ненужный нам cicode-файл. Единственный способ удалить cicode-файл это перейти Citect Explorer, через меню View->Current Project Folder открыть директорию проекта найти cicode-файл с нужным нам именем, выделить и удалить его клавишей DEL.



Аватара пользователя
alex
Администратор
Сообщений в теме: 40
Сообщения: 1627
Зарегистрирован: 05 апр 2010, 21:58
Откуда: Москва
Благодарил (а): 41 раз
Поблагодарили: 82 раза
Контактная информация:

Vijeo Citect Runtime. Unable to write to Event Log [The Event Log is full]

#23

Сообщение alex » 03 сен 2013, 13:36

Вы запускаете Runtime и запуск прерывается сообщением в Message Box:

ScreenHunter_166 Sep. 03 12.18.jpg


Код: Выделить всё

Unable to write to Event Log [The Event Log is full]:
The Citect process (Client, ClusterName.ReportServerName, ClusterName.TrendServerName, ClusterName.AlarmServerName,ClusterName.IOServerName) is stopped.

Что делать?

Vijeo Citect Runtime. Unable to write to Event Log. The Event Log is full
Это проблема возникает, если переполнился журнал событий операционной системы Windows. Поэтому для устранения этой ошибки необходимо очистить журнал событий Windows. Для этого идем Пуск->Панель управления->Администрирование и запускаем апплет "Просмотр событий". Теперь выбираем журнал "Приложение" и из контекстного меню выберите пункт "Стереть все события". Вот и все! Не забудьте перезапустить проект.
У вас нет необходимых прав для просмотра вложений в этом сообщении.



Аватара пользователя
alex
Администратор
Сообщений в теме: 40
Сообщения: 1627
Зарегистрирован: 05 апр 2010, 21:58
Откуда: Москва
Благодарил (а): 41 раз
Поблагодарили: 82 раза
Контактная информация:

FAQ: Vijeo Citect Project Editor. Как трендировать (от слова Trend) алармы через графический компонент Trend?

#24

Сообщение alex » 30 янв 2014, 16:15

Казалось бы, зачем использовать этот устаревший графический компонент для отображения графиков, когда есть такой мощный и функциональный графический компонент как Process Analyst? Все просто Process Analyst при всех своих преимуществах, имеет один главный недостаток – он достаточно сложный и его функционал может быть избыточен. В этом случае наш старый, но добрый компонент Trend отлично справляется с простыми задачами отображения… тегов трендов, но не алармов. Как же мы можем заставим его отображать алармы?

Vijeo Citect Project Editor. Как трендировать (от слова Trend) алармы через графический компонент Trend?
Решение оказывается достаточно простое, но не всегда приходит в голову при отсутствии достаточного опыта. Ведь никто не запрещает там создать тег тренда для тега, для которого собственно мы создали аларм. Таким образом, один тег может одновременно и "алармиться" и "трендиться" и поэтому мы может его сконфигурировать на одно из восьми перьев графического компонента Trend. Вот и все.



Аватара пользователя
alex
Администратор
Сообщений в теме: 40
Сообщения: 1627
Зарегистрирован: 05 апр 2010, 21:58
Откуда: Москва
Благодарил (а): 41 раз
Поблагодарили: 82 раза
Контактная информация:

FAQ: Citect Graphics Builder. Out of Memory

#25

Сообщение alex » 23 мар 2014, 12:27

Бывают ситуации, когда при открытии графической страницы в Citect Graphics Builder по окончании загрузки страницы, а в некоторых случаях и в начале можно получить сообщение такого вида:

Graphics Builder - Out of Memory.PNG

...и графическая страница конечно же не открывается. Понятно что закончилась память, но судя по диспетчеру задача недостатка в памяти нет. Так в чем же причина?

Citect Graphics Builder. Out of Memory
Причиной может быть достаточно большое количество так называемых точек анимации на графической странице, которое превышает то, которое установлено в файле Citect.ini (по умолчанию 1024). Что делать уже понятно. Открываем Computer Setup Editor (из любого редактора Tools->Computer Setup Editor). Находим секцию Animation (если ее нет, создаем) и для параметра MaxAn (если его нет, то тоже создаем) и устанавливаем большее значение, например 3096, затем сохраняем изменение в Citect.ini и пытаемся открыть страницу повторно.

Совет: Большое количество точек анимации увеличивает расход памяти и снижает производительность системы в runtime, поэтому это необходимо учитывать при проектировании больших систем.
У вас нет необходимых прав для просмотра вложений в этом сообщении.



Аватара пользователя
alex
Администратор
Сообщений в теме: 40
Сообщения: 1627
Зарегистрирован: 05 апр 2010, 21:58
Откуда: Москва
Благодарил (а): 41 раз
Поблагодарили: 82 раза
Контактная информация:

Vijeo Citect v7.20. Полная локализация системы алармов

#26

Сообщение alex » 11 июн 2014, 15:55

Как выяснилось в результате обсуждения с участником нашего форума gogol, не все поля системы алармов локализуются на русский язык штатным способом после добавления в проект поддержки русского языка. Это касается версии Vijeo Citect v7.20, т.к. в версии, например, Vijeo Citect v7.40 все локализуется штатно. Как же удалось решить эту проблему?

Vijeo Citect v7.20. Полная локализация системы алармов
Эту проблему удалось решить двумя альтернативными способами, подробности можно узнать из прочтения темы форума Как мне заменить отображение поля Type аларма?



Аватара пользователя
alex
Администратор
Сообщений в теме: 40
Сообщения: 1627
Зарегистрирован: 05 апр 2010, 21:58
Откуда: Москва
Благодарил (а): 41 раз
Поблагодарили: 82 раза
Контактная информация:

Citect Project Editor. Использование CitectVBA и Cicode в полях команд и выражений

#27

Сообщение alex » 20 июн 2014, 10:31

При реализации системы диспетчеризации на Vijeo Citect достаточно обычным является ситуация, когда в полях выражений или полях команд приходится использовать Cicode, это иногда удобно, и это знают практически все разработчики. Но оказывается наравне с Cicode можно использовать и CitectVBA. Как? Смотрите ответ ниже...

Citect Project Editor. Использование CitectVBA и Cicode в полях команд и выражений
Vijeo Citect настроен по умолчанию так, что ожидает в полях выражений и команд Cicode. Но можно изменить ожидание Vijeo Citect, предварив код на CitectVBA, специальным ключевым словом CiVBA, смотрите код ниже


CiVBA - это команда переопределения используемого языка программирования, компилятор, когда встречает данное ключевое слово, понимает, что дальше идет код на CitectVBA и соответствующим образом его компилирует.

Несколько нюансов:
  1. Команда переопределения действует только в рамках конкретного поля выражения или команды, где она использована, т.е. в другом поле опять ожидается использование языка программирования по умолчанию, т.е. Cicode;
  2. В одном поле нельзя использовать одновременно код на Cicode и CitectVBA.



Аватара пользователя
alex
Администратор
Сообщений в теме: 40
Сообщения: 1627
Зарегистрирован: 05 апр 2010, 21:58
Откуда: Москва
Благодарил (а): 41 раз
Поблагодарили: 82 раза
Контактная информация:

FAQ: Vijeo Citect Runtime. Резервирование. Уменьшение времени переключения

#28

Сообщение alex » 24 июл 2014, 09:51

Резервирование, как способ обеспечения высокой надежности и доступности данным из системы диспетчеризации продумана и реализована в Vijeo Citect на очень высоком уровне, время переключения с основного на резервный сервер может составлять 1 секунду и меньше, но есть нюанс, который увеличивает время переключения до 20-30 секунд и дело тут не в SCADA-системе...

FAQ: Vijeo Citect Runtime. Резервирование. Уменьшение времени переключения
Этот нюанс заключается в том, что если до другого сервера невозможно "достучаться" (например, обрыв сетевого кабеля или сервер просто выключен) в силу вступает
особенности работы стека протоколов TCP/IP операционной системы Windows
Чтобы увидеть ссылку зарегистрируйтесь или войдите под своим логином.
, благодаря чему время определения отсутствия связи с удаленным сервером увеличивается до выше названных значений. Чтобы уменьшить это время до приемлемых значений можно внести некоторые изменения в значение параметров отвечающих за это, которые находятся под следующей веткой реестра:
[syntax=reg]HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters[/syntax]Описание влияющих параметров:
  • TcpInitialRtt - Данный параметр должен быть задан для каждого сетевого адаптера (относительная ветка ..\Interfaces\{код адаптера}, параметр управляет таймер повторной передачи. Он определяет время в миллисекундах до начала повторного запроса на установление нового соединения. По умолчанию значение равно 3000. Параметр по умолчанию отсутствует в реестре, поэтому его необходимо создать, параметры создания следующие:

    Код: Выделить всё

    Value Name:  TcpInitialRtt
    Data Type:   REG_DWORD
  • TcpMaxConnectRetransmissions - Значение определяет максимальное количество повторных передач, которые можно отправить для установления нового соединения. По умолчания это значение равно 2. Данный параметр по умолчанию отсутствует в реестре по выше приведенной ветке, поэтому его необходимо создать, параметры создания следующие:

    Код: Выделить всё

    Value Name:  TcpMaxConnectRetransmissions
    Data Type:   REG_DWORD
  • TcpMaxDataRetransmissions - Значение определяет максимальное количество повторных передач, которые могут быть посланы для установления нового соединения. По умолчанию это значение равно 5. Данный параметр по умолчанию отсутствует в реестре по выше приведенной ветке, поэтому его необходимо создать, параметры создания следующие:

    Код: Выделить всё

    Value Name:  TcpMaxDataRetransmissions
    Data Type:   REG_DWORD
  • Таймаут повторной передачи настраивается на лету, вычисляя SRTT (smoothed round trip time, время между отправкой пакета серверу и получением подтверждения от него) в соответствии с характеристиками соединения. Время таймаута каждой повторной передачи удваивается.

В соответствии со статьей
TCP/IP Configuration Parameters
Чтобы увидеть ссылку зарегистрируйтесь или войдите под своим логином.
по умолчанию таймаут получается равным: 3000 + 3000*2 + 3000*2*2 = 21000 миллисекунд = 21 секунда. Поэтому "играя" данными параметрами можно добиться нужного времени таймаута как в сторону его уменьшения, так и в сторону увеличения, что может иногда тоже пригодиться.

Из практики, при изменении значения параметра TcpMaxDataRetransmissions на 2 вместо 5, мы получаем таймаут равный в среднем около 5 секунд вместо 20-30 секунд, что собственно нам и нужно.



Аватара пользователя
alex
Администратор
Сообщений в теме: 40
Сообщения: 1627
Зарегистрирован: 05 апр 2010, 21:58
Откуда: Москва
Благодарил (а): 41 раз
Поблагодарили: 82 раза
Контактная информация:

FAQ: Vijeo Citect. Форматирование строк "на лету"

#29

Сообщение alex » 15 авг 2014, 08:57

Обычно, когда вам надо получить заданный формат представления значения числа (заданное количество знаков до запятой и после) в виде строки, используется поле Format в формах Variable Tags и Local Variables в Citect Project Editor при конфигурировании соответствующего тега. Это конечно хорошо, но не всегда удобно, т.к. после этого необходимо перекомпилировать проект, чтобы изменения вступили в силу. Оказывается, есть более простой и быстрой способ задать формат представления значения числа без перекомпиляции проекта...

Vijeo Citect. Форматирование строк "на лету"
В Vijeo Citect существует так называемый оператор форматирования (format operator), который позволяет конвертировать значение целых (INT) и плавающих (REAL) типов чисел в строку с заданным форматом представления что называется "на лету" в объектах на графических страницах и в функциях Cicode. Вот как его использовать в Cicode Editor:

INT i;
REAL r;
STRING s;

// форматирование целого значения

i = 100;
s = i:####;

// форматирование плавающего значения

r = 100.12345;
s = r:###.##;

// форматирование значения тега. Foo - имя переменного тега типа REAL.

s = Foo:###.##;

Вот использование оператора форматирования в объектах графических страниц:

Formating_on_the_fly.png

p.s. В заключении надо сказать, что использование оператора форматирования перекрывает настройки, сделанные в соответствующих полях форм конфигурирования локальных и переменных тегов, если оператор применяется для вывода форматированного значения соответствующих тегов.
У вас нет необходимых прав для просмотра вложений в этом сообщении.



Аватара пользователя
alex
Администратор
Сообщений в теме: 40
Сообщения: 1627
Зарегистрирован: 05 апр 2010, 21:58
Откуда: Москва
Благодарил (а): 41 раз
Поблагодарили: 82 раза
Контактная информация:

FAQ: Vijeo Citect Runtime. Использование эффекта прозрачности окон

#30

Сообщение alex » 20 авг 2014, 11:43

Как известно в SCADA-системе Vijeo Citect нет штатно опции делать окна полупрозрачными. В принципе и без этого жить можно, но наличие данной возможности позволяет подойти творчески с созданию графических страниц и системы визуализации в целом и может быть очень полезен, например, используя эффект полупрозрачности всплывающих окон, вы не закрываете полностью важный участок технологической мнемосхемы, который должен быть всегда на виду. Как же это реализовать в Vijeo Citect? См. ниже под спойлером...

Vijeo Citect Runtime. Использование эффекта прозрачности окон
Конечно здесь не обошлось без использования мощных возможностей операционной системы Windows, доступ к которым мы можешь осуществить через интерфейс прикладного программирования WinAPI, и в свою очередь, уже из Vijeo Citect, с помощью Cicode через вызов соответствующий функций DLL. Как это реализовано можно посмотреть в разделе Скрипты на Сicode и CiVBA в помощь разработчикам, конкретно пост Сicode. Функция создания полупрозрачных окон.
Функция интересна тем, что позволяет устанавливать не только уровень прозрачности окон, но и делать конкретные цвета полностью прозрачными. Как ею пользоваться:

FUNCTION ShowPopupWindow ()

    INT iWndHnd;

    WinNewAt("PopupWindow",100, 200, 2);
    iWndHnd=WinGetWndHnd();
    SetTransparency(iWndHnd, iReplaceColor, iTransparency);

END

Визуальный эффект от работы этой функции приведен ниже в виде картинок.

Vijeo Citect Runtime.Transparancy effect.1.png

Vijeo Citect Runtime.Transparancy effect.2.png

Vijeo Citect Runtime.Transparancy effect.3.png

Vijeo Citect Runtime.Transparancy effect.4.png

Vijeo Citect Runtime.Transparancy effect.5.png

Vijeo Citect Runtime.Transparancy effect.6.png

Vijeo Citect Runtime.Transparancy effect.7.png

p.s. Результаты впечатляющие! Надо сказать что эти эффекты применимы не только к всплывающим окнам, но их можно применить и к главному окну клиента визуализации.
У вас нет необходимых прав для просмотра вложений в этом сообщении.




Если эта тема может быть полезна другим, поделитесь ссылкой:

Вернуться в «Citect SCADA, Vijeo Citect, CitectSCADA, CitectFacilities, PowerLogic SCADA, PowerSCADA, MX4SCADA, Desigo Insight»