Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5_Обмен по порту RS-485.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
316.93 Кб
Скачать

2. Свободно программируемый обмен данными

Контроллер S7-200 можно соединить с различными устройствами через сеть RS-485. Например, вы можете послать сообщение на принтер, на устройство для считывания штрихового кода или на электронные весы.

Вы можете написать программу для поддержки протокола, используемого другим устройством. Для выбора протокола обмена предназначена ячейка памяти SMB30. Ниже приведем назначение битов памяти SMB30, для случая свободно программируемого протокола обмена.

mm: Выбор протокола

00 = протокол интерфейса точка-точка (PPI/ Slave-режим)

01 =протокол свободно программируемого обмена данными

10 = PPI/ Master - режим

11 =резерв (по умолчанию PPI/ Slave режим).

Примечание: Когда вы выбираете код mm = 10, S7–200 становится master-устройством в сети и допускает выполнение команд NETR и NETW. В режимах PPI биты с 2-го по 7 игнорируются.

bbb: скорость передачи в режиме свободно программируемого обмена данными

000 = 38 400 Бод 100 = 2 400 Бод

001 = 19 200 Бод 101 = 1 200 Бод

010 = 9 600 Бод 110 = 115 200 Бод

011 = 4 800 Бод 111 = 57 600 Бод

d: Количество битов данных на символ

0 - 8 битов на символ

1 - 7 битов на символ

pp: выбор контроля четности

00 = нет контроля четности 10 = контроль по нечетности

01 = контроль по четности 11 = контроль по нечетности

Свободно программируемый обмен данными возможен только тогда, когда S7–200 находится в режиме RUN. Режим свободно программируемого обмена данными блокируется, и восстанавливается обычная связь, когда S7–200 находится в состоянии STOP. Тем самым, контроллеру можно загружать другую управляющую программу.

Бит SM0.7 отражает положение переключателя режимов работы котроллера:

SM0.7 = 0 - переключатель находится в положении TERM;

SM0.7 = 1 - переключатель режимов работы находится в положении RUN.

К оманды передачи и приема

Команда передачи XMT используется в режиме свободно программируемого обмена данными для передачи данных через СОМ - порт.

Бит SM4.5 = 1 – показывает, что нет передачи по порту 0. Используется для определения, является ли передатчик занятым. Используйте этот бит для предотвращения выполнения двух XMT команд одновременно на одном и том же порте. Если две XMT команды выполняются одновременно на одном и том же порте, происходит ошибка.

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

К оманда приема RCV используется для приема сообщения.

Сообщения, получаемые через указанный порт PORT, сохраняются в буфере данных TBL. Первая запись в буфере данных указывает количество принятых байтов.

Сбойные состояния, устанавливающие ENO = 0

■ 0009 (одновременная передача и прием через порт 0)

■ Ошибка параметра приема устанавливает SM86.6

■ S7–200 CPU не находится в режиме свободно программируемого обмена данными.

Передача данных

Команда передачи дает возможность передать буфер, состоящий из одного или нескольких символов (не более 255). На рис. 6–9 показан формат буфера передачи.

После того как передан последний символ буфера, S7–200 генерирует прерывание (прерывающее событие 9 для порта 0), если событию «Передача завершена» поставлена в соответствие программа обработки прерывания.

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

Команда передачи может быть использована для генерирования условия паузы путем установки количества символов в ноль, а затем исполнения команды передачи. Такая команда генерирует условие паузы в строке для передачи 16 битов с текущей скоростью передачи. Передача паузы обрабатывается так же, как передача любого другого сообщения, причем при завершении передачи паузы генерируется прерывание, а SM4.5 отображает текущее состояние передачи.

Прием данных

Команда приема дает возможность принять буфер, состоящий из одного или нескольких символов (не более 255). На рис. 6–10 показан формат буфера приема.

