Pull to refresh

Обзор ТЕКОН SCADA

Reading time 15 min
Views 33K
image image

Обзор SCADA системы ТЕКОН в рамках импортозамещения.
Летом этого года в течение 3 дней знакомился с этой SCADA системой с цель понять стоит ли её применять. Пациента рассматривал на примере его же демо-проекта. Поэтому знакомство поверхностное, не то что с OpenSCADA в моей первой статье.
Применяют SCADA ТЕКОН (в основном) сами разработчики, поэтому информации «с полей» о ней мало. Если будут комментарии работавших с ней — замечательно.
Результатами нано-обзора делюсь с аудиторией Хабра.




Сделал виртуалку, установил SCADA, запускаю — не работает (сейчас уже точно не помню как именно это выражалось), полдня бодался, уже хотел плюнуть и забыть, но вспомнил упоминание о том, что SCADA использует БД FireBird — вроде как на проблему с БД и ругается — посмотрел папку куда SCADA установилась — нет ничего от FireBird — скачал БД, установил — SCADA заработала. Мелочь, но портит первое впечатление.

ОГЛАВЛЕНИЕ

1. Обзор видеокадров демо-проекта RUNTIME

  • Введение
  • Мнемокадры
  • Графический редактор
  • Динамическое представление
  • Аниматоры
  • Рецепторы
  • Скрипты
  • Барграф, шкала, точка перемещения
  • Мнемосимволы, объектные окна
  • XY тренд
  • Редактор FBD
  • Фиксированные шаблоны
  • Графики
  • Перечень событий
  • Хроника событий
  • Архивная информация
  • Пример АСР


2. Обзор состава SCADA ТЕКОН

  • Основные компоненты SCADA системы «ТЕКОН»
  • Менеджер компонентов
  • Объекты проекта
  • Графический редактор
  • Библиотека типов
  • Общие настройки
  • Пользователи, права
  • Статистика контроллеров — события
  • Статистика контроллеров — статистика
  • Дополнительные компоненты — Конфигурация Slave104
  • Дополнительные компоненты — Запись во внешние источники
  • Смена активного пользователя
  • Лог сообщений


3.Примечательные особенности

4. Вопросы по SCADA ТЕКОН

1. Обзор видеокадров демо-проекта RUNTIME


Введение


Основные сведения


Мнемокадры


Графический редактор


Динамическое представление


Аниматоры


Рецепторы


Скрипты


Барграф, шкала, точка перемещения


Мнемосимволы, объектные окна


XY тренд


Редактор FBD


Фиксированные шаблоны


Графики




Перечень событий




Хроника событий




Архивная информация






Как видно на картинке, архив ведется для:
  • технологических параметров;
  • действий оператора;
  • технологической сигнализации и хроники событий;
  • аппаратных событий;
  • технологических событий;
  • аварийных сообщений (можно сформировать протокол в момент аварии);
  • состояния объекта.


Пример АСР


2. Обзор состава SCADA ТЕКОН


Основные компоненты SCADA системы «ТЕКОН»

Наименование Краткое описание
1 Клиент SCADA-системы (SCADA.Client) Выполняет функции:
  • станция САПР (конфигурирование БД: редактирование прав пользователей; создание технологических программ, операторского интерфейса, отладка);
  • операторской станции (отображение оперативных данных в режиме реального времени).
2 Шлюз обмена информацией с источниками данных (SCADA.Server) Осуществляет информационный обмен с источниками данных и передачу в них управляющих команд, производит диагностику работы и отправку информации в архив.
3 Архивная станция (SCADA.Archive) Прием и скоростная запись информации, поступающей из других компонентов системы (шлюз, расчетная станция и т.д.), на жесткий диск компьютера.
4 Расчетная станция (SCADA.Calc) Выполнение расчетно-аналитических задач
5 Просмотр архива. (Arh) Представление информации из архива в структурированном виде (таблицы, графики, отчеты для печати), функция РАС.
6 OPC DA Server (Scada.OPC) Связь по протоколу OPC со сторонними компонентами
7 Виртуальный контроллер (SCADA.TAVPLC) Отладка технологических программ, созданных в SCADA-системе ТЕКОН. Организация тренажеров.
8 WEB контроль (WC) WEB интерфейс, доступ к архивной и оперативной информации. Может использоваться в качестве операторской станции (тонкий клиент), станции удаленного мониторинга.


