Последовательность действий, необходимых для осуществления задачи:
• | Создание проекта для контроллера, выступающего в роли расширителя (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) | Загружаем программу в ведущий контроллер и соединяем порты контроллеров между собой (клеммы "А", "С" и "Е"). |
|