OPC, Modbus
Версия для печати


Форум:  НТО Терси-КБ
Тема:  http://www.tersy.ru/index.php?module=pnForum&func=viewtopic&topic=63

OPC, Modbus


1.  Галеев Фаниль,  25.03.2009 15:29
Начал изучать Вашу систему "Каскад САУ". Использую бесплатную версию. Не разобрался с подключением к системе ОРС серверов. В документации ничего не нашел по этой теме. Можете ли на примере (к примеру на демоверсии Fastwel.UniOpc) подробно показать механизм настройки? Также не смог отобразить на мнемосхеме текущую дату и время.

2.  Roman,  26.03.2009 08:30
Здравствуйте, Фаниль.

Галеев ФанильНе разобрался с подключением к системе ОРС серверов. В документации ничего не нашел по этой теме. Можете ли на примере (к примеру на демоверсии Fastwel.UniOpc) подробно показать механизм настройки?

Подключение к OPC серверу (равно как и любому другому устройству) делается на вкладке Привязка к оборудованию в окне свойств точки. Чтобы ввод данных заработал, точка должна быть входной.

Подробнее:

Пусть в UNI OPC создано устройство Device1, для него добавлены теги по умолчанию. Необходимо ввести значение тега analog_1 из группы unit1 в точку Каскад-САУ.

Запустите программу "Настройка параметров точек". Создайте новую точку или возмите существующую. Откройте окно свойств точки. На вкладке Общие выбирете тип сигнала Входная, тип данных FLOAT. Переключитесь на закладку Привязка к оборудованию. В таблице Адрес устройства щелкните мышкой в левой колонке на первой строке, в выпадающем списке выберите OPC сервер. В этой же строке в правой колонке введите имя сервера Fastwel.UniOpc. В следующей строке таблицы в правой колонке введите полное имя тега сервера Device.unit1.analog_1 (полное имя тега определяем с помощью Faswel OPC Client). Нажмите ОК, затем меню Точки, Применить конфигурацию точек.

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

Галеев ФанильТакже не смог отобразить на мнемосхеме текущую дату и время.

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

Поскольку мнемосхемы могут отображать только значения точек, то и время с контроллера надо передать с помощью значения точки. Записать текущее время в значение точки в Каскад-САУ версии 3.2 можно только с помощью библиотечных блоков алгоритмов.

Создайте точку типа FLOAT, откройте редактор алгоритмов, положите на поле библиотечный блок DT_Get (Получение текущего времени контроллера, группа блоков Дата и время) и свяжите его выход с точкой, по аналогии с тем, как это описано в документе Быстрый старт. Для отображении значения этой точки на мнемосхеме в виде даты и времени воспользуйтесь специальным элементом Дата и время вместо элемента Значение точки.


3.  Галеев Фаниль,  27.03.2009 12:01
Спасибо за консультацию. Затруднения с настройкой ОРС сервера и отображением даты и времени устранены.

4.  Neurox,  03.06.2009 14:45
К слову,недавно были проведены crash-тесты КАСКАД-САУ и архивного сервера при работе с 10 точками через OPC с частотой обновления 1 мс (по настройкам OPC сервера,). НА мащине с Dual-Core 1,83 процессор остался свободен на 97 % )))))). дисковая активность также минимальна)))


5.  Roman,  03.06.2009 15:39
Немного холодной воды. ;-)

Принцип работы контроллера Каскад-САУ - циклический. Размер цикла по умолчанию - 500 мс. Соответственно задача ввода данных с OPC-сервера выкладывает данные в память контроллера только один раз в 500 мс., даже если сервер присылает ей значения каждую 1 мс. Таким образом у Вас в архив записываются всего 20 точек в секунду. Это очень маленькая цифра. К тому же перед записью в архив данные еще раз буфферизируются в оперативном архиве, реально в архив запись идет раз в 10 минут. Отсюда и маленькая загрузка процессора и диска.

По нашим тестам производительность архива Каскад-САУ на машине P4 1.8, 512 Мбайт, Windows 2000 SP3 - до 3000 изменений точек в секунду.

6.  Neurox,  03.06.2009 15:59

Цикл был выставлен на 50 мс, итого 200 точек.

Меня ввело в заблуждение наличее такого параметра в документации "точность временных отметок изменений сигналов." Ктому же както я не привязал цикл контроллера к минимальному времени опроса точек.

А что мешает цикл зделать менее 50 мс? Пока времени тестировать нет,но при 10 запускается. при 1 мс--ошибки(что-то там с временем ожидания)

7.  Roman,  03.06.2009 16:35
NeuroxМеня ввело в заблуждение наличее такого параметра в документации "точность временных отметок изменений сигналов."

Чтобы засечь в архиве время изменения сигнала при такте менее секунды временная отметка должна также учитывать доли секунды. В каскад-САУ время изменения включает и миллисекунды. Это и есть "точность временных отметок".

NeuroxК тому же както я не привязал цикл контроллера к минимальному времени опроса точек.

Цикл ввода даных с устройства, как правило, не зависит от цикла контроллера и может выполняться гораздо чаще. Опрошенное значение сохраняется во внутреннем буфере задачи ввода. Последнее полученное (в некоторых случаях усредненное, например для VME устройств) и выкладывается в память контроллера только по сигналу ядра раз в цикл. Это значение затем идет в расчет алгоритмов, отправляется на АРМ и в архив.

В Каскад-САУ версии 4.0 будет предусмотрен ввод данных с устройством с предысторией, т.е. все, что опрошено чаще цикла контроллера, можно будет записать в архив. Однако в расчете алгоритмов по прежнему будет участвовать только последнее значение за цикл контроллера.

NeuroxА что мешает цикл сделать менее 50 мс? Пока времени тестировать нет,но при 10 запускается. при 1 мс--ошибки(что-то там с временем ожидания)

В принципе ничего не мешает. Однако Windows не является системой реального времени, и гарантировать соблюдение установленного цикла невозможно. В контроллерах под QNX это работать будет.

8.  Neurox,  03.06.2009 16:47
есть возможность получить на тесты контроллер под QNX?

можно ли к QNX контроллеру подключать свои исполняемые модули с поступом в разделяемую область памяти контроллера? (там где текущие значения точек хранятся?)

Просто есть идея интересная))) (некий расчетный алгоритм принимающий мгновенные значения точек, минимум 20 точек на 50Гц период. 6 точек). было-бы неплохо его в контроллер внедрить , если он конечно такую полосу пропускания обеспечит (с запасом)


9.  Roman,  03.06.2009 16:57
Neurox, пожалуйста повторите Ваш последний вопрос по контролеру QNX в новой теме. Текущее обсуждение уже слишком отклонилось от темы OPC.

10.  _alex_,  03.10.2009 17:00
RomanЗдравствуйте, Фаниль.

Подключение к OPC серверу (равно как и любому другому устройству) делается на вкладке Привязка к оборудованию в окне свойств точки. Чтобы ввод данных заработал, точка должна быть входной.

Подробнее:

бесплатная версия
использую mobus rtu slave
При обращении по 3,4,6 функциям modbus контроллер КАСКАД отвечает с нулевым значениеми
пробовал использовать вкладку "Внешние связи" но непонятно какие настройки под какую функцию modbus?

Пожалуйста опишите пошагово как настроить на 6 функцию modbus?

11.  Roman,  05.10.2009 09:02
Для передачи точки во внешнюю систему тип ввода-вывода точки роли не играет. Соответственно и писать внешняя система может в любую точку. При этом логические проблемы должны быть учтены при разработке проекта. Например, если внешняя система подаст команду на запись во входную точку, то эта команда пройдет. Однако на следующем такте драйвер ввода перезапишет значение этой точки значением, считанным с устройством, что будет выглядеть как будто команда не проходила. Аналогично и с точками, в которые пишут алгоритмы.

Чтобы сделать точку доступной на запись по протоколу Modbus RTU надо в окне свойств точки на вкладке "Внешние связи" в группе "Передача данных..." поставить протокол передачи "Modbus RTRU", класс данных "Регистр управления импульсом/уровнем", в поле адреса ввести номер регистра. Нумерация регистров начинается с 1.