Компоненты взаимодействуют с использованием стека протоколов TCP/IP.


Схема взаимодействия компонентов SCADA-системы

Обзор не полный, а только доступных в демо-режиме элементов SCADA системы. При попытке запуска запрещенного лицензией приложения появляется сообщение об ошибке.


Менеджер компонентов
Основным окном для доступа к элементам SCADA (в RUNTIME и особенно при скрытом рабочем столе) является «Менеджер компонентов» – окно-полоска, висящее вверху в центре экрана.


Менеджер компонентов


Менеджер компонентов с раскрытым списком компонентов

Объекты проекта
Объектами проекта называются все устройства ввода/вывода (в том числе шлюзы, АРМы, сервера архива). Т.е. создается объект QL1, со свойствами (или атрибутами) ВКЛЮЧЕН, ОТКЛЮЧЕН, АВАРИЯ, ВЫКАЧЕН и графический элемент привязывается к объекту QL1, а не к конкретным свойствам/атрибутам (анимация графического объекта естественно должна учитывать наличие соответствующих свойств у объекта управления). Более того в свойствах объекта QL1 можно указать «Тип объекта» (тип графического объекта) и на видеокадр просто вытащить объект проекта QL1 – соответствующий графический элемент тут же отрисуется и автоматически свяжется. Именем тега является «Марка».


Объекты проекта

Есть возможность импорта/экспорта в Excel. Для ISa объектов предусмотрен параметр «Сохранение» — установка которого означает, что значение переменной будет сохраняться после перезагрузки контроллера, в противном случае значение будет соответствовать начальному.

Графический редактор
Графический редактор является редактором мнемосхем, библиотечных анимированных элементов, редактором ST и FBD логики (в SCADA ТЕКОН есть встроенный soft-logic контроллер/вычислитель).


Графический редактор

Библиотека типов


Самая настоящая библиотека – содержит звуки, картинки, динамичные и статичные графические элементы, программные модули, шлюзы, источники данных. Есть импорт/экспорт через XML. Например, динамический элемент клапан (см. рисунок выше) может быть связан со своим собственным окном настроек/конфигурирования (в RUNTIME). Поскольку в SCADA ТЕКОН нет как таковых тегов, есть технологическая единица (клапан valve1, насос pump3_22 и т.д.) и теги являются атрибутами этой технологической единицы, то в объектах проекта для конкретной технологической единицы указывается библиотечный шаблон, поэтому в графическом редакторе графический элемент привязывается к технологической единице или же можно просто вытащить на мнемосхему технологическую единицу и редактор сам отрисует необходимый графический элемент (взятый из свойств технологической единицы).


Привязка графического элемента к технологической единице

Общие настройки


Общие настройки касаются всего приложения SCADA ТЕКОН.


Общие настройки – графический редактор


Общие настройки – режим оператора


Общие настройки — мониторы

Для компьютеров, работающих в системе управления как операторские станции, можно сконфигурировать несколько рабочих столов с индивидуальными настройками. K настройкам относятся: количество мониторов операторской станции, разбиение области каждого монитора на участки (фреймы), задание для каждого фрейма видеокадра.


Общие настройки – надписи/подписи

Часто в SCADA-системе используются подписи значений параметров тех или иных переменных или каналов объектов в заголовках окон, на графиках, в качестве подсказок и т.д. B данном разделе представлены доступные способы определения формата подписей.


Общие настройки – функциональная клавиатура

Для выполнения рецепторов нажатия клавиш клавиатуры не только на основном мониторе, но и на дополнительных мониторах (в случае, если они установлены), необходимо установить опцию «Выполнять рецепторы нажатия клавиш клавиатуры на дополнительных мониторах»


Общие настройки – системные переменный

B случае, когда необходимо многократно использовать один и тот же текст, можно создать переменную с определенным комментарием и значением, которую потом добавлять на видеокадр или в отчет.


Общие настройки — отладка


Общие настройки – просмотр архива

Пользователи, права



Функции доступа

Статистика контроллеров — события


Статистика контроллеров — статистика
Узлы дерева «SHLYZ_1» и «GATE_69042» – это шлюзы в понятиях SCADA ТЕКОН.


Дополнительные компоненты — Конфигурация Slave104


