УкраїнськаEnglishmRussian
Вход/Новый
В теме много сообщений

Реализация протокола DCON модулей ввода-вывода I-7000 ICP DAS


Автор Сообщение
Сообщение создано: 21. 10. 2008 [19:08]
almaz
Almaz Karimov
Contributor
Создатель темы
Зарегистрирован(а) с: 25.09.2008
Сообщения: 516
В соответствии с обещанием Experta выкладываю модуль DAQ DCON. Модуль реализован на основе модуля MODBUS автора. В настоящее время работает со следующими блоками ввода-вывода, которые были в наличии: I-7051, I-7045, I-7063, I-7017, I-7024.
Блоки настраиваются при помощи поставляемого с ними программного обеспечения. При правильном подключении и настройки параметров в OpenSCADA работает сразу. Проверено.
Документация по подключению модуля к OpenSCADA прилагается в папке doc. Документации по протоколу DCON нет, так как ее и так в интернете много.

Надеюсь модуль появится в следующей версии OpenSCADA.

Доп.ссылка: http://slil.ru/26259206

21 век - век повсеместной автоматизации. Главное - во благо всем людям.
Вложенный файл

DCON.tar.gz (Тип файла: application/x-gzip, Размер: 168.99 килобайт) — 4559 загрузок
Сообщение создано: 22. 10. 2008 [14:00]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3742
Модуль включил в репозиторий. Однако есть несколько замечаний:
1. Напишите в документацию о нём, особенностях конфигурации и использования: http://diyaorg.dp.ua/oscadawiki/Doc/DCON
2. Не мешало бы обновить его в свете последних изменения и исправлений в модуле на котором он основан: ModBus.

P.S. В будущем я думаю выделить работу с последовательными интерфейсами в отдельный транспорт, а протоколы в модуль транспортных протоколов. Что кроме решения возможных коллизий последовательных интерфейсов (в разных модулях можно указать использование одного последовательного интерфейса) позволит реализовать эти протоколы на уровне сервера, а значит OpenSCADA сможет предоставлять сервис иным системам по этим протоколам, сделав более привлекательным для PLC.

Learn, learn and learn better than work, work and work.
Сообщение создано: 25. 10. 2008 [00:07]
almaz
Almaz Karimov
Contributor
Создатель темы
Зарегистрирован(а) с: 25.09.2008
Сообщения: 516
Модуль DCON перенял от модуля MODBUS общий скелет модуля и класс Serial. Остальное переделано под нужды протокола обмена DCON. Сравнив коды класса Serial версий OpenSCADA 0.6.1 и 0.6.2 изменений не заметил.
При появлении последовательного транспортного протокола, я так понимаю, именно класс Serial переедет в другой модуль и потребуется подправить механизм обращения к нему?
По мере появления новых блоков I-7000 буду добавлять их в модуль (хотя это можно сделать имея только описание модуля). Также планирую добавить сторожевую функцию Host OK блоков.
Использование модуля не представляет проблем, так как детали протокола обмена скрыты от пользователя в исходном коде. Пользователь только выбирает тип блока, использование контрольной суммы (конечно еще надо настроить последовательный порт под настройки блоков), и на вкладке Атрибуты получает все переменные ввода-вывода и ошибки приема-передачи, которыми можно пользоваться из других модулей OpenSCADA.
Документацию wiki конечно надо будет заполнить...

21 век - век повсеместной автоматизации. Главное - во благо всем людям.
Сообщение создано: 25. 10. 2008 [10:25]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3742
almaz wrote:

Модуль DCON перенял от модуля MODBUS общий скелет модуля и класс Serial. Остальное переделано под нужды протокола обмена DCON. Сравнив коды класса Serial версий OpenSCADA 0.6.1 и 0.6.2 изменений не заметил.
.
Смотреть нужно в репозитории. Там, как минимум, функция ожидания байтов на предмет особенностей select поправлена. И вообще отталкиваться в модификации уже нужно от того что в репозитории, раз оно туда попало.


Learn, learn and learn better than work, work and work.
Сообщение создано: 24. 11. 2008 [09:41]
Expert
Владимир Тихонов
Зарегистрирован(а) с: 05.08.2008
Сообщения: 45
Собственно для версии OpenSCADA 0.6.2