12.  _alex_,  05.10.2009 10:02
попробовал результат тотже.
опыт работы с modbus и scada имеется. Нигде не нашел в доках соответсвие классов данных modbus rtu КАСКАД и оригинальных функций modbus rtu. Если что то пропустил ткните пожалуйста.
А лучше конечено живой примерчик по установке\считыванию значений master'oм в slave КАСКАД.
Я думаю у Вас это попросят еще не раз.

13.  Roman,  05.10.2009 11:32
Все точки Каскад-САУ проецируются на Holding регистры сервера, номера регистров настраиваются на вкладке внешних связей. Соответственно опрос этих регистров должен производиться 3 функцией. Привязка точек к остальным типам регистров (Coil, Input Status) в текущей версии Каскад-САУ не поддерживаются, сервер всегда отвечает или исключением или 0 в зависимости от значения параметра RegMode в файле servdata.mb.ini.

Можно в один регистр побитно упаковать значения несколько дискретных точек. Для этого в поле "Адрес ввода-вывода" надо указать номер бита через двоеточие после номера регистра, например 201:1 (нумерация битов начинается с 1). Однако, для внешней системы это по прежнему будет Holding регистр.

Дополнительно Modbus сервер Каскад-САУ поддерживает работу со сдвоенными регистрами для передачи 4 байтовых INT и FLOAT значений. Т.е. сервер может передавать FLOAT значение точки в двух подряд идущих регистрах.

Для записи значений регистров сделует следует использовать 6 функцию, т.е. запись Holding регистров. Также как при чтении можно использовать номер бита при адресации точки. Тогда при получении команды сервер запишет 0 или 1 во все точки, привязанные к регистру в соответствии с указанными для них номерами битов.

Соответствие классов данных и регистров Modbus:
  • Регистр данных - выходной Holding регистр, номер регистра задается в поле "Адрес ввода-вывода", нумерация с 1. Чтение функцией 3.
  • Регистр данных float/big-endian - два подряд Holding регистра, в которые разложено 4 байтовое Float значение точки. big-endian порядок следования старшего и младшего слова. Номер первого регистра задается в поле адреса ввода-вывода. Пересечение регистров с регистрами других точек запрещено.
  • Регистр данных float/low-endian - аналогично предыдущему, но в порядке low-endian.
  • Регистр управления импульсом - входной Holding, запись функцией 6. Записанное в точку значение автоматически сбросится в значение по умолчанию по истечении времени импульса (4 такта контроллера).
  • Регистр управления импульсом float/big-endian - два подряд Holding регистра, предназначенные для записи Float значения. Запись функцией 6 в два регистра подряд. По истечении времени импульса значение точки автоматически сбрасывается в знаение по умолчанию.
  • Регистр управления импульсом low/big-endian - аналогично предыдущему, но для low-endiag порядке слов Float значений.
  • Регистр управления уровнем - входной Holding регистр, запись функцией 6. После записи значение точки остается неизменным.
  • Регистр управления уровнем float/big-endian - предназначен для записи Float значений в режиме уровнем.
  • Регистр управления уровнем low/big-endian - аналогично предыдущему, но для low-endiag порядке слов Float значений.

По поводу живого примера. Возможно, Вы посоветуйте бесплатный Modbus RTU клиент (master) стороннего производителя, чтобы мы смогли для него написать пример. Мы конечно можем написать пример для своего клиента, но это будет не восем то, что нужно.

14.  _alex_,  06.10.2009 10:39
Могу посоветовать бесплатный http://www.agrostroy.ru/root/tex_podderzhka/prog/ModbusTester-Installer.rar
Опишу последовательность действий:
1. беру созданный и работающий проект "Быстрый старт" добавляю в "Настройке параметров точек" переменную comtest - тип точки: "входная" "integer".
2. на вкладке "Привязка к оборудованию": "Тип устройства"-"COM порт", "Номер"-"2"(стоит PCI плата расшир COM портов).
3. на вкладке "Внешние связи": "Протокол передачи"-"Modbus RTU (Slave)","Класс данных"-"Регистр управления импульсом", "Адрес ввода/вывода"-"1".
4. на вкладке "Сигнал": "Уровень передачи сигнала"-"Внешние системы".
5. в файле ServData.mb.ini - InfoLevel=2, DeviceNo=1, DeviceType=0, ScaleMode=2, RegMode=1, SerialPort=2,
BaudRate=115200, ByteSize=8, Parity=0 StopBits=0.
6. в "Редакторе мнемосхем" добавляем ГЭ "Значение точки" - на нем кликаем 2 два и связываем с динамической точкой comtest.
7. запускаем "Контроллер Каскад-САУ","Каскад-САУ" видим мнемосхему "Быстрый старт"
8. запускаем Modbus Tester забиваем строку "01 06 00 01 00 10 crc crc" посылаем видим ответ от "Каскад" повторяющий запрос, т.е. по правилам протокола все ok-значение должно установиться. При этом видим на мнемосхеме значение не меняется т.е.=0.


15.  Roman,  06.10.2009 10:50
Хорошо, попробуем указанный Modbus Tester. О результатах сообщим сегодня в конце дня или завтра.

16.  Roman,  06.10.2009 12:57
Мы закончили проверку Вашего примера. Вы все сделали правильно за исключением одной детали - адреса регистра, указанного в запросе в п.8.

