Добавить в корзинуПозвонить
Найти в Дзене
Khan_ASU

Программирование энкодера в SIEMENS Tia Portal

Энкодер в промышленной автоматике — это «глаза» системы управления. Используется в качестве обратной связи в ПЛК, к примеру: на какой угол повернулся вал электродвигателя, в какой точке находится механизм, с какой скоростью и в каком направлении он движется. Типы энкодеров: В примере рассматривается инкрементальный энкодер с двухфазным выходом (каналы A и B) без использования индексной Z-метки. Выходной каскад выполнен на транзисторе типа PNP с открытым коллектором.
Энкодер подключен к высокоскоростным входам ПЛК Siemens S7-1200 CPU 1215C DC/DC/DC. В среде разработки Tia Portal создать новый проект и добавить контроллер CPU. 1. В "Project tree", открыть "PLC tags" ➢ создать таблицу "Discrete_inputs". 2. В "Project tree" перейти к папке "CPU [CPU 1215C DC/DC/DC]" ➢ "Device configuration" ➢ выделить контроллер ➢ в меню "Properties", вкладка "IO tags" ➢ назначить имена входным переменным: DI_Encoder_A - %I0.0 и DI_Encoder_B - %I0.1 3. Находясь в меню "Properties" перейти к вкладке "Gener
Оглавление

Введение

Энкодер в промышленной автоматике — это «глаза» системы управления. Используется в качестве обратной связи в ПЛК, к примеру: на какой угол повернулся вал электродвигателя, в какой точке находится механизм, с какой скоростью и в каком направлении он движется.

