Список

SlickEdit
IAR-AVR
MT-50x
avr_nullptr
empty4
empty5

Быстрый ввод в работу с панелями MT от Weintek


Словарь:
HMI - Human Machine Inteface. Интерфейс между машиной и человек, то есть панель MT.
PLC - Programmable Logic Controller. Программируемый логический контроллер, то есть либо готовые Siemens или Omron, либо ваш МК !

Для начала требуется скачать EasyBuilder
Создать новый проект File->New по примеру


Панель в режиме Modbus-Master

Настроить Edit->System parameters по примеру

Где:
PLC type: = ModBus RTU <add0_Begin>; Панель будет в режиме мастера, и опраштвать будет PLC
PLC Station: = 1; Modbus-номер PLC, у которой будет запрашиваться значения регистров (должен быть 1 для нашего примера)

Кликнуть Parts->Numeric Data, настроить по рисунку и разместить в любой части дисплея

Где:
Device type: = 4x; Указывает, что это Holding-регистр и его значение лежит на PLC-слейве, по адресу Device address.


Подключить кабель для прошивки ( обычно кабель специфичный и идет в комплекте, одним концом с надписью PC в свободный COM-порт компа, другим концом с надписью HMI в разъем PC-RS232/PLC-RS485 панели.
Подать питание +24 на панель, и убедиться что горят индикаторы CPU и PWR
Запустить EasyManager.exe где установлен EasyBuilder, и проверить, что номер COM-порта соответствует, реальному подключению. Далее, в EasyBuilder выполнить File->Save, Tools->Compile, Tools->Download, или же по панели инструментов


По завершению прошивки, должно появиться окно с надписью Mission complete.
В EasyManager.exe кликнуть Jump to Application
Итак, теперь панель MT506 имеем в качестве ModBus-master на интерфейсе RS-232, который периодически (мигает индикатор COM) запрашивает один регистр (посылка 01 03 00 00 00 01 84 0A )
Так как слейва нет, то на дисплее будет отображено PLC not response.
Теперь можно подключить панель к компьютеру, для этого берется провод со следующей распайкой DB-9F-pin2 to DB-9M-pin2, DB-9F-pin3 to DB-9M-pin3, DB-9F-pin5 to DB-9M-pin5 (то есть фактически удлинитель ). Запускаем COM Port Toolkit v2.32, диалог сообщений->Сообщение №1 и вписать "01 03 02 00 7B F8 67 0D" (это будет ответ на запрос первого регистра, которому будет присвоено число 123. )
Если не видите числа 123 на дисплее панели, значит что-то делаете не так. Но вот рабочий проект.

Панель в режиме Modbus-Slave

Изменить в Edit->System parameters тип PLC на ModBus RTU Server по примеру

Где:
PLC type: = ModBus RTU Server; Панель будет в режиме слейва, а PLC в режиме мастера
HMI Station: = 1; Modbus-номер панели


Кликнуть на размещенный элемент Parts->Numeric Data, настроить по рисунку и разместить в любой части дисплея

Где:
Device type: = LW; Указывает, что это Holding-регистр и его значение лежит в локальной памяти панели, по адресу Device address.


Далее, сохранить, откомпилить, залить, запустить
(Кстати, чтобы каждый раз не лазить в EasyManager.exe чтобы кликать Jump to Application, можно поставить галочку Option->Window Property->Jump to application mode when download done=true, и чтобы не кликать "сохранить, откомпилить, залить" поставить галочку в том же окне Automatically save and compile when downloading or simualting и нажать всего лишь "Downloading" для запуска последовательности всех команд. Так же полезным для скорости заливки в панель будет в EasyManager.exe вместо Complete Download/Upload выставить Partial Download/Upload. И вообще, расположение элементов и органов управления на панели лучше и быстрее конечно контролировать через Tools->Off-line Simulation.
)
Итак, теперь панель MT506 имеем в качестве ModBus-slave на интерфейсе RS-232
Так как мастера нет, то на дисплее будет отображено 0.
С помощью COM Port Toolkit v2.32, диалог сообщений->Сообщение №2, вписать "01 10 00 00 00 01 06 00 EA 66 1E" и SEND(это будет запись регистра №0 значением 234. )
Должен прописаться регистр, и придти ответ от панели 01 10 00 00 00 01 01 C9
Если не видите числа 234 на дисплее панели, значит что-то делаете не так. Но вот рабочий проект.
В итоге, связали PLC и HMI. Что еще надо ?
Но если интересно, то делая по работе проект, сам разберусь и покажу, что как делается еще.
Вся дальнейшая работа будет производиться с 19200N2 по RS485-2W, PLC = MODBUS RTU Server
Русские шрифты коряво реализованы. Есть два пути, править фонты, запустив EasyAsciiFontMaker.exe или же в папку Easy Builder поместить файл EasyBuilder_PS. И запускать его, а не EasyBuilder. После запуска поставить галочку Edit->System parameters->Editor->Persian Support и для Language0 выбрать шрифт на свой вкус, к примеру Arial. Ну а размещается текст, просто Draw->Text или слева на тулбаре
Буду рисовать меню, без художественного изыска. Вверху дисплея уже размещенный текст, а ниже кнопки, при нажатии на которых меняются окна с параметрами.
Что-то вроде такого


Кнопка делается так: Parts->Function key или справа на тулбаре
General->Description=btn_progr_load
General->Change window->Window No:=11
Shape->Use shape=true
Shape->Shape library=Shape0
Label->Attribute->Color=R0:G0:B0
Label->Attribute->Align=Center
Label->Attribute->Font=16
Label->Content=ЗАГР.ПРОГР.

Кнопка готова
И остальные требуемые кнопки делаются путем копипаста (Ctrl+C Ctrl+V), только изменяются Description, Window No, Content.
Для выравнивания кнопок меню можно применить следующие методы:
Задавать позицию и размеры в свойствах каждой функциональной клавиши: Label->Profile->Position & Size
либо кнопками , отслеживая текущее положение в строке статуса (самая нижняя строка).
либо выставить сетку в Option->Grip/Snap->Snap=true Заметка: первая страница на которой все размещали это страница с номером 10 ! Что бы добавить новые страницы: 11-16 на которые ссылаются функциональные кнопки:
Вызвать контекстное меню (клик правой кнопкой мыши) на номере требуемой новой страницы и Create

В диалоговое окно достаточно задать описание окна. На каждую страничку поместить по той же самой функциональной кнопке но с текстом НАЗАД, и действием return to previous.

Получился такой экран
Вот рабочий проект, который можно просмотреть даже без реальной панели в Tools->Off-line simulation.
Размещение элементов Parts->Numeric Data и Parts->Numeric Input Extended и их смысл должен бы понятен.

Концепция взаимодействия HMI с PLC


PLC является мастером, HMI слейвом.
Это обусловлено тем, что если HMI является мастером, то линия передачи сильно загружена, так как прием/передача всех регистров идет непрерывно, что может сильно загрузить МК на обработку запросов/ответов.
По включению питания время инициализации PLC на базе любого МК менее 1 сек, даже промышленные Siemens S200 столько же запускаются, а вот требуемого времени на запуск HMI потребуется 5-10 сек.
По этому нужно отследить момент готовности HMI. Для этого на главном окне HMI ( окно №10 initial ) размещается компонент Parts->Set Word, назначается регистр к примеру LW999, и атрибуты: Set Style = Set a window open, Set Value = 999.
То есть по включению, и выводу начального окна будет произведена запись в регистр 999 значения 999. PLC же по включению должен пытаться считать с этого регистра это значение, и если ОК то приступит ко второму этапу - заливке первоначальных значений.
А тут все банально просто: все требуемые для отображения и конфигурирования значения заливаются на HMI.
Подготовительные работы на этом закончены, теперь само изменение данных и их синхронизация в процессе работы.
Изменение данных на PLC вызывает процесс передачи (ModBus-команда 0x10 ) измененных регистров. По этому здесь все просто.
Если же произошло изменение данных на HMI то есть два метода для синхронизации c PLC: 1 - PLC считывает все регистры, которые могут быть изменены на HMI (Parts->Numeric Input Extended), и сверяет со значениями в своей памяти. Если есть отличия, то заменить данные в своей памяти из данными из HMI. Способ универсальный, но может пройти относительно много времени после изменения данных на HMI и сверкой на PLC. Что может быть в некоторых случаях критичным. Тем более такой способ, сильно загружает линию передачи.
2 - на каждую страницу в HMI помещается обьект Parts->Set Word

Где SET VALUE - номер страницы. Тогда работа PLC сводиться к следующему: периодическое считывание регистра 998, и если он != 0 то считать все регистры, которые находятся на этой странице. Посложнее реализация, но побыстрее будет.
Последнее редактирование: 09.07.2015 23:31:31