
- •1. Обмен по протоколу ppi
- •2. Свободно программируемый обмен данными
- •1. Инициализировать свободно программируемый обмен данными:
- •2. Инициализировать управляющий байт для приема сообщений:
- •4. Установить время ожидания бездействия линии равным 5 мс.
- •1. Int_0 - прием сообщения завершен
- •Int_2 - при завершении передачи:
Команды для обмена данными по порту RS-485
CPU 222 имеет один порт RS-485 (порт 0) для обмена с удаленными устройствами. Для управления протоколом обмена по сети предназначена ячейка памяти SMB30. Биты 0 и 1 этой ячейки памяти определяют режим обмена по сети:
00 = протокол интерфейса точка-точка (PPI/ Slave-режим)
01 =протокол свободно программируемого обмена данными
10 = PPI/ Master - режим
11 =резерв (по умолчанию PPI/ Slave режим).
1. Обмен по протоколу ppi
В случае протокола PPI (значения 00 и 10) биты с 2-го по 7 памяти SMB30 игнорируются. В случае 10, S7–200 становится master-устройством в сети и допускает выполнение команд NETR и NETW.
1
.
Команда чтения из сети NETR инициирует
СОМ-порт на операцию чтения данных из
удаленного устройства через указанный
порт PORT.
2. Команда записи через сеть NETW инициирует СОМ-порт на операцию записи данных в удаленное устройство через указанный порт PORT.
Д
ля
СРU 222
значение входа PORT
равно 0. На вход TBL
может быть подключен ячейка памяти
размером байт, который показывает на
начальный адрес пакета передачи
данных. Ниже приведена структура
этого пакета.
D - Операция выполнена:
0 = не выполн. 1 = выполнена
A - Операция поставлена в очередь:
0 = не активна 1 = активна
E - Операция содержит ошибку:
0 = нет ошибки 1 = ошибка
Как видно, команда NETR и может прочитать до 16 байтов информации из удаленной станции, а команда NETW может записать до 16 байтов информации в удаленную станцию.
Поле Код ошибки содержит причину ошибки и может принимать следующие значения:
0 - Нет ошибки.
1- Ошибка истечения времени ожидания: удаленная станция не отвечает.
2 - Ошибка приема: ошибка четности, кадрирования или контрольной суммы в ответе.
3 - Ошибка с переходом в автономный режим: конфликт, вызванный двойным адресом станции или неисправностью аппаратуры.
4 - Ошибка переполнения очереди: активизировано более 8 команд NETR/NETW.
5 - Нарушение протокола: попытка выполнить команду NETR или NETW, без разблокировки привилегированного режима PPI в SMB30 или SMB130.
6 - Недопустимый параметр: параметр TBL содержит недопустимое или ошибочное значение.
7 - Нет ресурса: удаленная станция занята (Идет процесс загрузки в станцию или из станции.)
8- Ошибка 7-го уровня: нарушение протокола приложения
9 - Ошибка сообщения: неверный адрес данных или неправильная длина данных.
В программе можно иметь любое количество команд NETR /NETW, но одновременно можно активизировать не более восьми команд NETR и NETW. Например, в данном S7-200 в одно и то же время у вас могут активными четыре NETR и четыре NETW или два NETR и шесть NETW.
Пример.
Рассматривается производственная линия, где стаканчики заполняются маслом и передаются одной из четырех упаковочных машин. Упаковочная машина пакует по восемь стаканчиков с маслом в одну картонную коробку.
Направляющее устройство управляет потоком стаканчиков с маслом, направляя их к той или иной упаковочной машине. Для управления упаковочными машинами используются четыре модуля S7–200, а для управления направляющим устройством используется один S7–200, оборудованный интерфейсом оператора TD 200.
Ниже показан принимающий буфер VB200 и передающий буфер VB300 для доступа к данным в станции 2. S7–200 использует команду NETR для регулярного чтения управляющей информации и информации о состоянии из каждой упаковочной машины.
Каждый раз, когда упаковочная машина упаковывает 100 коробок, направляющее устройство замечает это и с помощью команды NETW передает сообщение для сброса слова состояния.
Ниже приведем реализацию этой программы для направляющего устройства (станция 8).
Сегмент 1
1. В первом цикле установим SB30 = 2 – контроллер работает в режиме PPI Master
2. Очистим все принимающие и передающие буфера. Диапазон ячеек памяти:
68 * 2 = 136. VB200 + 136 = VB336
Команда заполнения памяти FILL записывает N последовательных слов, начиная с адреса OUT, значением слова, содержащегося по адресу IN.
Сегмент 2
Если бит завершения команды NETR V200.7 установлен и 100 коробок упаковано:
1. Загрузить адрес станции упаковочной машины №1.
2. Загрузить указатель на данные в удаленной станции.
3. Загрузить длину данных, подлежащих передаче.
4. Загрузить данные для передачи, тем самым сбросить количество упакованных коробок на рабочей станции 2.
V
B301
= 2 -
адрес удаленной
станции
VD302 = &VB100 -
указатель на данные в удаленной станции.
VB306 = 2 -
длина данных, подлежащих передаче
VW307 = 0 -
данные для передачи
Передача данных по порту 0.
VB300 – начальный адрес передаваемых данных
Сегмент 3
Если бит завершения команды NETR установлен, загрузить управляющие данные упаковочной машины №1.
Для принятых данных V200.7
= 1 – завершение команды принятия.
VB207 содержит управляющее слово принятых данных из удаленной станции. Это слово сохраняем в VB400.
Сегмент 4
Если цикл не первый и нет ошибок:
1. Загрузить адрес станции упаковочной машины №1.
2. Загрузить указатель на данные в удаленной станции.
3. Загрузить длину данных, подлежащих приему.
4. Прочитать управляющую информацию и данные о состоянии упаковочной машины №1.
V200.6 = 0 – операция приема не активна
V200.5 = 0 – операция не содержит ошибку
VB201 = 2 – адрес удаленной станции
VD202 = &VB100 – адрес передаваемых данных
VB206 = 3 – длина данных
NETR VB200, 0 – считывать данные через RS-485 из упаковочной машины № 1.