trust already work Программирование Beckhoff PLC для чайников » Портал инженера

Программирование Beckhoff PLC для чайников

Напишу тут подробно, чтобы самому потом не забыть. Похоже, тут половина вещей из серии “Это нельзя понять – это надо запомнить”. Итак, я дошел до того, что софт видит контроллер и простейшая программа туда загружается и вроде бы работает. Вот как это делается.

Мы поставили TwinCAT. Для начала запускаем TwinCAT System Manager. В нем сначала найдем устройство:

В появившемся диалоге выбираем Search (Ethernet) и в диалоге поиска – Broadcast Search
Закрываем диалог, в предыдущем диалоге выделяем только что найденное устройство:
Теперь System Manager подключен к нашему контроллеру, о чем сообщает в статусбаре. Далее надо получить список устройств ввода-вывода. В ноде I/O – Configuration –> I/O Devices ткаем правой кнопкой и говорим Scan Devices:
В результате система получает полную конфигурацию устройств:
Как видно выше, перечислены все три блока подсоединенные к контроллеру, включая пустышку. Я даже могу отсюда управлять состоянием каналов вывода (выделить канал, справа закладка Online и там нажать кнопку Write):
 

Записал 1 в 4-й канал – на блоке вывода загорелся светодиод. Стало быть поменялось состояние. А вот канал ввода – не меняется так. Видимо, он проверяет физическое состояние (не замкнуто) и врать права не имеет. Ну да ладно.

Далее мне хочется написать простейшую программу. Если замкнут вход 1 – включить выход 1. Если разомкнут – выключить. Для этого нам понадобится другая программа – TwinCAT PLC Control (по сути – IDE CoDeSys). В ней мы создаем новый проект. Нас спрашивают под какое устройство будем писать.

Выбираем CX (ARM), потому что наш cx9010 построен на ARM процессоре. Проект состоит из программных блоков, один из которых – главный нам сразу предлагают создать:
Языков как видите может использоваться множество. Я выберу LD – язык лестничных диаграмм или релейно-контактной логики по-нашему. Сначала в верхнем окошке обьявляем переменные. Вот на этом этапе я и провел полдня. Похоже, для того, чтобы эти переменные были видны и к ним можно было привязать вводы-выводы, они должны иметь адрес. Что конкретно это означает, я пока не понимаю, но вот это вот шаманство работает. То есть для обьявления булевской переменной In01, надо написать не вот так:
 А вот так:
 Волшебное заклинание %IX0.1 переводится так. %-значит это адрес. I – вход (Q-выход). X – тип данных бит (true/false). 0.1 – это месторасположение в некой области переменных. Это значит 1-й бит нулевого байта.
Пишем саму прогамму. На языке LD программа – это типа две шины (справа и слева) под напряжением. Между ними можно вставлять котакты (Contact) и реле (Coil). Контакт – это вход, Coil – это выход. Можно еще блоки вставлять, но это пока опустим. Таких цепочек может быть много, но у нас пока одна будет. Вставляем контакт. И сверху пишем имя входной переменной In01.
Затем вставляем Coil и называет Out01. Вот такая получается программа:
Она как раз и говорит “Если In01 замкнут, то через Out01 идет ток и оно замыкается”. Ну и наоборот соответственно. Все, программа у нас написана. Говорим Project –> Build. Все компилится без ошибок. Рядом с файлом проекта появляется файл *.tpy который теперь можно загрузить в System Manager:
Как видите, System Manager видит обе наши переменные:
Теперь в I/O Configuration мы можем привязать каналы ввода – вывода к переменным. Выбираем канал, нажимаем Linked to и выбираем переменную:
Теперь у меня физические входы-выходы приделаны к переменным в программе. Я иду в PLC Control. Там я тоже должен сказать что работаю с физическим контроллером (Online –> Choose Rintime System:). Выбираю свой контроллер:
Затем говорю Online –> Login. Система спрашивает загружать ли программу в контроллер. Загружаем. Далее я могу сказать Online –> Run – запустить программу в контроллере. И вроде как она выполняется. Я могу поменять значение переменной In01 из PLC Control и выходная переменная Out01 тоже меняется. Только вот состояние выхода у контроллера – не меняется. Будем копать дальше.


Источник: https://roman-eremin.livejournal.com


Обсудить на форуме

Комментарии

Добавить комментарий
    • bowtiesmilelaughingblushsmileyrelaxedsmirk
      heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
      winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
      worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
      expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
      disappointedconfoundedfearfulcold_sweatperseverecrysob
      joyastonishedscreamtired_faceangryragetriumph
      sleepyyummasksunglassesdizzy_faceimpsmiling_imp
      neutral_faceno_mouthinnocent

    Модули ввода-вывода полевого уровня AS-interface

      На полевом уровне может использоваться несколько серий компактных модулей ввода-вывода дискретных и аналоговых сигналов со степенью защиты до IP 69K

    Коммуникационные процессоры CP 343-2/ CP 343-2 P AS-interface

      Коммуникационный процессор CP 343-2/ CP 343-2P выполняет функции ведущего устройства AS-Interface и может использоваться в программируемых контроллерах SIMATIC S7-300/C7 и станциях распределенного ввода-вывода SIMATIC ET 200M.

    Прошивка контроллера RichAuto A11

      Выберите пункт [SYSTEM SETUP], кнопками [1↑] и [5↓] и нажмите [OK]Выберите пункт [Auto Upgrade], кнопками [1↑] и [5↓] и нажмите [OK]

    Управление моментом AX5000

    Есть два пути по организации задачи управления моментом сервоусилителя серии AX5000. Первый способ — добавление с помощью TwinCAT System Manager параметра Bipolar torque limit value в таблицу MDT привода с последующей линковкой к нему программной

    Оптимизация системы под Mach3

    Когда при инсталляции Вас попросят нажать F6 ("Third Party SCSI" или "RAID Drivers"), то вместо этого нажмите F5.  Когда Вам предложат нажать F2 для Автоматического Восстановления Системы Automated System Recovery) - не нажимайте F2.

    Простейшая система сбора данных на базе ADAM-4017

    В последнее время актуальной становится проблема эффективного использования энергоресурсов. Кто-то подходит к ней со стороны выработки, а кто-то со стороны эффективного потребления энергии. Фирма, в которой я работаю, производит генерирующие