После того как принят последний символ буфера, генерируется прерывание (прерывающее событие 23 для порта 0, если событию «Прием сообщения завершен» поставлена в соответствие программа обработки прерывания).

Вы можете принимать сообщения и без использования прерываний, контролируя SMB86. Этот байт не равен нулю, если прием не активен или завершен. Он равен нулю, когда происходит прием.

SMB86 - Байт состояния приема сообщения

n = 1 - Функция приема сообщений завершена: пользователь дал команду на деактивизацию.

r = 1 - Функция приема сообщений завершена: ошибка во входном параметре или отсутствует условие начала или конца

e = 1 - Принят символ конца

t = 1 - Функция приема сообщений завершена: истекло время

c = 1 - Функция приема сообщений завершена: достигнуто максимальное количество символов

p = 1 - Функция приема сообщений завершена: ошибка четности

SMB87 - Байт управления приемом сообщения

en = 0 - функция приема сообщений заблокирована.

1 - функция приема сообщений разблокирована.

Бит разблокировки/блокировки приема сообщений проверяется при каждом исполнении команды RCV.

Sc = 0 - игнорировать SMB88 (Символ начала сообщения).

1 - использовать значение SMB88 для обнаружения начала сообщения.

ec = 0 = игнорировать SMB89 (Символ конца сообщения).

1 = использовать значение SMB89 для обнаружения конца сообщения.

il = 0 - игнорировать SMW90 (Время бездействия линии в миллисекундах).

1 - использовать значение SMW90 для обнаружения бездействия линии

c/m = 0 - таймер измеряет время между символами

1 = таймер измеряет время сообщения.

tmr = 0 - игнорировать SMW92 (Значение контроля времени при измерении времени между символами).

1 - завершить прием, если превышен интервал времени, указанный в SMW92.

bk = 0 - игнорировать условия паузы

1 - использовать условие паузы как начало обнаружения сообщения

SMB88 - Символ начала сообщения.

SMB89 - Символ конца сообщения.

SMW90 - Время бездействия линии в миллисекундах. Первый символ, принятый по истечении времени бездействия линии, является началом нового сообщения.

SMW92 - Значение контроля времени при измерении времени между символами и времени сообщения в миллисекундах. Если этот интервал времени истек, то прием сообщения завершается.

SMB94 - Максимальное количество символов, которое должно быть принято (от 1 до 255 байтов). Этот диапазон должен быть установлен на ожидаемый максимальный размер буфера, даже если завершение сообщения с помощью подсчета символов не используется.

Прием данных, управляемый прерываниями

Для достижения полной гибкости в поддержке протоколов вы также можете принимать данные под управлением прерываний. Каждый принимаемый символ генерирует прерывание.

Принятый символ помещается в SMB2, а результат контроля четности (если активизирован) помещается в SM3.0 непосредственно перед исполнением программы обработки прерывания, назначенной событию «Символ принят».

SMB2 – это буфер для принятого символа при свободно программируемом обмене данными. Каждый символ, принятый в режиме свободно программируемого обмена данными, помещается по этому адресу для облегчения доступа к нему из программы пользователя.

SMB3 используется для режима свободно программируемого обмена данными и содержит бит ошибки четности, который устанавливается, когда в принятом символе обнаруживается ошибка четности. Все остальные биты этого байта зарезервированы. Используйте этот бит для отклонения сообщения или для генерирования отрицательного квитирования этого сообщения.

Если управление с помощью прерываний используется при высоких скоростях передачи (от 38,4 до 115,2 Кбод), то время между прерываниями очень мало. Например, прерывание для скорости 38,4 Кбод составляет 260 микросекунд, для скорости 57,6 Кбод − 173 микросекунды, а для 115,2 Кбод − 86 микросекунд. Во избежание потери символов обеспечьте краткость программ обработки прерываний или используйте команду приема.

Пример. Эта программа принимает строку символов, пока не будет получен символ перевода строки. Затем сообщение возвращается отправителю.

Основная программа в первом цикле:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]