Драйвер предназначен для связи с контроллерами по протоколу 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.