Дополнительные компоненты — Запись во внешние источники


В SCADA ТЕКОН модификация переменных возможна как с операторского интерфейса, так и с внешних источников. К внешним источникам отнесены:
  • МЭК 60870-5-104 (slave);
  • OPC сервер;
  • Расчетная станция;
  • Межшлюзовой обмен;
  • Зеркало данных.

По умолчанию запись переменных из данных источников недоступна. Для разрешения записи необходимо добавить соответствующие каналы в таблицу «Запись из внешних источников» (меню Компоненты\Дополнительные компоненты).

Смена активного пользователя


Ничего руками писать не надо, выбрать из списка и ввести пароль. присутствует виртуальная клавиатура – можно использовать с панельными ПК с тач-скрином.

Лог сообщений

Лог сообщений — Общие


Лог сообщений — Чтение


Лог сообщений — Запись


Лог сообщений – DLL драйверы


Лог сообщений — События


Лог сообщений — Архивы


Лог сообщений — Отладка

3.Примечательные особенности


1. Настройки среды исполнения позволяют отключить Диспетчер задач, сочетания клавиш типа «ALT+F4», «CTRL+ALT+DEL» и т.п.

2. Есть встроенная функция подтверждения действия оператора по смене значения переменной (устанавливается галочкой в свойствах элемента)


3. сервер и клиент можно запускать как службы — при установке SCADA ТЕКОН необходимо поставить соответствующие флажки


4. Источником данных может выступать любое устройство, к которому шлюз SCADA-системы может обращаться для чтения и/или записи данных. К ним относятся контроллеры, терминалы релейной защиты, сетевое оборудование, источники бесперебойного питания, другие устройства, работающие по одному из поддерживаемых протоколов. В настоящее время поддерживаются следующие протоколы:
  • Протокол ISACOM (контроллеры ТЕКОН);
  • Протокол ModBus (RTU/ASCII/TCP);
  • Протокол OPC DA (Server/Client);
  • Протокол Т4000 (модули ввода/вывода ТЕКОНИК);
  • Протокол SPA-Bus;
  • Протокол МЭК 60870-5-104 (Master/Slave);
  • Протокол МЭК 60870-5-103 (Master);
  • Протокол МЭК 61850-8-1 (Master);
  • Протокол межшлюзового обмена;
  • Протокол SNMP;
  • Протокол контроля состояния ИБП;
  • Программное ядро ICORE;
  • Зеркало данных;
  • Протокол SIRIUS (микропроцессорные устройства Сириус, производства ЗАО «РАДИУС Автоматика»);
  • Протокол TSIP (TimeSynch).

5. Есть встроенный soft-logic контроллер (почти как в openSCADA) – можно использовать для отладки анимации, архивирования, сигнализации.

6. Контроллеры ТЕКОН могут хранить значение переменной при аварийном завершении работы или перезагрузке – достаточно поставить соответствующий флажок у переменной (см. ISa объекты).

7. Переменные можно форсить (блокировка значения): функционал SCADA ТЕКОН и целевой задачи IsaGraf позволяет блокировать переменные (актуально для контроллеров производства ГК «ТЕКОН»). При выполнении данной операции, запись в эту переменную блокируется и пользователь может задавать значение переменной самостоятельно. Допускается блокировать только переменные простого типа (BOOL, INT и проч.). Для блокировки поля функционального блока необходимо представить его в технологической программе как переменную. Для выполнения операции блокировки, необходимо выделить нужную переменную и выбрать в контекстном меню команду «Блокировать переменные». Если контроллер резервируемый или кластерный то блокируется переменная в ведущем контроллере. Перечень блокированных переменных отображается в дополнительном окне «Блокированные переменные».

8. Есть понятие шаблонов: если в прикладном проекте используются часто повторяющиеся части программы или программные модули с одинаковой структурой, можно применить механизм фиксированных шаблонов. Фиксированный шаблон создается единожды и его экземпляры могут использоваться неограниченное количество раз. Для каждой именованного объекта фиксированного шаблона (переменная, функциональный блок) создается заготовка с именем-маской, содержащим элемент подстановки. При создании экземпляра фиксированного шаблона, воссоздается его структура (расположение блоков и связей между ними, нумерация) и объекты (элемент подстановки заменяется на указанный).