Дело в том (возможно, это непонятно написано в сообщении #13), что в Modbus запросе надо указывать адрес регистра с 0, в то время как при настройке следует указывать номер регистра, начиная с 1. То есть, например, если у точки указан адрес ввода-вывода 100, то в Modbus запросе для нее следует указывать адрес регистра 99.

Чтобы Ваш пример в сообщении #14 заработал, необходимо в п.8 посылать строку "01 06 00 00 00 10 88 06", т.е. записывать в регистр с адресом 0.

Еще момент по Вашему примеру. Пункт 2 делать не обязательно. Контроллер Каскад-САУ будет передавать точку во внешнюю систему независимо от того, к какому оборудованию она привязана. Например, можно на вкладке "Привязка к оборудованию" привязать точку к тегу OPC сервера, а на вкладке "Внешние системы" указать ее передачу по протоколу Modbus. В этом случае контроллер будет обеспечивать шлюзование значения этой точки из OPC сервера во внешнюю систему. Аналогично можно передавать точки вообще не привязанные ни к какому оборудованию, например, результаты промежуточных вычислений.

17.  _alex_,  06.10.2009 17:30
спасибо работает.
Еще вопрос
ограничение 1 установка->1 АРМ Оператора -> 1 номер устройства в сети modbus
работает и в платной версии?

Изменено: _alex_, 06.10.2009 17:30

18.  Roman,  07.10.2009 07:59
И в платной и в бесплатной версии Каскад-САУ 3.2 Modbus сервер работает в составе контроллера и он действительно может быт только в единственном экземпляре. В версии 4.0 это ограничение будет снято. А вот АРМ Оператора может быть до 16 штук. Например, Архив - тоже разновидность АРМ, у которого вместо задач отображения и управления работают задачи архивирования.

19.  _alex_,  08.10.2009 12:39
С контроллера время от времени передаються и нулевые значения почему КАСКАД не видит их?

20.  Roman,  08.10.2009 13:33
_alex_С контроллера время от времени передаються и нулевые значения почему КАСКАД не видит их?

Уточните пожалуйста, с какого контроллера, куда передаются, какой КАСКАД (Есть SCADA система с аналогичным названием КАСКАД большими буквами, наша называется Каскад-САУ), что значит "не видит"?

21.  _alex_,  08.10.2009 15:02
Я все про modbus rtu. Уточню:
В примере в сообщении #14 в п.8 добавил кроме строки "01 06 00 00 00 10 88 06" еще вторую "01 06 00 00 00 00 crc crc". т.е. через раз значение должно = 0, но оно постоянно = 0x10.

22.  Roman,  08.10.2009 18:22
Действительно, в текущей реализации для регистров управления импульсом сервер Modbus игнорирует значение 0, а также не сбрасывает значение точки в значение по умолчанию по окончании импульса, как это описано в сообщении #13. Дело в том, что в полной версии Каскад-САУ сервер работает в связке с дополнительной специально настроенной программой, которая и обеспечивает обработку импульсных команд управления. К сожалению, мы упустили из виду, что в бесплатной версии указанная связка не используется, в результате чего и наблюдается указанное Вами необычное поведение сервера.

Мы исправим данное упущение в следующем обновлении контроллера Каскад-САУ, добавив в сервер Modbus самостоятельную обработку команд управления импульсом. В текущей же версии можем порекомендовать использовать регистры управления уровнем, а импульсные команды реализовать самостоятельно, записывая в регистр попеременно значения 1 и 0.

23.  _alex_,  09.10.2009 09:53
TechIO.gb.ini используется в бесплатной версии?

24.  Roman,  09.10.2009 11:14
_alex_TechIO.gb.ini используется в бесплатной версии?

TechIO.gb - задача ввода-вывода блоков PLC. Эта задача включена в бесплатную версию Каскад-САУ. TechIO.gb.ini - файл с настройками для этой задачи.

Все задачи, которые входят в бесплатную версию Каскад-САУ, устанавливаются программой установки. Остальные задачи полной версии, не входящие в состав бесплатной, просто не включены в дистрибутив. Для полной и бесплатной версий Каскад-САУ свои дистрибутивы со своим набором задач.

Ограничения бесплатной версии по поддерживаемому оборудованию Вы можете посмотреть в файле License.rtf в каталоге установке Каскад-САУ на Вашем компьютере.

25.  _alex_,  09.10.2009 12:30
вопрос снят

Изменено: _alex_, 09.10.2009 12:36

26.  _alex_,  09.10.2009 16:14
подключился к OPC серверу Modbus на менмосхеме в окне значение переменной появился текст INF.
в настройках точки тип FLOAT, в настройках OPC сервера FLOAT4.
Где копать в OPC или Вы подскажите в чем дело?

27.  Roman,  09.10.2009 16:27
INF ("Бесконечность") - одно из допустимых значений значений числа с плавающей точкой. Возникает, например, при делении на 0. Применительно к OPC-серверу Modbus значение INF, равно как и NAN, может возникнуть при некорректном преобразовании сервером сдвоенных регистров во FLOAT4 значение, например, при несоответствии порядка следования (big/low-endian).

Похоже, что такое значение имеет тег OPC сервера и считывается из него в Каскад-САУ. Попробуйте посмотреть значение этого тега другим сторонним OPC-клиентом, например, тем же Faswel OPC Client.

28.  _alex_,  13.10.2009 18:23
Добрый день. еще созрели вопросы
1. как влият на работу контроллера режимы "жеский", "мягкий", "только тактирование" в настройках "Контрольное время" контроллера Win32 в "Настройка параметров проекта".
2. там же Какое минимальное "Допустимое время ожидания" и какие задачи требуються для работы системы по протоколу modbus.
3. и тоже относительно "времени рабочего чикла" во вкладке "Контроллер" в свойствах установки "Настройка параметров проекта".


Изменено: _alex_, 13.10.2009 18:27

29.  Roman,  14.10.2009 13:18
_alex_1. как влият на работу контроллера режимы "жеский", "мягкий", "только тактирование" в настройках "Контрольное время" контроллера Win32 в "Настройка параметров проекта".
3. и тоже относительно "времени рабочего чикла" во вкладке "Контроллер" в свойствах установки "Настройка параметров проекта".

В контроллере Каскад-САУ используется циклический способ обработки данных. За один рабочий цикл (такт) последовательно выполняются задачи, список которых определен в списке задач контроллера. Типовой цикл контроллера выглядит следующим образом:
  • Задачи ввода выкладывают значения, считанные с устройств, в память контроллера в входные точки.
  • Значения точек в памяти контроллера обрабатываются задачей расчета алгоритмов.
  • Задачи вывода выводят значения выходных точек на исполнительные устройства.
  • Анализируются изменения значений точек относительно предыдущего такта.
  • Новые значения передаются серверами в вышестоящие системы (на АРМ, в архив, по запросу Modbus).
  • По окончании работы всех задач делается пауза, чтобы выдержать время рабочего цикла.

Все задачи рабочего цикла работают последовательно по сигналу администратора контроллера. По завершении работы на очередном такте задача выставляет флаг готовности. Администратор, получив флаг готовности задачи, переходит к следующей. Сколько времени администратор будет ждать флаг готовности задачу прежде чем перейти к следующей определяется режимом тактирования задачи:
  • Задачи "жесткого режима" ожидаются столько времени, сколько необходимо задаче. В этом режиме работают ответственные задачи (первые 4 пункта в предыдущем списке). Считается, что продолжать цикл, не дождавшись готовности задачи, не имеет смысла. Задержка в работе задачи приводит к задержке цикла. Если задача не уложилась в отведенное время, администратор выводит во внутренний журнал сообщение и продолжает ожидание.
  • Задачи "мягкого режима" ожидаются не более указанного времени. Если задача не уложилась в отведенное время, администратор выводит во внутренний журнал сообщение и переходит к следующей задаче.
  • Задачи в режиме "только тактирования" лишь уведомляются об очередном цикле и не ожидаются администратором. Как правило, это сервера передачи данных во внешние системы, которые работаю по внешнему запросу и вообще не связаны с циклом контроллера. Задержка в работе этих задач, например, задержки передачи данных по сети, не должны влиять на работу цикла.

_alex_2. там же Какое минимальное "Допустимое время ожидания" и какие задачи требуються для работы системы по протоколу modbus.

В состав бесплатной версии не входит задача ввода данных с устройств, поддерживающих протокол Modbus. Для передачи же данных с контроллера Каскад-САУ во внешние системы по протоколу Modbus, в рабочий цикл должна быть включена задача ServData.mb.exe.

Сервер Modbus ServData.mb.exe работает по запросу от мастера и не привязан к циклу контроллера. Время, которое тратит сервер на каждом такте - это время, необходимое ему для приведения значений регистров в соответствие текущим значениям точек. Поэтому в режиме мягкого тактирования можно поставить время ожидания ~100 мс или включить режим "только тактирование".

PS. В Каскад-САУ версии 4.0 настройка списка задач рабочего цикла будет выполнятся автоматически в соответствии с оборудованием, указанным в конфигурации контроллера.

30.  _alex_,  14.10.2009 17:25
спасибо за развернутый ответ.
Просто у меня минимальное время изменения входной точки (Modbus или OPC) минимум 80 мс.
Пытался выставлять Рабочий цикл от 30 мс и выше, потом режимы Жесткий и т.д. но все теже 80-100мс
1. Какой минимальный цикл потянет Контроллер win32 вместе с АРМ и архивом, если приоритет на максимально-достоверноые (по времени) значения в архиве?

31.  Roman,  14.10.2009 18:56
_alex_Просто у меня минимальное время изменения входной точки (Modbus или OPC) минимум 80 мс.
Пытался выставлять Рабочий цикл от 30 мс и выше, потом режимы Жесткий и т.д. но все теже 80-100мс
1. Какой минимальный цикл потянет Контроллер win32 вместе с АРМ и архивом, ...

Windows не является операционной системой реального времени. Это значит, что нельзя ожидать гарантированного выполнения одного цикла контроллера за выбранное время. Например, откройте консоль "Управление компьютером" и запустите поиск устройств PnP - сразу увидите задержку цикла контроллера. Поэтому мы считаем, что ждать от цикла на Windows контроллерах времени выполнения менее 100 мс не имеет смысла, хотя это и возможно.

Уменьшая время цикла контроллера и время ожидания задач, конечно, можно уменьшить время реакции всей системы. Но это палка о двух концах. При большом объеме данных узким горлышком будет передача данных по TCP/IP на АРМ. Возможно, что архив "захлебнется" и не сможет успевать записать данных в архивную базу данных.

_alex_...если приоритет на максимально-достоверноые (по времени) значения в архиве?

В архив записываются значения с меткой времени контроллера. Поэтому даже относительно низкая скорость записи данных в архив приведет лишь к тому, что данные будут записаны немного позже. Достоверность же времени изменения значений - 100% время контроллера, оно не страдает от быстродействия архива.

32.  _alex_,  15.10.2009 14:49
из темы по реакции системы
ЦитатаRomanПо нашим тестам производительность архива Каскад-САУ на машине P4 1.8, 512 Мбайт, Windows 2000 SP3 - до 3000 изменений точек в секунду.

1. Эта производительность была достигнута на win32 или qnx?
2. Имеется ввиду 3000 точек или 3000 изменений 1ой точки?
3. При этом настройки из моего поста №30 были по умолчанию?
4. Если нет то на какие параметры нужно обратить внимание?
4. использовался драйвер протокола или OPC?
5. м.б. имеет смысл вытсавлять для каких то задач Каскад САУ приоритет "Реального времени" в Windows?

PS как Вы уже поняли задача у меня достичь максимального времени реакции системы под WinXP c хорошей надежностью. т.е. нужно убедить начальство в пользу Вашей разработки относительно попыток разработки своей scada на С++.

33.  Roman,  15.10.2009 15:20
_alex_1. Эта производительность была достигнута на win32 или qnx?
2. Имеется ввиду 3000 точек или 3000 изменений 1ой точки?
3. При этом настройки из моего поста №30 были по умолчанию?
4. Если нет то на какие параметры нужно обратить внимание?
4. использовался драйвер протокола или OPC?
5. м.б. имеет смысл вытсавлять для каких то задач Каскад САУ приоритет "Реального времени" в Windows?

Ответы на вопросы:
1. Имеется в виду производительность архивной подсистемы (архивный АРМ + СУБД) под Win32. Наши архивы не работают под QNX.
2. За один такт точка может измениться 1 раз. 3000 изменений - единовременное изменение трех тысяч точек за 1 секунду.

На остальные вопросы отвечать, наверное, не имеет смысла, поскольку речь идет не о съеме 3000 значений с одного параметра в секунду, а об количестве параллельно изменяемых значений.

_alex_PS как Вы уже поняли задача у меня достичь максимального времени реакции системы под WinXP c хорошей надежностью. т.е. нужно убедить начальство в пользу Вашей разработки относительно попыток разработки своей scada на С++.

Уточните, пожалуйста, что должна делать Ваша система? Какое для нее приемлемое "время реакции"? Что подразумевается под словами "хорошая надежность"?

34.  _alex_,  16.10.2009 09:29
[/quote=Roman]
Уточните, пожалуйста, что должна делать Ваша система? Какое для нее приемлемое "время реакции"? Что подразумевается под словами "хорошая надежность"? [/quote]
winxp
1. Собирать данные с внешних контроллеров через COM port
2. Архивирование, мнемосхема, тренды, отчеты
3. Время реакции на ~100 каналов < 50мс
"хорошая надежность" гарантия стабильности долговременной работы Ваших приложений без запуска отвлекающих задач.

35.  _alex_,  16.10.2009 11:47
При запуске контроллера ошибка->закрытие :
Цитата"Не удается запустить сервер данных протокла Modbus (slave) из-за следующей:

Ошибка соединения устройства Modbus 0
Код ошибки -2
Сбой инизиализации транспортного уровня Modbus.


Последовательность действий:
на работающей установке с внешними связями modbus rtu на com3
1. запущен "Конфигуратор RTXE5"
2. Создана конфигурация
3. Применена конфигурация
4. Выход из "Конфигуратор RTXE5"
5. запущен "Конфигуратор RTXE5" удалена конфигурация
6. "Настройка параметров сервера данных протокла Modbus (slave)" возобновлен Com3 (был Com1)

36.  Roman,  16.10.2009 12:07
_alex_При запуске контроллера ошибка->закрытие :
"Не удается запустить сервер данных протокла Modbus (slave) из-за следующей:

Ошибка соединения устройства Modbus 0
Код ошибки -2
Сбой инизиализации транспортного уровня Modbus.

С помощью программы "Настройка сервера данных протокола Modbus (slave) или в файле servdata.mb.ini проверьте номер устройства, выбранные тип протокола и его параметры.

_alex_Последовательность действий:
на работающей установке с внешними связями modbus rtu на com3
1. запущен "Конфигуратор RTXE5"
2. Создана конфигурация
3. Применена конфигурация
4. Выход из "Конфигуратор RTXE5"
5. запущен "Конфигуратор RTXE5" удалена конфигурация
6. "Настройка параметров сервера данных протокла Modbus (slave)" возобновлен Com3 (был Com1)

Многие SCADA программы используют сторонние программки для того, чтобы сказать драйверу, какие устройства надо опрашивать. В Каскад-САУ настройка списка опрашиваемых устройств производится привязкой точек к устройствам. Некоторые дополнительные параметры транспортного уровня (таймауты, скорости обмена и т.п.) производсят в .ini файлах задач ввода.

Программа "Конфигуратор RTX-E5" предназначена для создания и прошивки конфигурации блоков ввода-вывода PLC4 в головной модуль линейки. Никакого отношения к настройке параметров контроллера она не имеет. В состав Каскад-САУ версии 3.2 эта программа включена постольку, поскольку: а) использует конфигурационную базу данных установки как место централизованного хранения конфигурации, б) может использовать код алгоритмов, написанных в редакторе алгоритмов Каскад-САУ. Начиная с версии 4.0 эта программа будет выведена из состава Каскад-САУ и оформлена отдельным продуктом.

