Text Size
Пятница 18 октября 2019

Введение в среду программирования XCPPro. Базовые понятия о протоколах передачи данных - RS-232, RS-485, а также программного протокола Modbus.

 В предыдущей лекции мы рассмотрели основные языки для программирования ПЛК, а также основные серии ПЛК фирмы Thinget.

Любой ПЛК основан на базе микроконтроллера (например, Atmel, Pic и т.д) которые «понимают» программу только в машинном коде. Соответственно нам необходима

какая-то среда (оболочка), которая бы переводила программу с МЭК языка в машинный код.  Также хотелось бы, что бы среда разработки позволяла производить отладку, работать напрямую с регистрами и т.д. Для контроллеров компании Thinget – это программа XСP Pro.

Начнем с начала, то есть с установки, которую можно скачать с сайта http://www.xinje.com/0/zcdw101.html.  Для работы XСP Pro необходимо установить библиотеку framwork v2.0 , которую также можно скачать с данного сайта. Установка в комментариях не требуется, так как все устанавливается автоматически. Вам необходимо лишь указать место, куда произведется установка (лучше что бы путь был С:\Program Files\.. ) и нажимать кнопку далее.

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

 1.1 Обобщенное описание интерфейса XCP Pro.

 

 

Области для меню, программы можно изменять по размеру, а также перемещать.

Сейчас мы рассмотрим наиболее необходимые пункты различных меню, необходимых для создания, отладки проекта и загрузки его в контроллер(более детально можно посмотреть в мануале к среде разработки XСP Pro).

1.2    Стандартная панель инструментов

New

Создать новый проект

 

Open

Открыть существующий проект

 

Save

Сохранить проект

 

Cut

Вырезать

 

Copy

Копировать

 

Paste

Вставить в указанное место

 

Search

Поиск инструкции или строки

 

Note

Открыть список комментариев

 

Printer

Распечатать текущий файл

 

 

 

 

 

1.3    Меню ПЛК

Download

Загрузить программу

 

Upload

Выгрузить программу на ПК

 

Run

Запуск программы

 

Stop

Остановить программу

 

Lock

Заблокировать программу

 

Unlock

Разблокировать программу

 

Lad Monitor

Контроль процесса работы лестничной диаграммы

 

Data Monitor

Позволяет просматривать состояние и работать со всеми регистрами ПЛК

 

Free Monitor

Позволяет просматривать состояние и работать с указанными программистом регистрами.

 

Config Serial

port

Настройка серийного порта связи ПК с программируемым контроллером

 

 

1.4 Меню инструкций языка LD (узел = = инструкция)

1

Вставить узел

11

Установить

 

2

Вставить строку

12

Выбрать инструкцию из списка

 

3

Удалить узел

13

Горизонтальная линия

 

4

Удалить строку

14

Удалит горизонт. линию

 

5

Нормально открытый контакт

15

Вертикальная линия

 

6

Нормально закр. контакт

16

Удалить вертикал. линию

 

7

Положительный перепад

17

Настройка ПИД регулятора

 

8

Негативный перепад

18

Настройка высокоскоростного выхода

 

9

Выход

19

Настройка высокоскоростного входа

 

10

Сброс

20

Настройка модуля G-BOX

 

 

1.5  Другое

Auto-adapt Col Width

Авто настройка  размеров поля программы

 

Zoom In

Увеличить размер блоков программы

 

Zoom Out

Уменьшить размер блоков программы

 

To Ladder

Отобразить программу на языке LD

 

To Instruction List

Отобразить программу на языке IL

 

Grammer Check

Проверить программу на грамматические ошибки

 

 

2. Главное меню

2.1 Меню «File»

New project

Создать новый проект

 

Open project

Открыть существующий проект

 

Close project

Закрыть открытый проект

 

Save project

Сохранить проект в папку, где он находится

 

Save project as

Сохранить проект в новое место

 

Exit

Закрыть программу

 

 

2.2 Меню «Edit»

 Все функции продублированы со стандартной панели инструментов.

 

2.3 Меню «Search/ repleace»

Search reg

Поиск регистра

 

Search step