9. Есть возможность наблюдать значения переменных в RUNTIME: в процессе работы с проектом может возникнуть необходимость контролировать состояния переменных в режиме реального времени. Для этой цели в SCADA-системе «ТЕКОН» используется инструмент «Шпион».


10. Заготовки экшенов (рецепторы в терминах SCADA ТЕКОН) имеют вариант «скриншот».


11. Для обращения к объекту на видеокадре из скрипта ему дается уникальное имя в свойствах этого объекта в поле «Уникальное имя».


12. Веб-клиент (веб-контроль в терминах SCADA ТЕКОН) на IIS и технологии Silverlight.

13. Тренды с весьма недурственным пакетом настроек:

Тренд – внешний вид в режиме RUNTIME


Окно настроек тренда — вид


Окно настроек тренда — общее


Окно настроек тренда – ось времени


Окно настроек тренда – шкала левая


Окно настроек тренда – шкала правая


Окно настроек тренда – шкалы центральные


Окно настроек тренда — печать


Окно настроек тренда – чтение из архива

14. SCADA ТЕКОН может выступать OPC-сервером (например, для АСУ Э). Для этого необходимо:
  • установить элемент OPC-сервер;



  • сконфигурировать список отдаваемых «на верх» переменных в файле DANSrvNet4.exe.config через текстовый редактор;



  • закрыть файл конфигурации, предварительно сохранив его. После изменения настроек необходимо выполнить перезапуск OPC сервера.
  • Можно изменить формат имени тегов. Это осуществляется в поле «Шаблон полного имени тэга» в конфигураторе шлюза.



15. Есть возможность с помощью приложения GatewayToSQL транслировать значения переменных с заданным периодом из компонента Шлюз ТЕКОН в базу данных MS SQL, посредством SQL запросов. Пользователь может настроить период обновления данных из шлюза, период записи данных в базу данных и период очистки таблицы базы данных.

16. Есть возможность мониторить приложения на всех ПК в проекте. На ПК, которые мониторим необходимо установить сервер монитора приложений (желательно в режиме службы), а на ПК, с которого мониторим – клиент монитор априложений. Клиент монитора приложений связывается с серверами монитора приложений, расположенными на разных компьютерах. Основное окно монитора выглядит следующим образом:




  • Имя компьютера — имя компьютера, для которого отображается информация;
  • Монитор запущен? — есть ли доступ к серверу мониторинга приложений. Если доступа нет, то больше никакая информация не отображается
  • Имя программы — имя программы, для которой отображается информация;
  • Запущена? — запущенна ли указанная программа;
  • Сервис? — программа установлена как сервис, или как обычное пользовательское приложение;
  • Отвечает? — проверяет, не зависла ли программа, может ли она отвечать на действия пользователя;
  • Исп. память — отображает количество занимаемой процессом памяти;
  • Контролировать работу — если флажок установлен, то при зависаниях или прекращении работы программы она автоматически будет перезапускаться;
  • Запустить — запустить программу;
  • Остановить — остановить программу;


17. Есть приложение «Расчетная станция»: используется для выполнения расчетно-аналитических задач на промышленных объектах, оснащенных современными программно-техническими комплексами. Программа позволяет выполнить расчет всех, применяемых в настоящее время на энергетических объектах задач по определению технико-экономических показателей работы технологического оборудования. В качестве примера можно привести следующие расчетные задачи:
  • Расчет оперативного ТЭП.
  • Расчет неоперативного ТЭП.
  • Контроль металла.
  • Расчет оптимального вакуума.
  • Анализ пуска и планового останова.
  • Контроль достоверности параметров.
  • Учет топлива.
  • и многие другие…..



Расчетная станция – главное окно

Может делать отчеты в формате файлов MS Excel без установленного MS Excel.



18. Есть эмулятор ПЛК (Виртуальный контроллер в терминах SCADA ТЕКОН): виртуальный контроллер представляет собой программную имитацию контроллеров ТЕКОН и может быть использован для отладки технологических программ контроллеров МФК1500, МФК3000, P06. Помимо программной имитации, виртуальный контроллер может использоваться как независимый компонент, в том числе для работы с физическими каналами ввода-вывода с использованием специализированных драйверов. Сервисы и функции контроллеров ТЕКОН, реализованные в виртуальном контроллере:
  • чтение и запись переменных;
  • резервирование и зеркализация;
  • сервис инициативных событий;
  • сервис сохраняемых переменных;
  • межконтроллерный обмен.


