Обмен по протоколу S-BUS

Драйвер предназначен для связи с контроллерами по протоколу S-BUS DataMode через последовательный порт. Протокол S-BUS разработан фирмой SAIA-burgess и поддерживается всеми контроллерами этой фирмы.

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

Кроме атрибутов, общих для всех источников/приемников (см. Редакторы источников (приемников) , а также Шаблоны каналов обмена ), в редакторе шаблона канала обмена задаются следующие атрибуты:

   Порт – номер последовательного порта обмена (0 соответствует COM1);

   Адрес - адрес контроллера в сети s-bus (0..255). 255 означает широковещательную рассылку и может применяться с некоторыми командами;

   Аргумент - адрес регистра, счетчика, таймера, дискретного входа, дискретного выхода или процессора (для контроллеров с несколькими процессорами);

   Команда - команда протокола.

Список команд

 

 

Название в спецификации протокола

Назначение настройки АРГУМЕНТ

Описание

RR_int

Read Register

адрес регистра

Чтение регистра в формате целого со знаком.

RR_float

Read Register

адрес регистра

Чтение регистра в формате c плавающей точкой.

RC

Read Counter

адрес счетчика

Чтение счетчика.

RT

Read Timer

адрес таймера

Чтение таймера.

RF

Read Flag

адрес флага

Чтение 16-ти идущих подряд флагов. Канал должен иметь представление HEX.

RI

Read Input

адрес дискретного входа

Чтение 16-ти идущих подряд дискретных входов. Канал должен иметь представление HEX.

RO

Read Output

адрес дискретного выхода

Чтение 16-ти идущих подряд дискретных выходов. Канал должен иметь представление HEX.

RD_lo

Read Display Register

не используется

Чтение младших 16 бит регистра дисплея (Display Register). Канал должен иметь представление HEX.

RD_hi

Read Display Register

не используется

Чтение старших 16 бит регистра дисплея (Display Register). Канал должен иметь представление HEX.

RS

Read PCD Status

0..6 – номер ЦПУ,

7 – свой ЦПУ

Чтение состояния контроллера. Канал получает значение ASCII кода одного из следующих символов:

'S'(83), 'H'(72), 'R'(82), 'C'(67), 'D'(68).

‘S’ - программа в контроллере остановлена.

‘R’ – программа в контроллере выполняется.

WR_int

Write Register

адрес регистра

Запись регистра в формате целого со знаком.

WR_float

Write Register

адрес регистра

Запись регистра в формате c плавающей точкой.

WC

Write Counter

адрес счетчика

Запись счетчика.

WT

Write Timer

адрес таймера

Запись таймера.

WF

Write  Flag

адрес флага

Запись 16-ти идущих подряд флагов. Канал должен иметь представление HEX.

WO

Write  Output

адрес дискретного выхода

Запись 16-ти идущих подряд дискретных выходов. Канал должен иметь представление HEX.

WK

Write Real Time Clock

не используется

При записи любого значения в этот канал происходит синхронизация часов контроллера с часами компьютера..

CA

Clear All

не используется

При записи любого значения в этот канал происходит обнуление всех регистров, счетчиков, таймеров, флагов, дискретных выходов

CF

Clear Flags

не используется

При записи любого значения в этот канал происходит обнуление всех флагов

CO

Clear Outputs

не используется

При записи любого значения в этот канал происходит обнуление всех дискретных выходов

CR

Clear Registers

не используется

При записи любого значения в этот канал происходит обнуление всех регистров

CT

Clear Timers

не используется

При записи любого значения в этот канал происходит обнуление всех таймеров

SW

Restart Warm

0..5 – номер ЦПУ,

7 – свой ЦПУ

При записи любого значения в этот канал происходит горячий перезапуск контроллера

SC

Restart Cold

0..5 – номер ЦПУ,

7 – свой ЦПУ

При записи любого значения в этот канал происходит холодный перезапуск контроллера

SP

Stop Procedure

0..5 – номер ЦПУ,

7 – свой ЦПУ,

8 – все ЦПУ

При записи любого значения в этот канал происходит остановка выполнения программы в контроллере

GP

Run Procedure

0..5 – номер ЦПУ,

7 – свой ЦПУ,

8 – все ЦПУ

При записи любого значения в этот канал происходит запуск выполнения программы в контроллере

 

Замечание. Для всех контроллеров, оснащенных единственным ЦПУ (это все контроллеры кроме PCD6), настройку АРГУМЕНТ тех каналов, где она означает номер ЦПУ, рекомендуется установить в 0.

Протокол S-BUS предусматривает два формата для чисел – 32-битное целое и 32-битное с плавающей точкой. Протокол S-BUS ограничивает числа с плавающей точкой диапазоном  (-9.22337177 *1018, 9.22337177 * 1018). По этой причине не рекомендуется передавать из Trace Mode в контроллеры числа с плавающей точкой, выходящие за этот диапазон, поскольку это может приводить к ошибочным значениям в регистрах контроллера.

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

;====================================

;0-все сообщения

;1-только предупреждения и ошибки

;2-только ошибки

level=0

;====================================

;максимальный размер файла лога в Мб

max_size=50

;====================================

;вкл/выкл лог

enabled=true

Строки, начинающиеся с точки с запятой (;), являются комментариями и необязательны. Назначение остальных строк ясно из комментариев.

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

Протокол работы заносится в файл t11.log.