Поиск шага

 

Replace

Заменить указанный участок

 

Go back

Вернутся на предыдущее место

 

Go forward

Перейти на следующее место

 

 

2.4 Меню «View».

Data monitor window

Открыть окно мониторинга регистров

 

Free monitor window

Открыть окно мониторинга указанных программистом регистров

 

Project window

Показать окно проекта

 

Instruction help window

Показать окно описания инструкций

 

Message window

Показать окно сообщений

 

Tool bar

Показать меню

 

Status bar

Показать меню состояний

 

User reg list

Показать список пользовательских элементов

 

Node comment list

Показать список коментариев

 

2.5 Меню «PLC setting»

PLC Serial port setting

Настройки портов ПЛК

 

Password setting

Установка пароля

 

BD setting

Настройка BD блока, подключенного к ПЛК

 

CAN setting

Настройки порта CAN сети

 

Module setting

Настройки блоков расширения

 

PLC Init value setting

Установка регистров, которые запишутся в ПЛК при загрузке программы

 

Hold mem setting

Проверка энергонезависимой памяти

 

 

2.6 Меню «Option»

Communication mode config

Настройка связей ПЛК

 

T-BOX device config

Настройка блока T-BOX

 

Func block config

Редактирование функциональных блоков

 

 3. Меню проекта и инструкций.

Как уже было сказано, данное меню содержит 2 вкладки «Instruction class» и «Project». Первая вкладка содержит список всех доступных инструкций для ПЛК, а вторая всю информацию по проекту — программу, настройки, функции, данные используемого контроллера. Пройдемся по второй вкладке сверху вниз:

1)     PLC1 –  щелкните правой кнопкой мышки, выпадет меню с помощью которого вы можете настроить связи с преобразователями протокола T-BOX, выбрать модель контроллера, добавить еще контроллеры в проект

2)     Code:

Ladder – переключение на язык LD, также здесь отображается список процедур, используемых в программе на языке LD.

Instruction List - переключение на язык инструкций.

Func Block – здесь содержится список функций, написанных на языке С.

Config Block – настройка блока расширения MSG, а также, «свободного протокола»

передачи данных.

Sequence Block - позволяет создавать блоки (функции) для работы с высокоскоростными входами/выходами, инверторами, работы с внешними устройствами по протоколу Modbus,  работающими параллельно основной программе, то есть в другом программном потоке.

3)     Comment Editor – отображает список комментариев

4)     Free Monitor, Data monitor – открывают соответственно окошки с мониторингом всех регистров и регистров, назначенных пользователем

5)     Set reg init value – список регистров, а также значений хранящихся в них, которые будут загружены в контроллер во время загрузки на него программы.

6)     PLC Config:

Password – пароль для зашиты программы от выгрузки с контроллера

Serial Port – настройка порта связи контроллера с ПК

BD — настройка платы расширения BD

CAN — настройка протокола передачи данных CAN

Save hold memory – список CMOS регистров (запитанных от батарейки)

Module – настройка модулей расширения

I\O – карты входов/выходов контроллера, а также настройка логики срабатывания входов (негативная и положительная)

7)     PLC Status:

CPU Detail – дает информацию о модели подключенного ПЛК, а также версию его прошивки

BD Details — информация о подключенном BD блоке

Expansion Details — информация о блоках расширения (максимум 7 штук)

Scan Cycle — скан цикл программы, то есть время выполнения всей программы (текущее, минимальное и максимальное в миллисекундах)

Clock Details — дата и время на часах контроллера

Error details информация об ошибках

8)     Record – автор может указать информацию о себе, комментарии к проекту.

 

 

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

Сейчас рассмотрим пример, как подключить контроллер к ПК, создать небольшую программу и загрузить ее на контроллер.

  1. Отключаем питание от контроллера (если он был запитан), соединяем ПЛК и ПК с помощью специального кабеля и снова запитываем контроллер. Если питание не отключить, появляется возможность спалить СОМ порт.
  2. Запускаем среду разработки XCP Pro.

3. Создаем новый проект File->New Project

 