Сервисы и функции контроллеров ТЕКОН, не реализованные в виртуальном контроллере:
  • межресурсный биндинг;
  • протокол MODBUS;
  • протокол IEC 60870-5-104.



Менеджер виртуальных контроллеро

19. Есть некий инспектор объектов в графическом редакторе – Объекты на странице



20. В числе прочих стандартных функций есть, например, LIMIT, используемая нами на странице уставок для ограничения вводимой оператором величины: ограничивает значение целого числа заданным интервалом. Сохраняет входное значение, если оно находится между минимумом и максимумом, или заменяется максимумом, если оно больше максимума, или заменяется минимумом, если оно меньше минимума — new_value:=LIMIT(min_value,value,max_value).

21. В числе прочих стандартных функций есть, например, DD – «объект Дискретный датчик», можно использовать для имитации значений: алгоритмический блок позволяет с операторской станции производить подмену дискретного сигнала технологической программы, формирует признаки технологической сигнализации. Дискретный сигнал, значение которого предполагается подменять с операторской станции подается на вход Хin. В штатном режиме сигнал с входа Хin транслируется на выход Вых. В режиме подмены значение сигнала Вых задается с операторской станции. Переключение режима осуществляется через локальную переменную Manual.

22. Есть рекомендации по ПО и железу.

23. Есть список TCP/UDP портов, которые использует ПО ТЕКОН.

24. В графическом редакторе векторная графика, можно масштабировать в режиме разработки.

25. Нельзя в библиотечном графическом элементе использовать другой графический элемент.

26. В тексте на мнемосхеме можно вставить спецсимволы типа градусов штатными средствами SCADA ТЕКОН.

27. Есть подобие CrossReference – можно узнать все места, где используется технологическая единица.


28. База данных тегов выгружается в файл *.xls

29. Библиотечные элементы выгружаются в файл *.xml.

30. Есть аниматор «Информационное сообщение» – готовое всплывающее окно с текстовым сообщением с привязкой на тег.

4. Мои вопросы по SCADA ТЕКОН в тех.поддержку и их ответы


1. Как узнать к каким свойствам графических объектов можно обратиться из скриптов и как эти свойства называются в контексте скриптов?
В настоящий момент большая часть скриптов описана в Руководстве программиста, Приложение 3. Если требуется уточнение по каким-то примитивам или конкретным свойствам — сообщите отдельно.


2. Возможен ли вариант двухмониторной станции оператора? Если да, как его организовать с точки зрения навигации по видеокадрам?
Возможен вариант многомониторного режима. Главное, чтобы нужное количество мониторов корректно определялось в системе. Стоит отметить, что опция многомониторный режим, лицензируется дополнительно. Обратите на это внимание при заказе ключей. Далее для каждого монитора определяется свой набор фреймов (Менеджер компонентов — Общие настройки — Мониторы). В качестве фрейма выбирается один из кадров, созданных пользователем. Подробнее — РП пункт 7.4 Мониторы.




3. Можно ли из скриптов сконфигурировать тренд: добавить перьев, задать им определённые цвета и т.д.?
Нет, в настоящий момент возможность конфигурирования трендов из скриптов отсутствует. Стоит отметить, что работа с окнами трендов имеет некую интерактивность: можно перетаскивать в окно трендов мнемосимволы с кадров, можно запоминать добавленные пользователем перья. У мнемосимволов можно задавать рецептор, по которому будет открываться окно с заранее сконфигурированным набором перьев.



4. Если в проекте есть несколько практически одинаковых мнемосхем, отличающихся только, например, номерами (один видеокадр «Цех 1» и на нём есть клапаны valve1_11, valve1_22, valve1_33, valve1_44, второй видеокадр «Цех 8» и на нём есть клапаны valve8_11, valve8_22, valve8_33, valve8_44) – можно ли создать шаблон видеокадра/мнемосхемы, в который с наименьшими затратами подставить (в RUNTIME или в при размножении в режиме разработки) необходимые различия (префиксы/постфиксы и т.п.)?
Для кадра возможно задать шаблон. Шаблон выбирается, опять же, из перечня кадров. Причем шаблон будет отображать, как статические элементы, так и объекты (мнемосимволы, аниматоры, рецепторы). Изменения данного шаблона отразятся на всех кадрах, где он используется.