Типы энкодеров:

  • Инкрементальные - считают шаги от момента включения. При отключении «забывают» позицию (нужна калибровка/возврат в «дом».
  • Абсолютные - всегда знают свою точную координату. При отключении питания, перемещении вала и повторном включении передают актуальные данные.

Подключение

В примере рассматривается инкрементальный энкодер с двухфазным выходом (каналы A и B) без использования индексной Z-метки. Выходной каскад выполнен на транзисторе типа PNP с открытым коллектором.
Энкодер подключен к высокоскоростным входам ПЛК Siemens S7-1200 CPU 1215C DC/DC/DC.

Красный и черный провода энкодера необходимо подключить к блоку питания, в примере это Mean Well NDR-240-24 в выходным напряжением 24 VDC. Желтый провод - сигнал А, зеленый провод - сигнал В подключаются к высокоскоростным входам ПЛК - DI0.0 и DI0.1
Красный и черный провода энкодера необходимо подключить к блоку питания, в примере это Mean Well NDR-240-24 в выходным напряжением 24 VDC. Желтый провод - сигнал А, зеленый провод - сигнал В подключаются к высокоскоростным входам ПЛК - DI0.0 и DI0.1

Программирование

В среде разработки Tia Portal создать новый проект и добавить контроллер CPU.

1. В "Project tree", открыть "PLC tags" ➢ создать таблицу "Discrete_inputs".

2. В "Project tree" перейти к папке "CPU [CPU 1215C DC/DC/DC]" ➢ "Device configuration" ➢ выделить контроллер ➢ в меню "Properties", вкладка "IO tags" ➢ назначить имена входным переменным: DI_Encoder_A - %I0.0 и DI_Encoder_B - %I0.1

3. Находясь в меню "Properties" перейти к вкладке "General" ➢ раздел настройки высокоскоростных входов "High speed counters (HSC)" ➢ нажать "HSC1" ➢ в открывшихся параметрах активировать высокоскоростной счетчик поставив ✔ "Enable this high speed counter".

4. В разделе "Function" установить следующие параметры:

  • Type of counting - count (тип высокоскоростного входа - счетчик);
  • Operating phase - A/B counter (рабочие фазы - А/В счетчик);
  • Initial counting direction - Count up (начальное направление счета - счет вверх);

5. Раздел "Hardware inputs" определяет физические входа высокоскоростного счетчика у контроллера.

6. Раздел "I/O addresses" определяет область памяти куда производится запись значения с высокоскоростного счетчика.

7. Вернуться к папке "PLC tags" ➢ создать таблицу "Bit_Memory" ➢ добавить в нее переменную:

  • HSC_1CV - Значение с высокочастотного входа счетчика 1. Назначить этой переменной тип Dint и область памяти %ID1000;
Вернуться к папке "PLC tags" ➢ создать таблицу "Bit_Memory" ➢ добавить в нее переменную:
HSC_1CV - Значение с высокочастотного входа счетчика 1. Назначить этой переменной тип Dint и область памяти %ID1000.
Вернуться к папке "PLC tags" ➢ создать таблицу "Bit_Memory" ➢ добавить в нее переменную: HSC_1CV - Значение с высокочастотного входа счетчика 1. Назначить этой переменной тип Dint и область памяти %ID1000.

8. В "Project tree" перейти к папке "PLC data types" ➢ создать тип данных "Encoder" ➢ прописать следующие переменные:

  • In_Value - значение полученное с высокоскоростного входа для записи после включения ПЛК;
  • In_Reset_counts - Бит обнуления подсчета;
  • In_Quantity_imp - количество импульсов на оборот;
  • In_Diamert_Circle - длина окружности в мм.;
  • Out_Lenght_mm - расчетное значение длины в мм.;
  • Out_Lenght_m - расчетное значение длины в м.;
Перейти к папке "PLC data types" ➢ создать тип данных "Encoder" ➢ прописать переменные
Перейти к папке "PLC data types" ➢ создать тип данных "Encoder" ➢ прописать переменные

9. Создать блок данных "DB_Encoder" ➢ добавить в него переменную "Encoder_M1" с типом данных "Encoder".

Создание типа данных энкодер и блока данных энкодера необходимо с целью масштабирования системы когда используется больше одного высокоскоростного счетчика HSC.

10. Создать организационный блок "OB_Encoder_Startup" ➢ добавить инструкцию "CTRL_HSC" ➢ прописать следующие входа:

  • HSC - "Local~HSC_1" - указание к какому высокоскоростному счетчику обращаться инструкции;
  • DIR - True - включение нового направления подсчета;
  • CV - True - включение нового значения счетчика;
  • RV - False - включение нового перекрестного значения (не задано);
  • PERIOD - False - включение нового периода изменения частоты (не задано);
  • NEW_DIR - 1 - направление счета вверх;
  • NEW_CV - "DB_Encoder".Encoder_M1.In_Value - новое значение счетчика;
  • NEW_RV - 0 - новое перекрестное значение (не задано);
  • NEW_PERIOD - 0 - новый период изменения частоты (не задано);

Организационный блок "OB_Encoder_Startup" исполняется один программный цикл при переходе ПЛК из режима STOP в режим RUN. Необходим для инициализации счетчика значением, сохраненным перед последним выключением ПЛК.

11. Создать функциональный блок "FB_Encoder" ➢ прописать следующие переменные:

Input

  • In_Value - DInt - значение полученное с высокоскоростного входа;
  • In_Quantity_imp - Int - количество импульсов на оборот;
  • In_Diametr_circle - Real - длина окружности вала в мм;

Output

  • Out_Lenght_mm - Real - расчетное значение длины в миллиметрах;
  • Out_Lenght_m - Real - расчетное значение длины в метрах;

Static

  • Circumreference - Real - Расчетное значение длины окружности;
  • Impulse_Weight - Real - Вес одного импульса (пройденная длина за 1 имп.);

12. Прописать математические фенкции расчета: длины окружности; веса одного импульса; пройденной длины в миллиметрах; пройденной длины в метрах.

13. Перейти в блок "Main" ➢"Network 1" ➢ добавить инструкции:

  • MOVE - запить значения с высокоскоростного счетчика в блок данных. Необходимо для вызова последнего значения из блока данных при включении ПЛК;
  • CTRL_HSC - принудительное обнуление счетчика. Используется для калибровки или сбросе в "нулевой точке".

14. Раскрыть "Network 2" ➢ перенести из "Project Tree" функциональный блок "FB_Encoder" ➢ привязать входы и выходы:

  • In_Value - "DB_Encoder".Encoder_M1.In_Value;
  • In_Quantity_imp - "DB_Encoder".Encoder_M1.In_Quantity_imp;
  • In_Diametr_circle - "DB_Encoder".Encoder_M1.In_Diamert_Circle;
  • Out_Lenght_mm - "DB_Encoder".Encoder_M1.Out_Lenght_mm;
  • Out_Lenght_m - "DB_Encoder".Encoder_M1.Out_Lenght_m;

Написание программы окончено, необходимо код в работе

Проверка работы

1. В "Project tree" выделить "CPU [CPU 1215C DC/DC/DC]" ➢ нажать кнопку компиляции ➢ при возникших ошибках устранить их.

2. Нажать кнопку загрузки проекта в контроллер ➢ в окне "Extended download to device" выполнить поиск подключенного контроллера нажатием кнопки "Start search" ➢ при успешном поиске нажать кнопку "Load" ➢после загрузки нажать кнопку "Finish".

3. В блоке "Main" подключиться к режиму онлайн мониторинга нажатием "Go online", а затем символ очков "Monitoring on/off" ➢ произвести сброс текущего значения счетчика активацией бита "DB_Encoder".Encoder_M1.In_Reset_counts" и его последующего сброса ➢ задать входные параметры функционального блока "FB_Encoder" в "Network 2":

  • "DB_Encoder".Encoder_M1.In_Quantity_imp - количество импульсов на оборот энкодера (в примере 600 имп./об.)
  • "DB_Encoder".Encoder_M1.In_Diamert_Circle - диаметр подключенного к энкодеру устройства (в примере 107 мм)

4. Произвести 1 полный оборот энкодера и сравнить полученный результат с расчетным. Блок "FB_Encoder" на выходе "OUT_Lenght_mm" отдал значение 338, что практически идентично измеренному расстоянию.

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