Начало работы с DCON Utility Pro

11 апреля 2024 г.

1. Общие сведения

DCON - это протокол связи "вопрос/ответ", поддерживаемый некоторыми модулями ввода-вывода ICP DAS. Все команды и ответы представлены в удобном для использования формате ASCII. Данный протокол допускает один ведущий и 255 ведомых узлов и полудуплексный режим передачи данных. В этой статье будут описаны процедуры установления связи и конфигурирования устройств, поддерживающих протокол DCON.

Поиск, настройку и тестирование можно произвести через последовательный порт (RS-232/485) или через Ethernet (используя виртуальный com-порт) на ПК с Windows или ICP DAS ПКА (программируемый контроллер автоматизации). Для этого существует приложение DCON Utility Pro, которое предоставляет набор инструментов для реализации данных целей.

Для лучшего понимания протокола следует рассмотреть стандартный формат записи кадра (запроса/ответа).

Структура запроса
Разделитель
1 байт
Адрес модуля
1 байт
Команда
1...5 байт
Контрольная сумма
1 байт
CR
1 байт
Структура ответа
Разделитель
1 байт
Адрес модуля
1 байт
Данные
1...256 байт
Контрольная сумма
1 байт
CR
1 байт

Советы и предупреждения

Стоит учесть, что не во всех запросах есть номер команды и не во всех ответах есть данные. Также данные могут присутствовать в запросе, а номер команды — в ответе.

  • Разделитель. Каждый кадр начинается с символа разделителя:
    Символы запросов: %, #, $, @, ~, *
    Символы ответов: !, >, ~, ?
  • Адрес модуля прописан в настройках вашего модуля в утилите - будет рассмотрен далее 
  • Команда/данные. Список команд есть в самой утилите, сравнить корректность ответов можно в мануале индивидуально для каждого модуля.
  • Контрольная сумма. Она необходима для проверки целостности данных при передаче или хранении. Ее можно вычислить, просуммировав все ASCII-коды символов кадра (без символа возврата каретки). 

Пример запроса: $012(CR)

  1. Сумма символов строки запроса: “$’’ + “0’’ + “1’’ + “2’’ = 24h + 30h + 31h + 32h = B7h
  2. Следовательно, контрольная сумма “B7’’ и командная строка будет выглядеть так: $012B7(CR)
    Пример ответа: !01200600(CR)

Пример ответа: !01200600(CR)

  1. Сумма символов строки ответа: “!’’ + “0’’ + “1’’ + “2’’ + “0’’ + “0’’ + “6’’ + “0’’ + “0’’ = 21h + 30h + 31h + 32h + 30h + 30h + 36h + 30h + 30h = 1AAh
  2. Поскольку сумма больше 0FFh, то берется только младший байт. Следовательно, контрольная сумма “AA’’ и строка ответа будет выглядеть так: !01200600AA(CR)
  • CR – символ возврата каретки. Является концом кадра. 

2. Подключение модуля

Для примера были использованы следующие устройства:

  • Модуль дискретного вывода M-7045D
  • Преобразователь интерфейсов USB в RS-232/485 Uport 1150
  • Блок питания HDR-60-24

1. Перед настройкой модуля убедитесь, что переключатель установлен в положение «Init» или подключите вывод Init к GND. Если не установлен, то переключите модуль в данный режим работы одним из перечисленных способов и перезагрузите его.

2. Для установления связи ПК с модулем понадобится преобразователь интерфейсов и источник питания. Обратите внимание на уровень напряжения питания для вашего модуля. Варианты подключения:

3.Скачайте утилиту DCON Utility Pro. Приложение запускается из соответствующей папки без установки.

4. Откройте окно настроек поиска, нажав на кнопку «Connection Options».

5. В раскрывшемся окне можно установить следующие параметры:

  • COM-порт

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

Если преобразователь универсальный, убедитесь, что в настройках выставлен необходимый интерфейс.

  • Baud Rate – скорость передачи данных. Устанавливается такой же, как и в настройках COM-порта. В данном случае 9600.
  • Протокол связи. Он выбирается исходя из поддерживаемых вашим модулем протоколов. Протоколы, поддерживаемые M-7045D — это DCON и Modbus RTU.
  • Checksum – контрольная сумма. По умолчанию оставляем отключенной.
  • Формат данных 

Возможные варианты: N,8,1; N,8,2; E,8,1; O,8,1

Первый символ означает наличие/отсутствие проверки на четность:

N (No parity) — без бита проверки