37.  _alex_,  16.10.2009 14:53
RomanС помощью программы "Настройка сервера данных протокола Modbus (slave) или в файле servdata.mb.ini проверьте номер устройства, выбранные тип протокола и его параметры.

все перепроверил - результат тотже

Изменено: _alex_, 16.10.2009 14:57

38.  Roman,  16.10.2009 15:14
Судя по сообщению - не смог стартовать транспорт Modbus. Напишите Ваши настройки сервера Modbus: номер устройства, протокол связи, номер и скорость COM-порта / номер порта TCP/IP. Если в них все в порядке, то придется заглянуть в журнал контроллера за подробностями ошибки.

39.  _alex_,  16.10.2009 16:30
Проблема была в том что на COM3 висел OPC Simulator
Прошу обратить внимание на мой ответ http://www.tersy.ru/index.php?module=pnForum&func=viewtopic&topic=63&start=30#pid531

40.  Roman,  16.10.2009 18:09
_alex_Прошу обратить внимание на мой ответ http://www.tersy.ru/index.php?module=pnForum&func=viewtopic&topic=63&start=30#pid531

Мы помним о вопросе #34. Пока пытаемся понять, при сможет ли Каскад-САУ под Windows гарантированно работать в цикле 50 мс. Дело в том, что даже в QNX цикл в 50 мс. начинает создавать определенные проблемы. Это уже ближе к уровню ПАЗ систем, а их никто никогда не делает на Windows компьютерах.

Правильно ли мы понимаем Вашу задачу: опрос устройств будет производить сторонний OPC-сервер, с него OPC-клиент Каскад-САУ будет вводить данные в контроллер, эти данные должны отображаться на мнемосхеме, сохраняться в архиве и выдаваться в вышестоящую (по отношению к Каскад-САУ) систему по протоколу Modbus?

41.  _alex_,  19.10.2009 17:22
Roman
Правильно ли мы понимаем Вашу задачу: опрос устройств будет производить сторонний OPC-сервер, с него OPC-клиент Каскад-САУ будет вводить данные в контроллер, эти данные должны отображаться на мнемосхеме, сохраняться в архиве и выдаваться в вышестоящую (по отношению к Каскад-САУ) систему по протоколу Modbus?


все правильно только выше КАСКАД САУ ничего не будет