В появившемся окошке указываем модель нашего контроллера (если контроллер подключен к ПК и между ними правильно настроена связь, в данном списке автоматически будет выбран подключенный контроллер, в моем случае — это XC3-60). Жмем ОК.

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

Напишем небольшую программу в 2 инструкции:

На поле, для написания программы щелкнем левой кнопкой мышки, затем в меню инструкций языка LD щелкнем по значку «нормально закрытого контакта» (либо нажмем F5, либо наберем с клавиатуры LD). Появится новая инструкция программы LD выделенная прямоугольником. Теперь нам необходимо передать параметр в эту инструкцию. Наберем с клавиатуры М8002. Получится следующее:

 

Нажимаем  ENTER для подтверждения. И так мы набрали первую инструкцию — но что она значит? LD — это нормально замкнутый контакт, то есть данная инструкция сработает тогда, когда её аргумент будет находится в значении true (1). Параметр М8002 — это внутренняя катушка (флаг, бит) контроллера, которая срабатывает один раз при запуске контроллера, после инициализации (проверки) всех входов \ выходов ПЛК на время одного скан цикла программы.

Условие есть, теперь необходимо что-нибудь сделать при выполнении этого условия. После того, как мы нажали ENTER, в поле программ штрихованный прямоугольник переместился правее от веденной нами инструкции. В меню инструкций выберем инструкцию SET (или наберем с клавиатуры) и  передадим ей в качестве параметра Y0 — первый  выход контроллера, нажмем ENTER.

 

 

Инструкция SET включает переданную ей катушку до тех пор, пока не исчезнет питание, или к этой же катушке не будет применена инструкция RST.

Первая программа готова.

Примечание!!! Запомните, что при написании программы на языке LD слева всегда стоит условие, а в правой части то, что необходимо выполнить при выполнении заданного условия. Нарушение данного правила приведет к ошибке.

  1. Теперь необходимо убедится в наличии связи между ПК и ПЛК. Для этого в меню ПЛК нажмем на кнопку Config Serial Port


Появилось окошко настройки порта связи. В нижнем левом углу отображается статус соединения. В моем случае все удачно — Connect To PLC Succeeded. Если у вас надпись типа Connect Error или This Port not Exist (указанного порта не существует на данном ПК), необходимо правильно указать порт ПК, к которому подключен ПЛК. Насчет настроек порта, то они следующие:

1)     скорость передачи — 19200

2)     Четность — четное (parity)

Если все в порядке — жмем кнопку ОК.

  1. Осталось только загрузить программу на контроллер. Для этого в меню ПЛК нажмем на кнопку Download, а при окончании загрузки кнопку Run в том же меню.
  2. На контроллере загорится светодиод, сообщающий о том, что выход контроллера Y0 включен.

 

Протоколы передачи данных

В этой лекции мы, в общем, рассмотрим 2 физический и один программный протоколы, с которыми работают контроллеры фирмы Thinget.

 

RS232 - Описание

 

RS-232 — интерфейс передачи информации между двумя устройствами на расстоянии до 15 метров. Информация передается по проводам с уровнями сигналов, отличающимися от стандартных 5 В, для обеспечения большей устойчивости к помехам. Логическому "0" соответствует положительное напряжение (от +5 до +15 В для передатчика), а логической "1" отрицательное (от -5 до -15 В для передатчика). Приемник воспринимает сигналы от +3 до +25 В для логического "0", и от -3 до -25 В для логической "1". Асинхронная передача данных осуществляется с установленной скоростью при синхронизации уровнем сигнала стартового импульса.

Назначение

Интерфейс RS-232-C был разработан для простого применения, однозначно определяемого по его названию: «Интерфейс между терминальным оборудованием и связным оборудованием с обменом по последовательному двоичному коду». Чаще всего используется в промышленном и узкоспециальном оборудовании, встраиваемых устройствах.

Принцип работы

По структуре это обычный асинхронный последовательный протокол, то есть передающая сторона по очереди выдает в линию 0 и 1, а принимающая отслеживает их и запоминает.

Данные передаются пакетами по одному байту (8 бит).