E (Even parity) – с битом проверки на четность

O (Odd parity) – с битом проверки на нечетность

Число 8 — количество битов информации в пакете;

Последнее число — количество стоп-битов 1 или 2.

Устанавливаем такой же, как и в спецификации модуля.

Кроме перечисленного в окне поиска есть следующие настройки:

  • Интервал адресов устройства. Задав его, можно ускорить процесс поиска. По умолчанию приложение ищет устройство на интервале от 0 до 255.
  • Timeout - время ожидания подключения устройства. Чем оно больше, тем дольше приложение будет ждать подключение. Стандартно 300мс.
  • Флаги для работы с корзиной. Они осуществляют поиск адреса и получение конфигурации модулей ввода-вывода корзины.

Теперь начать поиск, нажав кнопку «Start search».

При появлении вашего модуля в главном окне, нажмите на кнопку «Stop Search», чтобы остановить поиск, и на саму строку модуля для того, чтобы открыть его настройки.

3. Настройка модуля

В открывшемся окне конфигуратора выберите протокол DCON. Установите адрес устройства, скорость передачи данных, формат данных и контрольную сумму. Для загрузки параметров нажмите на кнопку Set Module Configuration. После этого переведите модуль в нормальный режим с помощью переключателя (Run mode или Normal mode), либо отсоедините Init от GND. Перезапустите модуль, отключив и включив питание. Теперь настройки будут применены.

В зависимости от типа модуля может быть различное количество вкладок настройки ввода-вывода. С помощью этих вкладок можно проверить работоспособность отдельных узлов контроллера и в целом связь с ним, а также индивидуально настроить каналы. В данном случае модуль имеет только дискретные выходы. Поэтому присутствует единственная вкладка «DO».

Здесь можно установить бит в любой канал вывода. Индикация на устройстве (если она есть) демонстрирует правильность работы устройства.

Set [Power-on Value]. Для того, чтобы устройство запомнило значение какого-либо вывода после перезагрузки питания, необходимо поставить флажок на соответствующий вывод и нажать эту кнопку. Установленный флаг означает высокий уровень на канале, не установленный - низкий. Таким образом, если после выставления флажка, не нажать на данную кнопку, при выключении и включении питания устройство забудет установленный бит. Установим, например, высокий уровень на выводах DO1, DO2, DO3. При перезагрузке устройства значения не изменятся.

В результате видим правильную индикацию после отключения и включения модуля:

Set [Safe Value]. Это кнопка установки безопасного значения при срабатывании сторожевого таймера. Сторожевой таймер будет рассмотрен далее.

Настройки каналов аналоговых модулей более расширены. Можно установить тип сигнала и его диапазон, а также метод подключения. Например, окно настроек для модуля аналогового ввода i-7017Z выглядит следующим образом:

AI Value - текущие значения сигнала на входах

Type Code - выбор типа сигнала (напряжение/ток) и диапазона измерения

Можно поставить флажок напротив Enable/Disable All для разрешения или запрета измерения сигнала на всех вводах или разрешить/запретить измерение сигнала с определенных вводов, поставив или убрав флажок рядом с соответствующим каналом.

В данном модуле предусмотрено 10 дифференциальных либо 20 несимметричных аналоговых входов. С помощью флажка Enable SingleEnded можно переключиться на необходимый метод подключения источника сигнала.

4.Команды терминала

Помимо настроек конфигурации в приложении есть возможность отправки команд удаленному модулю. Для этого необходимо нажать на кнопку «Command line».

В открывшемся окне можно наблюдать следующее:

  1. Настройки COM-порта и модуля
  2. Список возможных команд для этого модуля

Команды для данного модуля предназначены либо для получения (GET, READ), либо для установки (SET, OUTPUT) данных. В этой статье они будут поделены на следующие категории:

  • Команды для модуля
  • Команды для выводов модуля
  • Команды для сторожевого таймера

Следует обязательно проверить настройки COM-порта и модуля, далее выбрать необходимую команду из списка возможных команд и нажать кнопку Send либо клавишу Enter на клавиатуре.

4.1 Команды для модуля

С помощью этих команд можно получить имя модуля, версию прошивки, установить или узнать текущую конфигурацию и протокол.

  • Чтение имени модуля GET_MODULE_NAME

Ответ соответствует действительности — используемая модель 7045D

  • Чтение прошивки GET_MODULE_FIRMWARE

Из ответа следует, что версия прошивки 01.10

  • Чтение конфигурации GET_MODULE_CONFIG