5. Запуск АРМ оператора в RUNTIME – как в демо-проекте через *.cmd файл?
В настройках есть опция «Запускать в режиме оператора» (Менеджер компонентов — Общие настройки — Общие). Если установить данную опцию, менеджер компонентов будет запускаться в RunMode. Автоматический запуск или перезапуск самого менеджера компонентов (а также других компонентов SCADA) можно организовать с помощь Монитора приложений (АВШД.50014-05 31 01_Монитор приложений_ОП_2015.pdf).


6. Что есть понятие «кластер» в терминах SCADA ТЕКОН?
Этот термин относится не столько к SCADA, сколько к ПТК в целом. Контроллеры ТЕКОН могут работать в нескольких режимах:
  • одиночный ЦП
  • резервирование ЦП
  • дублирование ЦП
  • дублирование контроллеров (кластер)
  • троирование ЦП

В данном случае, кластер подразумевает использование дублированного контроллера (полная копия двух контроллеров с модулями УСО). При этом сигналы заводятся параллельно на оба контроллера. В SCADA с данной парой контроллеров работа идет, как с обычным одиночным контроллером + реализовано несколько дополнительных сервисов, как, например, сигнализация несравнения значений. Данная конфигурация используется для особо ответственных задач, например, системы регулирования турбоагрегатов или системы ТЗ, ПАЗ энергетического оборудования.


7. Есть ли в SCADA ТЕКОН сущность «локальные переменные» (переменные не связанные с устройствами ввода/вывода, а существующие только в рамках SCADA и используемые дл)?
В SCADA есть возможность использовать ядро ICORE. Компонент представляет из себя встроенный в сервер вычислительное ядро, наподобие контроллера. В нем можно использовать как локальные переменные, так и обрабатывать любые переменные, определенные в проекте (они называются внешние переменные). Значение этих переменных будет одинаковым на всех клиентах. Также в скриптах можно использовать переменные, определенные в скрипте. В данном случае обработка переменных выполняется на клиенте.


8. Как реализовать клиент-серверную архитектуру? Как на видеокадре отобразить к какому серверу подключен клиент (главный, резервный)?
Диагностические кадры создаются пользователем, с использованием мнемосимволов объектов ШЛЮЗ, КОНТРОЛЛЕР, КОМПЬЮТЕР.




9. Можно ли вести разработку одновременно с нескольких ПК (например, один рисует мнемосхемы, второй делает теги)?
Да, многопользовательская разработка реализована полностью. Главное иметь доступ к серверу БД.


10. Экземпляры библиотечных символов «держат связь» со своими родителями в библиотеке (если изменить библиотечный мнемосимвол, то его экземпляры на мнемосхемах подхватят изменения)?
Да, конечно. После изменения мнемосимвола, достаточно переоткрыть кадр, либо нажать кнопку обновить страницу.
Для технологических программ реализован механизм шаблонов и фиксированных шаблонов. Фиксированные шаблоны позволяют создавать участки тех. программы с шаблонами переменных. После помещения в тех. программу, изменение шаблона приводит к обновлению всех тех. программ, где используется данный шаблон.



11. SCADA ТЕКОН — это единая среда для разработки программы контроллера и визуализации на АРМе или для контроллера необходимо другое ПО?
Да, SCADA ТЕКОН — это единая среда для разработки программы контроллера и визуализации на АРМе. Причем для программ и визуализации используются одни и те же объекты, то есть нет необходимости определять объекты дважды и устанавливать связи.


12. С помощью какого аниматора можно реализовать смещение графического элемента на несколько пикселов в зависимости от значения привязанной переменной (например, в мнемосимволе «выключатель» показать выкаченную/вкаченную тележку)?
В настоящее время реализуем именно этот механизм (ровно для этой же задачи) по просьбе одного из интеграторов. Функционал появится в ближайшем релизе.


P.S. Самое трудное — отформатировать статью на Хабре… :(

Разработчик просил добавить, что:
в настоящее время на этапе разработки новая версия SCADA и контроллер. SCADA будет полностью кроссплатформенной. ПТК будет базироваться на концепции OPC UA.
Tags:
Hubs:
+4
Comments 19
Comments Comments 19

Articles