42.  Roman,  20.10.2009 10:41
Мы не рекомендуем для контроллеров Windows ставить длину рабочего цикла менее 100 мс. Да, теоретически контроллер Каскад-САУ сможет работать и в цикле 50 мс. Например, демонстрационный проект может работать с таким циклом. Однако, это возможно при выполнении ряда условий:
  • Задачи ввода-вывода должны работать в жестком режиме. Суммарное время задач жесткого режима не должно превышать размера цикла.
  • Сервера даных и событий должны работать в мягком режиме или режиме тактирования. В мягком режиме время работы серверов также следует учитывать в общем времени задач.
  • Любая сторонняя нагрузка на операционную систему приведет к задержке цикла.
  • Использование OPC для ввода-вывода будет вносить свою задержку в реакцию системы.
  • Во время применения конфигурации контроллера возможна задержка рабочего цикла.
  • Увеличение количества точек, изменяющих значение в цикле приведет к увеличению трафика от контроллера к АРМ и архиву. Если сеть не будет справляться с трафиком, то возможен пропуск пакетов и потеря данных в архиве (предел на конкретной машине определяется практически, например, по тренду).
  • Увеличение количества АРМ, подключенных к серверу, также увеличит нагрузку на сервер данных и может привести к пропуску пакетов данных на АРМ оператора и в архиве. На время реакции контроллера (выдачу сигнала управления в ответ на входное воздействие) это не скажется.
  • Буфер оперативных трендов мнемосхем рассчитан на 20 минут работы с циклом 500 мс. При уменьшении размера рабочего цикла соответственно уменьшится глубина оперативного тренда.

Данные в архив записываются со временем контроллера. Все, что передано с контроллера на архивный АРМ будет записано в архив без каких-либо искажений. Как было сказано выше, архив сможет фиксировать от 3000 изменений в секунду. Будет ли это 3000 изменений одной точки в секунду или по 1 изменению 3000 точек за секунду для архива не имеет значения.

_alex_
RomanПравильно ли мы понимаем Вашу задачу: опрос устройств будет производить сторонний OPC-сервер, с него OPC-клиент Каскад-САУ будет вводить данные в контроллер, эти данные должны отображаться на мнемосхеме, сохраняться в архиве и выдаваться в вышестоящую (по отношению к Каскад-САУ) систему по протоколу Modbus?


все правильно только выше КАСКАД САУ ничего не будет

Хорошо, однако в свете вопросов выше про сервер Modbus еще раз уточню: в состав бесплатной версии Каскад-САУ включен Modbus Server. Это salve устройство Modbus, которое отвечает на запросы мастера. Задача ввода данных по протоколу Modbus, т.е. Modbus master, в состав бесплатной версии не входит. Для опроса таких устройств следует использовать сторонние программы, а в Каскад-САУ вовдить с них данных как с OPC-серверов.

43.  _alex_,  20.10.2009 14:19
RomanДанные в архив записываются со временем контроллера. Все, что передано с контроллера на архивный АРМ будет записано в архив без каких-либо искажений. Как было сказано выше, архив сможет фиксировать от 3000 изменений в секунду. Будет ли это 3000 изменений одной точки в секунду или по 1 изменению 3000 точек за секунду для архива не имеет значения.

т.е. 3000/1000мс = 3 изменения за 1мс будет зафиксировано в архиве?


44.  Roman,  20.10.2009 14:43
_alex_т.е. 3000/1000мс = 3 изменения за 1мс будет зафиксировано в архиве?

Вся цепочка прохождения сигнала от устройства в архив выглядит следующим образом:
  • Начинается очередной цикл контроллера.
  • Задача ввода записывает значение, считанное с устройства, в память контроллера.
  • Задача контроля добавляет новое значение в пакет новых данных. Время изменения значения помечается текущим временем контроллера.
  • Сервер данных передает пакет с новыми данными на архивный АРМ.
  • Рабочий цикл контроллера заканчивается, выдерживается пауза до начала следующего цикла.
  • Тем временем архивный АРМ записывает новое значение с указанным временем изменения в архивную базу данных.

Таким образом видно, что:
  • За один цикл контроллера может быт зафиксировано только одно изменение точки. С рабочим циклом в 50 мс. можно зафиксировать не более 20 изменений в секунду. Чтобы зафиксировать 3000 изменений одной точки за одну секунду придется установить длительность цикла 0.33 мс.
  • Если задача ввода получает от устройства более одного значения за такт, то зафиксировано будет все равно только одно значение за один рабочий цикл.
  • Архив записывает абсолютно все, что ему прислал контролер. Будет 3000 прислано изменений за одну секунду - запишет и их.

45.  _alex_,  21.10.2009 15:47
Roman
С рабочим циклом в 50 мс. можно зафиксировать не более 200 изменений в секунду.

скорее 20 изм
Roman
Чтобы зафиксировать 3000 изменений одной точки за одну секунду придется установить длительность цикла 0.33 мс.

собственно что и удивило
Roman
Если задача ввода получает от устройства более одного значения за такт, то зафиксировано будет все равно только одно значение за один рабочий цикл.

так как же сделать в КАСКАД-САУ оптимальное соотношение рабочий цикл и задачи ввода чтобы
Roman
Архив записывает абсолютно все, что ему прислал контролер. Будет 3000 прислано изменений за одну секунду - запишет и их.

46.  Roman,  21.10.2009 16:11
_alex_
RomanС рабочим циклом в 50 мс. можно зафиксировать не более 200 изменений в секунду.

скорее 20 изм

Да, ошибочка вышла, сообщение выше поправил.

_alex_так как же сделать в КАСКАД-САУ оптимальное соотношение рабочий цикл и задачи ввода чтобы

RomanАрхив записывает абсолютно все, что ему прислал контролер. Будет 3000 прислано изменений за одну секунду - запишет и их.

Не совсем понятно, что же Вам требуется оптимизировать и какое это имеет значение к архиву?

Независимо от размера рабочего цикла в архив запишется все, что будет прислано с контроллера. Контроллер может выдать одно изменение за рабочий цикл. Чем меньше поставите рабочий цикл, тем больше изменений за секунду можно будет зафиксировать. Однако совсем маленький цикл не позволит поставить особенности операционной системы.

47.  _alex_,  22.10.2009 09:10
Еще раз повторю:
МНе не удается достичь тех же 50 мс, все вопросы сводяться к оптимизации настроек из поста №30 для этого.
Или их нет смысла трогать?

48.  Roman,  22.10.2009 09:48
_alex_Еще раз повторю:
МНе не удается достичь тех же 50 мс, все вопросы сводяться к оптимизации настроек из поста №30 для этого.
Или их нет смысла трогать?

То есть даже при рабочем цикле в 50 мс. значение точки все равно меняется не чаще чем каждые 80 мс.? В этом случае, вероятно, дело не в контроллере Каскад-САУ, а в OPC-сервере, с которого считываются данные.

OPC-клиент Каскад-САУ принимает данные с OPC-серверов "по подписке". Т.е. сервер сам присылает изменившиеся у него данные клиенту с частотой, который запросил клиент, а клиент лишь выкладывает в память контроллера последнее значение, полученное с сервера. Если сервер будет присылать данные реже, чем 1 значение в рабочий цикл, будет наблюдаться такая картина, как у Вас. Если сервер будет присылать данные чаще, чем 1 значение за рабочий цикл, то Вы увидите в архиве 1 значение за цикл.

По умолчанию наш OPC-клиент запрашивает обновление с интервалом в половину длительности рабочего цикла. Однако сервер имеет право поменять этот интервал по своему усмотрению. Например, сервер может увеличить интервал обновления, если по его мнению запрошенный интервал слишком мал. Возможно, в Вашем случае происходит именно так. Каскад-САУ запрашивает у сервера интервал 25 мс. (при длине рабочего цикла в 50 мс.), а сервер физически не может обновлять данные чаще, чем каждые 80 мс.

Попробуйте взять сторонний OPC-клиент и опрашивать им Ваш OPC-сервер с интервалом в 25 мс. Если сервер не будет успевать, значит дело в нем. В этом случае лучше сделать рабочий цикл в Каскад-САУ равным времени обновления данных сервера: делать меньше не имеет смысла - все равно данных от сервера чаще не будет, делать больше - будут пропуски данных сервера.