Вначале передаётся стартовый бит, противоположной полярности состоянию незанятой (idle) линии, после чего передаётся непосредственно кадр полезной информации, от 5 до 8-ми бит.

Увидев стартовый бит, приемник выжидает интервал T1 и считывает первый бит, потом через интервалы T2 считывает остальные информационные биты. Последний бит — стоповый бит (состояние незанятой линии), говорящий о том, что передача завершена. Возможно 1, 1.5, 2 стоповых бита.

В конце байта, перед стоп битом, может передаваться бит четности (parity bit) для контроля качества передачи. Он позволяет выявить ошибку в нечетное число бит (используется, так как наиболее вероятна ошибка в 1 бит).

RS485

В стандарте RS-485 для передачи и приёма данных часто используется единственная витая пара проводов. Передача данных осуществляется с помощью дифференциальных сигналов. По одному проводу (условно А) идет оригинальный сигнал, а по-другому (условно В)- его инверсная копия Другими словами, если на одном проводе "1", то на другом "0" и наоборот. Таким образом, между проводниками витой пары всегда есть разность потенциалов: при "1" она положительна, при "0" -отрицательна.

Электрические и временные характеристики интерфейса RS-485

·     32 приёмопередатчика при многоточечной конфигурации сети (на одном сегменте, максимальная длина линии в пределах одного сегмента сети: 1200 метров).

·     Только один передатчик активный.

·     Максимальное количество узлов в сети — 250 с учётом магистральных усилителей.

·     Характеристика скорость обмена/длина линии связи (зависимость экспоненциальная):

·     62,5 кбит/с 1200 м (одна витая пара)

·     375 кбит/с 300 м (одна витая пара)

·     500 кбит/с

·     1000 кбит/с

·     2400 кбит/с 100 м (две витых пары)

·     10000 кбит/с 10 м

Примечание: Скорости обмена 62,5 кбит/с, 375 кбит/с, 2400 кбит/с оговорены стандартом RS-485. На скоростях обмена свыше 500 кбит/с рекомендуется использовать экранированные витые пары.

·     Тип приёмопередатчиков — дифференциальный, потенциальный. Изменение входных и выходных напряжений на линиях A и B: Ua (Ub) от −7В до +12В (+7В).

·     Требования, предъявляемые к выходному каскаду: — выходной каскад представляет собой источник напряжения с малым выходным сопротивлением, |Uвых|=1,5:5,0В (не <1,5В и не >6,0В);

·     состояние логической «1»: Ua больше Ub (гистерезис 200мВ) — MARK, OFF;

·     состояние логического «0»: Ua меньше Ub (гистерезис 200мВ) — SPACE, ON;

·     выходной каскад должен выдерживать режим короткого замыкания, иметь максимальный выходной ток 250мА, скорость нарастания выходного сигнала 1,2В/мкс и схему ограничения выходной мощности.

·     Требования, предъявляемые к входному каскаду: — входной каскад представляет собой дифференциальный вход с высоким входным сопротивлением и пороговой характеристикой от −200мВ до +200мВ;

·     допустимый диапазон входных напряжений Uag (Ubg) относительно земли (GND) от −7В до +12В;

·     входной сигнал представлен дифференциальным напряжением (Ui+0,2В) и более;

·     уровни состояния приёмника входного каскада — см. состояния передатчика выходного каскада.

Протокол Modbus

Modbus был разработан компанией Modicon(в настоящее время принадлежит Schneider Electric) для использования в её контроллерах с программируемой логикой. Впервые спецификация протокола была опубликована в 1979 году. Это был открытый стандарт, описывающий формат сообщений и способы их передачи в сети состоящей из различных электронных устройств. Первоначально контроллеры MODICON использовали последовательный интерфейс RS-232.[1] Позднее стал применяться интерфейс RS-485, так как он обеспечивает более высокую надёжность, позволяет использовать более длинные линии связи и подключать к одной линии несколько устройств.

Многие производители электронного оборудования поддержали стандарт, на рынке появились сотни использующих его изделий. В настоящее время развитием Modbus занимается некоммерческая организация Modbus-IDA, созданная производителями и пользователями электронных приборов[2].