Все глюки Windows исправляются установкой Linux
Вложенный файл

dcon.tar.gz (Тип файла: application/x-gzip, Размер: 169.33 килобайт) — 4910 загрузок
Сообщение создано: 24. 11. 2008 [11:05]
almaz
Almaz Karimov
Contributor
Создатель темы
Зарегистрирован(а) с: 25.09.2008
Сообщения: 516
Это то же самое.
Только каталог dcon в архиве необходимо переименовать в DCON.

[Сообщение редактировалось 1 раз(а), в последний раз 27.11.2008 в 09:08.]

21 век - век повсеместной автоматизации. Главное - во благо всем людям.
Сообщение создано: 02. 12. 2008 [14:12]
almaz
Almaz Karimov
Contributor
Создатель темы
Зарегистрирован(а) с: 25.09.2008
Сообщения: 516
Документация wiki заполнена . Функция ожидания байтов класса Serial модуля DCON была подправлена параллельно с модулем ModBus при разработке.

21 век - век повсеместной автоматизации. Главное - во благо всем людям.
Сообщение создано: 03. 12. 2008 [10:32]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3742
Хорошо.
Судя по документации Вы не взяли адаптированный мною и включенный в репозиторий исходный код. Который включает и перевод сообщений интерфейса.
Возьмите его за основу, подготовьте патч и вычылайте мне Ваши изменения.

Learn, learn and learn better than work, work and work.
Сообщение создано: 19. 12. 2008 [11:27]
almaz
Almaz Karimov
Contributor
Создатель темы
Зарегистрирован(а) с: 25.09.2008
Сообщения: 516
12.12.2008 г. скачал исходный код с репозитория. Выполнил построчное сравнение кода модуля MODBUS (репозиторий) и кода MODBUS (версия 0.6.2-2 со страницы загрузки), взятого за основу.

Нашел доработки в процедуре Task. Но данная процедура для DCON была полностью переписана и доработки, сделанные в MODBUS, для DCON не нужны.

Класс Serial модуля MODBUS (версия 0.6.2-2 и репозиторий) остался без изменений. Но класс Serial модуля DCON при отладке пришлось немного переделать (т.е. он изначально отличается от MODBUS). Объясню почему:

Для отладки DCON была преднамеренно использованна некачественная линия связи RS-485. Класс Serial модуля MODBUS вызывал полное зависание OpenSCADA (выход только kill process) при ошибке длины ответного пакета (длина принятого пакета меньше ожидаемой)
С протоколом MODBUS пока не работал, но такая ошибка, я думаю, должна вызвать зависание модуля MODBUS.

Класс Serial был доработан так, чтобы он всегда возвращал управление обратно в любых условиях. Поэтому я не могу внести оригинальный код Serial в модуль DCON, так как он перестает нормально работать.

Насчет перевода: файлы *.po полностью от модуля MODBUS. То есть переводом не занимался. Поэтому несколько текстовых полей, специфичных для DCON остались без перевода (на английском). Если буду вносить какие-то существенные изменения в DCON - недоработку исправлю.

21 век - век повсеместной автоматизации. Главное - во благо всем людям.
Сообщение создано: 19. 12. 2008 [18:38]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3742
almaz wrote:

Класс Serial модуля MODBUS (версия 0.6.2-2 и репозиторий) остался без изменений. Но класс Serial модуля DCON при отладке пришлось немного переделать (т.е. он изначально отличается от MODBUS). Объясню почему:

Для отладки DCON была преднамеренно использованна некачественная линия связи RS-485. Класс Serial модуля MODBUS вызывал полное зависание OpenSCADA (выход только kill process) при ошибке длины ответного пакета (длина принятого пакета меньше ожидаемой)
С протоколом MODBUS пока не работал, но такая ошибка, я думаю, должна вызвать зависание модуля MODBUS.

Не должна. Serial ничего не знает про размер пакета. Он работает только по таймаутам. А размер проверяют в TMdContr::modBusReq. И если не достаточно, то сообщает "13:Error respond: Too short." или "13:Error respond: CRC check error.".

Learn, learn and learn better than work, work and work.



9656