49.  _alex_,  22.10.2009 12:55
с OPC понятно, но c modbus по 6 функции ведь тоже самое

50.  Roman,  22.10.2009 13:13
_alex_с OPC понятно, но c modbus по 6 функции ведь тоже самое

В сообщении 41 Вы указали, что на контроллере Каскад-САУ не будет сервера Modbus (т.е. Modbus slave). Задачи ввода Modbus (т.е. Modbus master) в бесплатной версии Каскад-САУ нет. Получается, что в Вашем случае контроллер Каскад-САУ вообще не использует Modbus. Тогда о каком Modbus идет речь?

51.  _alex_,  22.10.2009 16:04
Хорощо спросим так:
А как с modbus master (или slave неважно) это все по-другому работает?

52.  Roman,  22.10.2009 18:48
Modbus master и Modbus slave - это "две большие разницы". Однако все, что сказано для OPC-клиента в сообщении #48 верно и для них. Задача ввода Modbus (т.е. Modbus master) не сможет выкладывать в память контроллера данные чаще, чем 1 раз в цикл, даже если и опрашивает устройство реально чаще. Сервер данных протокола Modbus (т.е. Modbus slave) не сможет увидеть более 1 изменения значения за цикл и будет отвечать одним и тем же значением в течение всего цикла.

53.  Neurox,  29.07.2010 17:06
Добрый день Уважаемые разработчики.
Как вы помните пользуюсь бесплатной версией КАСКАД-САУ.
Уже год возложенные функции выполняет на 5. и сильно помогает во-первых при разборе полетов, во вторых при выполнении требований различных отраслевых документов по регистрации технологических параметров.

Недавно появилась необходимость опроса большого парка приборов на борту которых имеется протокол ModBus RTU и ModBus TCP.

Возможно ли включение в бесплатную версию модуля Modbus master?
Пользоваться костылями в виде "ОВЕН-OPC сервер для приборов с протоколом ModBus" уже порядком надоело....



Изменено: Neurox, 29.07.2010 17:11

54.  Roman,  30.07.2010 10:04
Здравствуйте, Neurox.

Спасибо за хорошие отзывы о Каскад-САУ. К сожалению, модуля Modbus master в бесплатной версии Каскад-САУ версии 3.2 не будет.

55.  dmitry,  23.12.2010 16:33
Добрый день!
Прошу Вас оказать помощь в решении следующей проблемы:
Возникли трудности при подлючении к ОРС серверу. Нужно получать данные 3х типов (BOOL, FLOAT и INTEGER)
Созданы точки, тип "входная". В качестве типа устройства выбран ОРС-сервер, указано его имя и имена тегов. В результате
все точки дискретного типа получают данные от ОРС сервера, а точки типов FLOAT и INTEGER нет, значения этих точек недостоверны.
Имена сервера и тегов введены правильно. Для проверки из этого ОРС сервера данные забирались другими ОРС клиентами и все данные были достоверны.
Для точек типов FLOAT и INTEGER в данном случае нужно настраивать параметры АЦП и диапазон ТЕ? Если да, укажите пожалуйста порядок настройки.
Заранее благодарен за ответ.

56.  Roman,  24.12.2010 09:36
dmitryДобрый день!
Прошу Вас оказать помощь в решении следующей проблемы:
Возникли трудности при подлючении к ОРС серверу. Нужно получать данные 3х типов (BOOL, FLOAT и INTEGER)
Созданы точки, тип "входная". В качестве типа устройства выбран ОРС-сервер, указано его имя и имена тегов. В результате
все точки дискретного типа получают данные от ОРС сервера, а точки типов FLOAT и INTEGER нет, значения этих точек недостоверны.
Имена сервера и тегов введены правильно. Для проверки из этого ОРС сервера данные забирались другими ОРС клиентами и все данные были достоверны.
Для точек типов FLOAT и INTEGER в данном случае нужно настраивать параметры АЦП и диапазон ТЕ? Если да, укажите пожалуйста порядок настройки.
Заранее благодарен за ответ.

Здравствуйте, dmitry.

Только что сделал тест: взял ICONICS Simulation OPS Server, сделал три тега с типами BIT, INT, FLOAT, добавил в Каскад-САУ соответственно три входных точки типа BOOL, INTEGER, FLOAT, привязал точки к тегам, ТЕ диапазон не указывал, применил конфигурацию точек – все работает.

Диапазон АЦП используется только для устройств, выполняющих преобразование АЦП-ТЕ. Для OPC серверов такое преобразование не делается, диапазон АЦП игнорируется. Диапазон ТЕ на ввод данных тоже не влияет, но лучше указать, иначе нельзя будет увидеть значение на тренде.

Как Вы определили, что значение недостоверно? В терминах Каскад-САУ недостоверное значение – это значение, у которого в статусе установлен флаг недостоверности (бит 0x00020000). Недостоверное значение на мнемосхеме отображается по умолчанию синим цветом.

Недостоверным значение точки может быть в двух случаях: как следствие ошибки ввода-вывода, или если недостоверность установлена оператором.

Для первого случая у точки в окне свойств на вкладке Управление статусами должны быть установлены флажки Устанавливать/Снимать недостоверность по ошибке ввода-вывода. Во втором случае оператору должно быть разрешено менять флаг недостоверности в окне свойств точки на вкладке Управление статусами.

Ошибка ввода-вывода (бит 0x00000080 статуса) у точки, привязанной к тегу OPC-сервера, может быть результатом следующих причин:
  • ошибка добавления тега на сервер,
  • потеря связи с сервером (тогда не будет данных по всем точкам сервера),
  • тип данных тега нельзя привести к типу VT_R8 (double),
  • значение тега сервера имеет плохое качество (OPC_QUALITY_BAD),
  • значение тега неопределенное (OPC_QUALITY_UNCERTAIN) из-за ошибки датчика (OPC_QUALITY_SENSOR_CAL).

Текущее качество OPC тега в том виде, в котором они приходит с сервера, лучше посмотреть каким-либо специализированным клиентом.

Проблемы с добавлением тега и связью с сервером можно определить только по журналу событий контроллера Каскад-САУ. Для просмотра журнала надо запустить монитор контроллера (программа, предназначенная для просмотра содержимого внутренней памяти и журналов контроллера).

Откройте папку установки контроллера (для бесплатной версии Каскад-САУ в 32-битной Windows по умолчанию это папка C:\Program Files\Tersy\Controller 3.2), затем из папки Bin запустите TechMon.exe. В окне монитора в меню Монитор выберите команду Журнал событий и смотрите события, которые выдает задача TechIO.opc.exe (задача ввода-вывода OPC).

Откройте в мониторе список точек и посмотрите значение и статус точек, привязанных к тегам OPC (точку в списке проще найти по номеру или названию). Меняется ли текущее значение точки? Чему равен текущий статус точки?

57.  dmitry,  24.12.2010 15:10
Roman
dmitryДобрый день!
Прошу Вас оказать помощь в решении следующей проблемы:
Возникли трудности при подлючении к ОРС серверу.
...
Для точек типов FLOAT и INTEGER в данном случае нужно настраивать параметры АЦП и диапазон ТЕ? Если да, укажите пожалуйста порядок настройки.
Заранее благодарен за ответ.


Здравствуйте, dmitry.

Только что сделал тест: взял ICONICS Simulation OPS Server, сделал три тега с типами BIT, INT, FLOAT, добавил в Каскад-САУ соответственно три входных точки типа BOOL, INTEGER, FLOAT, привязал точки к тегам, ТЕ диапазон не указывал, применил конфигурацию точек – все работает.

...
Откройте в мониторе список точек и посмотрите значение и статус точек, привязанных к тегам OPC (точку в списке проще найти по номеру или названию). Меняется ли текущее значение точки? Чему равен текущий статус точки?