Modbus относится к протоколам прикладного уровня сетевой модели OSI.[3] Контроллеры на шине Modbus взаимодействуют, используя клиент-серверную модель, основанную на транзакциях, состоящих из запроса и ответа.

Обычно в сети есть только один клиент, так называемое, «главное» (англ. master) устройство, и несколько серверов — «подчиненных» (slaves) устройств. Главное устройство инициирует транзакции (передаёт запросы). Подчиненные устройства передают запрашиваемые главным устройством данные, или производят запрашиваемые действия. Главный может адресоваться индивидуально к подчиненному или инициировать передачу широковещательного сообщения для всех подчиненных устройств. Подчиненное устройство формирует сообщение и возвращает его в ответ на запрос, адресованный именно ему. При получении широковещательного запроса ответное сообщение не формируется.

Спецификация Modbus описывает структуру запросов и ответов. Их основа — элементарный пакет протокола, так называемый PDU (Protocol Data Unit). Структура PDU не зависит от типа линии связи и включает в себя код функции и поле данных. Код функции кодируется однобайтовым полем и может принимать значения в диапазоне 1…127. Диапазон значений 128…255 зарезервирован для кодов ошибок. Поле данных может быть переменной длины. Размер пакета PDU ограничен 253 байтами.

Modbus PDU

номер функции

данные

1 байт

N < 253 (байт)

 


Для передачи пакета по физическим линиям связи PDU помещается в другой пакет, содержащий дополнительные поля. Этот пакет носит название ADU (Application Data Unit). Формат ADU зависит от типа линии связи.

 

Существуют три основных реализации протокола Modbus, две для передачи данных по последовательным линиям связи, как медным EIA/TIA-232-E (RS-232), EIA-422, EIA/TIA-485-A (RS-485), так и оптическим и радио:

·     Modbus ASCII — для обмена используются только ASCII символы. Для проверки целостности используется алгоритм en:Longitudinal redundancy check. Сообщение разделяется на столбцы с помощью символа «:» и заканчивается символами новой строки CR/LF.

·     Modbus RTU

и для передачи данных по сетям Ethernet поверх TCP/IP:

·     Modbus TCP.

Общая структура ADU следующая (в зависимости от реализации, некоторые из полей могут отсутствовать):

адрес ведомого устройства

код функции

данные

блок обнаружения ошибок

где

·     адрес ведомого устройства — адрес подчинённого устройства, к которому адресован запрос. Ведомые устройства отвечают только на запросы, поступившие в их адрес. Ответ также начинается с адреса отвечающего ведомого устройства, который может изменяться от 1 до 247. Адрес 0 используется для широковещательной передачи, его распознаёт каждое устройство, адреса в диапазоне 248…255 — зарезервированы;

·     номер функции — это следующее однобайтное поле кадра. Оно говорит ведомому устройству, какие данные или выполнение какого действия требует от него ведущее устройство;

·     данные — поле содержит информацию, необходимую ведомому устройству для выполнения заданной мастером функции или содержит данные, передаваемые ведомым устройством в ответ на запрос ведущего. Длина и формат поля зависит от номера функции;

·     блок обнаружения ошибок — контрольная сумма для проверки отсутствия ошибок в кадре.

Максимальный размер ADU для последовательных сетей RS232/RS485 — 256 байт, для сетей TCP — 260 байт.

Для Modbus TCP ADU выглядит следующим образом:

ид транзакции

ид протокола

длина пакета

адрес ведомого устройства

код функции

данные


где

·     ид транзакции — два байта, обычно нули

·     ид протокола — два байта, нули

·     длина пакета — два байта, старший затем младший, длина следующей за этим полем части пакета

·     адрес ведомого устройства — адрес подчинённого устройства, к которому адресован запрос. Обычно игнорируется, если соединение установлено с конкретным устройством. Может использоваться, если соединение установлено с бриджом, который выводит нас, например, в сеть RS485.

Поле контрольной суммы в Modbus TCP отсутствует.

Более детальную информацию можно получить на сайте: http://ru.wikipedia.org/wiki/ModBus.

 

 

Программист

Учебник