Терминал прислал следующий ответ: 40 — тип модуля (DIO), 06 — скорость передачи данных 9600 (можно посмотреть в таблице параграфа 1.10 мануала), 00 — настройки контрольной суммы и направления обновления счетчика (тоже в 1.10).

  • Установка конфигурации SET_MODULE_CONFIG

Структура та же, здесь мы изменяем адрес модуля с 1 на 2. После изменения конфигурации, необходимо перезапустить питание модуля. После этого в каждой команде после указателя будет 02.

  • Чтение протокола GET_MODULE_PROTOCOL

В ответе:

1 цифра – поддерживаемые протоколы (0 – только DCON, 1 – DCON и Modbus RTU). В данном случае 1.

2 цифра – текущий протокол, который будет установлен после сброса и включения питания (0 – DCON, 1 – Modbus RTU). В данном случае 0.

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

  • Установка протокола SET_MODULE_PROTOCOL

Перед использованием команды нужно перевести переключатель в позицию «Init». Новый протокол будет сохранен в памяти и установлен после перезагрузки модуля. В представленной команде протоколом по умолчанию устанавливается Modbus RTU.

4.2 Команды для выводов модуля

  • Отправка данных на выводы модуля OUTPUT_DO

Установим сначала низкий, а потом высокий уровень на одном из включенных ранее выходов DO1.

Структура команды:

@ - указатель

01 — номер модуля, установленный ранее в конфигурации

0000 — шестнадцатиричное число, обозначающее уровни на выходах.

Ранее были установлены сигналы высокого уровня на DO1, DO2, DO3:

Установим 0 на DO1, тогда команда будет выглядеть следующим образом: @01000C

Получен необходимый ответ, и индикация модуля изменилась:

Установим 1 на DO1, тогда команда будет выглядеть следующим образом: @01000E

Пояснение команд и их записи предоставлено в мануале к модулю.

Советы и предупреждения

Следует заметить, что для разных моделей команды могут отличаться. Например, для модели той же серии, что и рассматриваемая, M-7044 в команде установки уровня на выходы не 4 шестнадцатеричных числа, а всего 2.

  • Чтение данных с выводов модуля READ_DO

Команда чтения данных состоит только из указателя и адреса модуля, и предоставляет состояние всех выводов в виде шестнадцатиричного числа.

  • Чтение и установка Power On value и Safe Value

Команда установки Power On Value SET_DO_POWER_ON:

Команда установки Safe Value SET_DO_SAFE_VALUE:

Команда чтения Power On Value GET_DO_POWER_ON:

Команда чтения Safe Value GET_DO_SAFE_VALUE:

Ранее были установлены Power on значения единиц на выводах DO1, DO2, DO3, что и подтверждается ответом на команду. Безопасные значения установлены не были.

4.3 Команды для сторожевого таймера

Host Watchdog (сторожевой таймер) - это программная функция, которая контролирует рабочее состояние устройства. Его цель — предотвратить проблемы, возникающие из-за ошибок сети/cвязи или самого устройства. Когда происходит Тайм-аут сторожевого таймера устройства, модуль сбрасывает все выходы в безопасное состояние для предотвращения любых ошибочных действий управляемой системы.

Для чтения статуса сторожевого таймера используется команда READ_WDT_STATUS:

В ответе после адреса устройства две шестнадцатиричные цифры, обозначающие статус таймера:

Бит 1:  0 - сторожевой таймер устройства отключен, 1 -  сторожевой таймер устройства включен

Бит 2: 0 -  тайм-аута не было, 1 -  произошел тайм-аут

Статус сторожевого таймера хранится в EEPROM и может быть сброшен только командой CLEAR_WDT_ALARM.

Команды GET_WDT_TIMER_ENABLE и SET_WDT_TIMER_ENABLE читают и устанавливают значение тайм-аута сторожевого таймера модуля.

Чтение значения тайм-аута:

В ответе после номера модуля следует 3 цифры:

1 цифра — Включен или выключен сторожевой таймер. В данном случае он выключен - 0.

2 и 3 цифры — значение таймаута в десятых долях от секунды. Например, 01 — значит, что тайм-аут 0.1 секунды, а FF – 25.5 секунд

Установка значения таймаута:

В ответе после номера модуля следуют 4 символа:

1 символ — номер команды - 3 

2 символ — включить/выключить таймер (0 - выключить)

3 и 4 символы — значение таймаута, которое необходимо установить (FA – переводим в 10СС — 250 → 25.0секунд)

Рекомендуемые товары