Спасибо за ответ. Выполнил следующее:
В проекте создано 16 точек типа BOOL (связаны с тегами ОРС сервера DataHub). Проект стабильно без сбоев проработал около месяца.
Теперь появилась необходимость добавить в проект аналоговые точки. Были добавлены 3 точки (2 типа INTEGER и 1 типа FLOAT) и связаны с тегами того же ОРС сервера (для всех точек одинаковое имя ОРС сервера "Cogent.OPCDataHub.1", имена тегов BOOL следующего формата "Groupe_main:Input.dServer_OOILink_res", а тегов INTEGER и FLOAT "SystemData:DiskCBusySpace". Свойства точек все типов одинаковые (за исключением Типа данных и имени тега ОРС сервера).
После создания всех точек с помощью монитора TechMon.exe посмотрел значения и статус точек:
все точки типа BOOL имеют текущий статус $10000000
точки типа INTEGER - $08040080
точка типа FLOAT - $00040080
Значения аналоговых точек равны 0 и не изменяются.

Для просмотра значений и качества тегов ОРС сервера дополнительно использовал FactorySoft OPC Client. Качество всех тегов (и дискретного и аналогового типов) 192.
Подскажите что еще можно предпринять?

58.  Roman,  24.12.2010 15:33
dmitry
После создания всех точек с помощью монитора TechMon.exe посмотрел значения и статус точек:
все точки типа BOOL имеют текущий статус $10000000
точки типа INTEGER - $08040080
точка типа FLOAT - $00040080
Значения аналоговых точек равны 0 и не изменяются.

У Вас включен режим имитации по точкам INTEGER и FLOAT (бит статуса $00040000). В режиме имитации ввод с устройства в точку отключается.

Кстати, значение точек со включенной имитации на мнемосхеме должно отображаться серым цветом.

59.  dmitry,  24.12.2010 16:05
Roman
dmitry
После создания всех точек с помощью монитора TechMon.exe посмотрел значения и статус точек:
все точки типа BOOL имеют текущий статус $10000000
точки типа INTEGER - $08040080
точка типа FLOAT - $00040080
Значения аналоговых точек равны 0 и не изменяются.

У Вас включен режим имитации по точкам INTEGER и FLOAT (бит статуса $00040000). В режиме имитации ввод с устройства в точку отключается.

Кстати, значение точек со включенной имитации на мнемосхеме должно отображаться серым цветом.


Спасибо за ответ! Проблема решена.
Вообще раньше это были точки для экспериментов и для них был включен режим имитации (тип точек был "виртуальная"). Потом вместо создания новых входных точек я изменил свойства существующих и конечно отключил режим имитации.
Проблема была решена только созданием новых точек.

60.  Roman,  25.12.2010 08:43
dmitryСпасибо за ответ! Проблема решена.
Вообще раньше это были точки для экспериментов и для них был включен режим имитации (тип точек был "виртуальная"). Потом вместо создания новых входных точек я изменил свойства существующих и конечно отключил режим имитации.
Проблема была решена только созданием новых точек.

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

Как же вы отключали режим имитации, если на самом деле он остался? Иначе создается впечатление, что для отключения имитации надо создать новые точки.


61.  dmitry,  27.12.2010 09:04
Roman
dmitryСпасибо за ответ! Проблема решена.
Вообще раньше это были точки для экспериментов и для них был включен режим имитации (тип точек был "виртуальная"). Потом вместо создания новых входных точек я изменил свойства существующих и конечно отключил режим имитации.
Проблема была решена только созданием новых точек.

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

Как же вы отключали режим имитации, если на самом деле он остался? Иначе создается впечатление, что для отключения имитации надо создать новые точки.



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

62.  Sinckler,  17.05.2013 09:55
Здравствуйте, столкнулся с проблемой при работе с Modbus TCP.
Дело в том, что при попытке передать значение в Каскад-САУ при помощи протокола Modbus TCP всплыла проблема - не записываются значения в точку.
Опишу примерный алгоритм работы:
На одном ПК установлена Касакад-САУ, на другом компьютере стоит программа Modbus/TCP -server/client. Когда идет работа на разных компьютерах с двумя последними упомянутыми программами на каждом, то запись и чтение значений происходит исправно. Чтение ИЗ Каскад-САУ значений точек тоже происходит: целые значения читаются исправно, а float с небольшими странностями из-за того, что запись идет в 2 регистра. А проблема состоит в том, что в Каскад не получается записать значения. Каждый раз при попытке записи с Holding регистры получаю сообщение Illegal adress. В журнале событий выводится следующее:
16.05.2013 13:46:01.106 ServData.mb.exe (13008) 20 *** Управление: Управление регистром 40002 невозможно, т.к. регистр отсутствует в конфигурации
В настройке параметров точки в Передаче данных во внешние системы указываю:
Modbus TCP/IP (Slave)
Регистр данных float/little-endian
40002
Тип сигнала точки Входная, тип данных float.
И главное, крутил как мог и безрезультатно.
Программа-сканер
Предположительно, что именно с записью в Каскад-САУ какие-то проблемы. Использую бесплатную версию

63.  Roman,  17.05.2013 10:54
Здравствуйте, Sinckler.

Регистры для записи должны иметь (на вкладке внешних систем) класс данных "Регистр управления...". Вероятно, дело в том, что Вы пытаетесь записать в регистр для чтения: Регистр данных - это регистры чтения.

64.  Sinckler,  17.05.2013 13:44
Выходит, регистры управления это регистры для записи и чтения? Или только записи?
С регистров управления не получилось считать данные. Сканер выдал ошибку

65.  Roman,  17.05.2013 15:27
SincklerВыходит, регистры управления это регистры для записи и чтения? Или только записи?
С регистров управления не получилось считать данные. Сканер выдал ошибку

Регистры данных - только для чтения. Регистры управления - только для записи.

66.  Сергей,  26.05.2017 18:02
Здравствуйте, подскажите пожалуйста, как правильно настроить Каскад-САУ в режиме slave для передачи по ModbusRTU

67.  Roman,  29.05.2017 09:33
СергейЗдравствуйте, подскажите пожалуйста, как правильно настроить Каскад-САУ в режиме slave для передачи по ModbusRTU

Здравствуйте, Сергей.

Какую версия Каскад-САУ Вы используете? Мы рекомендуем использовать более новую версию Каскад-САУ 4.0. загрузить можно из файлового архива на нашем сайте.

Для версии 3.2:

1. В окне свойств точки на вкладке "Внешние связи" в группе "Передача данных во внешние системы" укажите протокол Modbus TCP или Modbus RTU, укажите в поле "Класс данных" тип регистра, в поле "Адрес ввода/вывода" укажите номер регистра. Нумерация регистров начинается с 1, если нужен бит, то он указывается через двоеточие, например 1:1, 1:2 и т.д.

2. В папке установки Каскад-САУ откройте папку Bin, в ней файл ServData.mb.ini. В этом файле настройте тип сервера MOdbus RTU или TCP, укажите Modbus адрес сервера и параметры COM-порта.

3. Запустите контроллер Каскад-САУ.

Для версии 4.0:

1. Запустите среду разработки. Создайте проект. Добавьте в проект узел, например, узел контроллера.

2. Откройте у узла папку "Серверы и экспорт данных". Если она не видна, то включите ее в контекстном меню узла по правой кнопке.

3. Щелкните правой кнопкой на папке "Серверы и экспорт данных" и добавьте COM-порт. Выделите слева папку "Серверы и экспорт данных", чтобы новый COM-порт показался справа в таблице. Укажите в столбце "Параметры" параметры подключения: скорость, четность, биты данных и т.п.

4. Аналогично с помощью меню по правой кнопке добавьте в COM-порт устройство Modbus, в него добавьте регистры чтения. Нумерация регистров начинается с 1. Номер регистра - это 5-ти значное число, первая цифра в котором используется для указания типа регистра: 0 - Coil, 1 - Discrete Input, 3 - Input Register, 4 - Holding Register.

5. Привяжите к регистру новую/существующую точку.

68.  Сергей,  31.05.2017 17:59
Здравствуйте, в Каскад-САУ 3.2 (бесплатная версия) столкнулся со следующей проблемой: при попытке считать по Modbus TCP значение точки получаю просто ноль. Точка выходная FLOAT, на вкладке внешние связи настроил следующие параметры: протокол передачи Mosbus TCP/IP (Slave), класс данных Регистр данных float/litle-endian, адрес ввода/вывода 9. При опросе ничего не возвращает. Но если при тех же условия поменять тип данных точки на INTEGER, а класс данных на Регистр данных, то все работает.

69.  Roman,  01.06.2017 10:43
СергейЗдравствуйте, в Каскад-САУ 3.2 (бесплатная версия) столкнулся со следующей проблемой: при попытке считать по Modbus TCP значение точки получаю просто ноль. Точка выходная FLOAT, на вкладке внешние связи настроил следующие параметры: протокол передачи Mosbus TCP/IP (Slave), класс данных Регистр данных float/litle-endian, адрес ввода/вывода 9. При опросе ничего не возвращает. Но если при тех же условия поменять тип данных точки на INTEGER, а класс данных на Регистр данных, то все работает.

Действительно, есть такое. Разбираемся, ответим позже.

70.  Roman,  01.06.2017 11:22
Ошибку с отправкой float регистров в сервере Modbus Каскад-САУ 3.2 исправили, ссылку на загрузку отправили по электронной почте.

71.  Сергей,  01.06.2017 12:34
Спасибо, все работает.

72.  Viktor Tiger,  03.03.2021 19:07
Добрый день! Помогите пожалуйста! Ситуация такая: пытаюсь вычитать по Modbus данные с прибора "Ваттметр цифровой ВТ-01-ТК" в формате (далее с инструкции) Описание регистров чтения результатов измерения (функция 04 - Read Input Register):
01 - активная мощность сети (байты 2, 3);
02 - активная мощность сети (байты 0, 1) и так далее.
Если в Modbus Pool при вычитывании холдинг регистров (2-х последовательно) можно установить порядок чтения (Float AB CD или другой порядок) и показания выводятся адекватными, то в Каскад САУ при добавлении Чтения регистра Float с начальным адресом 01 (полный 30001) получается неправильное число.
Можно ли каким то образом изменить порядок чтения регистров или вычитать по отдельности а потом в исполняемой программе объединить, если да, то как?
Спасибо!

73.  Admin,  03.03.2021 20:23
Viktor TigerЕсли в Modbus Pool при вычитывании холдинг регистров (2-х последовательно) можно установить порядок чтения (Float AB CD или другой порядок) и показания выводятся адекватными, то в Каскад САУ при добавлении Чтения регистра Float с начальным адресом 01 (полный 30001) получается неправильное число.
Можно ли каким то образом изменить порядок чтения регистров или вычитать по отдельности а потом в исполняемой программе объединить, если да, то как?


Зраствуйте, Viktor Tiger! Т.к. вы не указали через какой физический канал у вас идёт опрос прибора, то будем предполагать, что опрос происходит через COM1 контроллера. Для смены порядка чтения регистра Float, в левой части экрана, в окне «Навигатор проекта» последовательно раскройте «Узлы системы», «Контроллер», «Устройства ввода-вывода» и выберите «COM-порт (COM1)». В правой части экрана на закладке «Проводник» сдвиньте горизонтальную полосу прокрутки максимально вправо и в колонке «Параметры» установите значение "SwapFloat" в "1", "SwapFloat=1". Выделите значок «Узлы системы» и выберите в меню «Проект» команду «Загрузить конфигурацию на узлы».

74.  Viktor Tiger,  04.03.2021 10:37
Добрый день! Спасибо! Помогло! Да, действительно вход СОМ порт (моха). Скажите пожалуйста есть описание работы в Каскад САУ 4? Кроме Быстрого старта, ничего не нашел. Спасибо.

75.  Viktor Tiger,  30.05.2022 18:00
Добрый день! Нужна помощь. Нужно с одного проекта Каскад САУ 4 передавать по сети данные в другой проект. Пробовал на одном проекте создать тег записи в OPC, а в другом тег чтения. Но при создании тега чтения, в выборе тега сервера из списка, при нажатии на "Cascade.OPC.DataDerver.4" программа виснет и вылетает. При вводе тега в ручную данные в точку не поступают.

76.  Admin,  31.05.2022 11:17
Viktor TigerДобрый день! Нужна помощь. Нужно с одного проекта Каскад САУ 4 передавать по сети данные в другой проект. Пробовал на одном проекте создать тег записи в OPC, а в другом тег чтения. Но при создании тега чтения, в выборе тега сервера из списка, при нажатии на "Cascade.OPC.DataDerver.4" программа виснет и вылетает. При вводе тега в ручную данные в точку не поступают.


Здравствуйте, Viktor Tiger! Пока готовится ответ в части OPC, уточните такую вещь. Вам требуется передать данные из проекта Каскад 4 в совершенно другую SCADA-систему или вы хотите передать данные в другой проект Каскад 4.

77.  Viktor Tiger,  31.05.2022 11:49
Добрый день! Нужно организовать передачу данных с одного проекта реализованного на Каскад САУ 4.0.25.4839 в другой проект реализованный на Каскад САУ 4.0.25.4839. Компьютеры находятся в одной сети, при запуске АРМ проекта "№1" на компьютере 2, АРМ работает без проблем. Но необходимо на компьютере 2 получать данные с компьютера 1 для последующей обработки. В качестве "устройства" передачи использовал Cascade.OPC.DataServer.4. По логам сервера на компьютере 1 (отдающая сторона) значения тега меняются. Как сформировать адресацию запроса именно с этого OPC сервера, не знаю. При создании на компьютере 2 OPC сервера и добавления тега чтения в списке при нажатии на сервер программа "среда разработки" "вылетает".

78.  Viktor Tiger,  31.05.2022 17:56
Похоже с самим компьютером 2 (в моем случае) какая то беда! На компьютере 1 тег записи, тег чтения в OPC сервере создаются без проблем. А на компьютере 2 при тех же самых действиях выходит сообщение в окне "прекращена работа программы" - Сигнатура проблемы: Имя события проблемы: APPCRASH, Имя приложения: prjedit.exe, Версия приложения: 4.0.25.4839, Отметка времени приложения: 5fc47eef, Имя модуля с ошибкой: StackHash_a752, Версия модуля с ошибкой: 6.1.7601.24545, Отметка времени модуля с ошибкой: 5e0eb7a5, Код исключения: с0000374, Смещение исключения: 000с3с77, Версия ОС: 6.1.7601.2.1.0.256.1, Код языка: 1049, Дополнительные сведения 1: а752, Дополнительные сведения 2: a752082e13faee9255140324038219e5, Дополнительные сведения 3: а754, Дополнительные сведения 4: e574f9af5666a3f79f7b451825f2d5a5. Удаление и переустановка Каскад-САУ 4.0 к положительным результатам не привела. На обеих машинах установлена ОС Windows 7 32-Bit. Пойду искать другую машину на которую поставлю Каскад, потом отпишусь по результатам.

79.  Admin,  31.05.2022 18:20
Здравствуйте, Viktor Tiger! На Windows 7 32-Bit таких проблем с OPC не наблюдается, очень похоже, что проблема касается "компьютер 2". Ждем результатов замены компьютера.

80.  Viktor Tiger,  01.06.2022 11:52
Добрый день! Проблема действительно была в самом компьютере. Развернул Каскад 4.0 на другой машине и все прекрасно заработало. Извините за беспокойство!
PS. Скажите пожалуйста новые инструкции (кроме "Быстрого старта") не появились? Периодически возникают вопросы по конфигурации или в процессе поиска ошибок, а единственным источником информации является форум, что не всегда удобно!
Разработчикам Каскада спасибо!

Изменено: Viktor Tiger, 01.06.2022 11:53

81.  Admin,  01.06.2022 13:54
Здравствуйте, Viktor Tiger!

Спасибо за хорошие отзывы о Каскад-САУ.

К сожалению, в связи большим объемом других работ написание документации затягивается. На данный момент для общего пользования доступно только руководство "Быстрый старт". Кроме общения в форуме Вы можете писать на адрес support@tersy.ru