Параметры приводных проектов специально разнесены по нескольким местам. Во
первых, они разбиты по слоям или, иначе говоря, по месту применения: железо
(сервоусилитель) + NC + софт (PLC). Во вторых, так безопаснее: железо имеет
свои железные настройки, а все остальное и мягкое — располагает своими собственными "крутилками" и "показометрами".
Изображение: Beckhoff Automation
Тем не менее из ПЛК-проекта можно программно изменить любые
настройки любого слоя. Это не всегда очевидно, но добраться все-таки можно.
Железо
Я буду упрощать. Традиционно сервоусилитель разбит на три контура: контур
тока, контур скорости и контур положения. Первый контур опирается на физические
характеристики мотора и сервоусилителя. Второй и третий — это контуры, построенные вокруг тех или иных регуляторов скорости, положения, момента и тому подобное. Регуляторы типа ПИД, его модификации и возможно что-то экспериментальное.
Что и как они регулируют и чем управляют, попробуйте догадаться по их
названиям. После их настройки сервоусилитель готов принимать команды и крутить мотор в нужном направлении.
Унификация и абстракция
Моторы и сервоусилители бывают разные. А бывают не только моторы, но и просто исполнительные механизмы к
которым прилеплена обратная связь. И такую штуку тоже желательно
причесать под одну гребенку. В общем нам нужно абстрагироваться от конкретики исполнительного механизма. Поэтому дальше идет слой NC-сервиса. Он абстрагирует исполнительную систему так, что программе технологического процесса не нужно ничего знать о конкретике физических процессов в исполнительной системе. У NC есть свой набор
настроек.
Кроме собственныъ настроек у NC-системы есть свой собственный контур управления,
который может... делайте выводы сами:
Технологический процесс
Процессом управляет программа. Управление она делает с помощью исполнительных
механизмов. Получается, что программа дергает за ручки и кнопки слоя
абстракции NC. У программы есть какие-то свои пожелания, которые она
передает в слой NC.
Приводную часть настраивает "приводник" - специалист своего дела, а программы
пишет "программист" - он тоже специалист, но уже своего дела. Хорошо когда это один человек: сам
настроил, сам запрограммировал. Тем не менее, после тонкой настройки железа, эти настройки лучше
оставить в покое и больше не трогать. Правда бывает, что нужно и что-то
подкрутить программно.
Крутим параметры
Предположим, изменился коэффициент масштабирования энкодера
инкрементов-на-миллиметр. В лексиконе приводника - это Nc feed constant. На самом деле это настройка не слоя железа, а настройка слоя NC.
Такое смешение сделано для удобства: приводник настраивает все низко-уровневые и средне-уровневые параметры движения и железа в одном месте. Программист же может
управляет параметрами движения типа скорость-ускорение и подрегулировать
динамику через NC. Опять-таки удобно.
На картинке как раз кусок железа Drive Manager'a, где смешались в кучу слои:
Привод можно донастраивать через SoE, CoE и пр. В параметры NC можно залезть
через функциональные блоки типа MC_WriteParameter, предоставляемой библиотекой Tc2_MC2. Эти настройки не навсегда — при следущей загрузке параметры откатятся до значений
заданных в конфигурации. Так сделано для безопасности.
Список всех доступных настроек содержится в перечисляемом типе MC_AxisParameter. Его интересно полистать пару минут, вчитываясь в комментарии типа: (* new since 1/2012 *) или ...- available in Tc3 *) — история как она есть.
Чтобы как-то повлиять на значение параметров в конфигурации, можно при каждом старте ПЛК-программы задавать новые коэффициенты. Так и приходилось делать в TwinCAT 2. Теперь уже не обязательно — в TwinCAT 3
появились функции типа
MC_WriteParameterPersistent. Через них достаточно задать параметр один раз и его значение легко переживет
перезапуск ПЛК. При активации новой конфигурации, эти значения будут заменены
на значения из новой конфигурации.
Небольшой пример как пользоваться, но там и так все понятно:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
PROGRAM MAIN | |
VAR | |
{attribute 'TcNcAxis' := 'Axis 1'} | |
ax1: AXIS_REF; | |
START: BOOL; | |
McWriteParameterPersistent: MC_WriteParameterPersistent; | |
END_VAR | |
McWriteParameterPersistent( | |
Axis := ax1, | |
Execute := START, | |
ParameterNumber := MC_AxisParameter.AxisEncoderScalingNumerator, | |
Value := 0.000123 | |
); | |
START R= NOT McWriteParameterPersistent.Busy; |
No comments
Post a Comment
Note: Only a member of this blog may post a comment.