Задача: Master + Slave как расширитель входов-выходов

Top  Previous  Next

 

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

 

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

Создание проекта для контроллера, выступающего в роли расширителя (slave)
Организация передачи данных от аналоговых  и дискретных входов в Modbus
Организация передачи данных из Modbus к выходам
Сохранение информационного файла на диск
Создание проекта для контроллера, которому требуется расширитель (master)
Загрузка сохранённого информационного файла с диска

 

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

 

Терминология:

"Ведущий контроллер", он же "Master", он же "Мастер" - устройство, контролирующее работу сети.  Именно это устройство инициирует обмен данными в сети и контролирует порядок обмена между контроллерами
"Ведомый контроллер", он же "Slave", он же "Слейв" - устройство, выступающее пассивным абонентом сети.  Это устройство никогда не инициирует обмен данными, единственное что оно может и имеет право сделать - ответить Мастеру на команды чтения или записи данных
"Запрос" - команды чтения или записи, поступающие к Слейвам от Мастера
"Ответ" - ответы Слейва на Запросы
"Обмен данными" - процесс обмена Мастера и Слейва Запросами и Ответами

 

 

Итак, рассмотрим пример:

Ведущий контроллер:        SMH2010C-xxx2 (RS485+RS485) или

                 SMH2010C-xxx3 (RS232+RS485)

Ведомый контроллер:        SMH2010C любой модификации

 

Создаём проект для ведомого контроллера (slave):

1)Создаём новый проект, выбираем и записываем адрес контроллера в сети (по умолчанию '0', если контроллеров в сети несколько (не считая мастера), то у каждого должен быть свой уникальный адрес, например '1', '2','3' и т.д. ), выбираем скорость работы порта, максимальная скорость ограничена дальностью линии связи и её качеством.  Например, для витой пары на 1000 метров это 4800 или 2400, связь на большей скорости может быть неустойчива.

 

 

 

 

 

2)Создаём проект, в который выставляем все аппаратные входы и выходы, соединяя их с программными входами и выходами через блоки.  На рисунке для упрощения взяты два дискретных входа, два дискретных выхода, два аналоговых входа и два аналоговых выхода.

Промежуточные блоки "OR" и "OR(16)" выполняют роль буферов в памяти контроллера.  Вместо конкретно этих блоков можно использовать любые другие:  мультиплексоры, математику и пр.  Выбор блоков "OR" и "OR(16)" обусловлен тем, что они занимают минимальный объём памяти контроллера и выполняются максимально быстро.

 

 

3)Программные входы и выходы называем по своему усмотрению.

 

 

4)Устанавливаем тип компоновки: рабочая, создаём файл карты памяти и затем загружаем проект в контроллер.

 

 

 

 

Создаём проект для ведущего контроллера (master):

1)Создаём новый проект или открываем существующий, скорость его порта и адрес в сети могут быть любые, т.к. не оказывают никакого влияния на обмен данными с ведомым(ведомыми) контроллером(контроллерами или устройствами).
2)Подключаем карту памяти, созданную в шаге 4 на доступный порт.  У ведущего контроллера должно быть 2 порта, через один из них мы загружаем программу, через второй контроллер опрашивает ведомые устройства и контроллеры.  В нашем примере мы загружаем через COM2, соответственно COM1 доступен для использования в нужном нам качестве.
·щёлкаем правой кнопкой мыши на порту.

 

 

·выбираем 'Создать на основе существующей карты памяти'.

 

 

·нажимаем 'Обзор...' и выбираем карту памяти.

 

 

·нажимаем 'Создать', даём произвольное имя ведомому контроллеру и указываем его адрес в сети (в нашем случае '1').

 

 

·щёлкнув правой кнопкой мыши на подключенном устройстве (контроллере) мы можем посмотреть его карту памяти.

 

 

·карта памяти подключенного контроллера.

 

 

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

 

 

4)Загружаем программу в ведущий контроллер и соединяем порты контроллеров между собой (клеммы "А", "С" и "Е").