Логика узла на МЭК 61131-3 — проверена до железа
SFC или ST, движение — блоками PLCopen, состояние узла — по PackML. Программа пишется в браузере и проходит компилятор и прогон до пуска.
Программа узла — обычная программа контроллера
Узел линии — робот, позиционер, трек, схват, лента — работает по своей программе. В SyncTwin это программа по МЭК 61131-3: тот же стандарт, на котором пишут логику промышленных контроллеров.
Логика описывается шагами и переходами SFC или текстом ST. Движение осей задаётся стандартными блоками PLCopen. Конец цикла и аварии узла называются состояниями PackML.
Отсюда главное следствие: программу читает и правит ваш наладчик, знакомый со стандартом. Отдельного языка платформы учить не нужно.
Программа пишется и проверяется в браузере до приезда оборудования: компилятор, лаборатория с таблицей входов и выходов, прогон на виртуальных осях. На приводы она уходит той же, без переписывания.
Один язык — МЭК 61131-3
- Логика — SFC или STШаги и переходы читает наладчик, знакомый со стандартом.
- Движение — блоки PLCopenПеремещение оси, сброс и чтение ошибки — стандартными блоками.
- Готовый текст приносится файломИмпорт программ .st и PLCopen XML; язык — свойство программы.
- Состояние узла — PackMLКонечный шаг SFC — Complete; авария оси — Aborted; «Стоп» один во всех окнах.
Язык — свойство программы
Задаётся при создании или импорте. Экран лаборатории, вкладки и фильтр строятся по нему сами.
Новая программа начинается заготовкой SFC, которую компилятор уже принимает.
Импорт вместо набора
Кнопка «Импорт» берёт файлы .st и PLCopen XML. Если в файле несколько программных единиц, платформа спросит, какую взять.
Ручки программы
Входные переменные с диапазоном и единицами становятся ручками узла. Вид «Визуально» показывает их для любого языка, значения хранятся у узла.
Из чего состоит цикл узла
| Часть | Что это | Замечание |
|---|---|---|
| Шаг SFC | Состояние цикла: что делает узел, пока шаг активен | Конечный шаг SFC — состояние PackML Complete узла |
| Переход | Условие, по которому шаг сменяется следующим | Обычно — выход Done блока движения, вход-порт или таймер |
| Блок движения | PLCopen: MC_MoveAbsolute и другие, MC_Reset, MC_ReadAxisError, MC_SetPosition | У блока есть состояние Active, ускорение и торможение; MC_SetPosition сдвигает координату без движения |
| Разрешение оси | MC_Power — в «И» с питанием узла | MC_Power(FALSE) снимает ось; без него ось не едет |
| Ручка | Входная переменная с диапазоном и единицами | Скорости и выдержки выносятся в ручки, а не в текст |
| Порт | Вход или выход узла для проекта; товар — порты in/out | У выхода — род сигнала и период, у входа — поведение по таймауту |
| Место | Формальное: Pick, Place | Фактическую точку указывает проект у узла; программа при этом не правится |
Связи с соседями — не в программе
Узел не знает соседей. Порты объявляет программа, соединяет их проект проводом на вкладке «Граф».
Приёмы движения — блоками
Перенос, переворот и постановка доступны как функциональные блоки. Программа реза станка вызывается из узла блоком запуска G-кода.
Ожидание — с названным исходом
Шаг, который ждёт датчик, получает предел ожидания и исход по нему: пропустить, встать или объявить аварию. Решает автор программы.
Каналы с ролями, а не адреса
Оси
Роль выбирает режим привода, механизм — то, что видит оператор.
Входы — датчики
Роль говорит, что датчик знает: «деталь на месте», «захват подтверждён».
Выходы
Роль говорит, что порт делает: держит, стопорит, метит, переводит поток.
- Узлу предлагаются только его действияБез датчика наличия «дождаться детали» в списке нет вовсе.
- Команда подана — ещё не «взял»Захват подтверждается сигналом входа, а не выдержкой на глаз.
- Привязка к железу — при наладкеПуск без привязки отказывает с именем канала; «наверное, первый привод» не подставляется.
Каналы, роли и каталог образцов узлов подробно — на странице «Автоматика линии».
Пять шагов от пустой программы до приводов
- Создать«Новая программа» — выбор блока узла. Блок даёт программе оси, роли, профили и имена входов-выходов. Или «Импорт» .st и PLCopen XML.
- КомпиляторТекст проверяется целиком по МЭК 61131-3, затем — привязка к узлу. Ошибки показываются как есть, с местом в тексте.
- ЛабораторияТаблица входов и выходов, форсировка входа, плеер SFC и состояние PackML — в браузере.
- Виртуальные осиУзел идёт на стенде, приводы стоят: видны шаги, время и переходы.
- ПриводыОшибка слежения и нагрузка проверяются только на реальной оси, после назначения профилей.
Форсировка — инструмент отладки: гаснет при аварийном стопе и на производство не идёт. Значение, подставленное во вход, придумал автор; на стенде его называет симулятор.
Программа и узел на одном экране
Вид по языку
Лаборатория открывает программу в виде её языка: шаги и переходы SFC или текст ST. Плеер в браузере есть у SFC с моделью шагов.
Нижняя панель «Узел»
Таблица входов %IX и выходов %QX, состояние PackML. Вход форсируется переключателем; порты видны виджетами рядом с ручками программы.
Проверка без замечаний
Счётчик шагов и переходов и вердикт компилятора видны под кодом. Демонстрационная программа открыта только для чтения — работа идёт в её копии.
Узел говорит языком PackML
| Состояние | Когда |
|---|---|
| Complete | Цикл дошёл до конечного шага SFC |
| Aborted | Авария оси — следящая ошибка вышла за предел |
| Stop + Abort | «Стоп» из любого окна: двойник, наладка, панель у оборудования — одна команда |
| Aborted | Выход включён, а вход-подтверждение не пришёл — сторож подтверждений готовится |
Пороги аварии по умолчанию
| Предел | По умолчанию | Замечание |
|---|---|---|
| Порог момента | 600 ‰ номинала | Авария — только если превышение держится дольше выдержки: на разгоне момент штатно уходит за предел |
| Порог рассогласования | 0,05 оборота | На виртуальных осях не проверяется: там рассогласование — работа модели, а не факт привода |
| Выдержка аварии | 0,2 с | Сколько превышение должно продержаться |
Это стартовые значения
Под конкретное железо пороги задаются явно. Паспорт вашего узла их уточняет.
Момент на виртуальной оси — модель
Он выводится из разницы «велено» и «есть». Годится для отладки логики поиска упора и затяжки, замером не является.
Нет паспортного момента — прочерк
Шкала промилле отсчитывается от номинала двигателя. Номинал не задан — условие по моменту не сработает; заполните паспорт до того, как строить на нём переход.
От нуля до движения: сварочный позиционер
Два поворотных привода: наклон кладёт стол под шов, вращение прокручивает планшайбу под горелкой. Это образец каталога узлов; его программу можно взять целиком и переписать под своё железо.
| Шаг SFC | Действие | Переход |
|---|---|---|
| исходная | Обе оси в 0° — MC_MoveAbsolute на каждой | Оба блока Done |
| наклон | «Наклон» на 45° | Done |
| оборот | «Вращение» на 360° | Done |
| обратный наклон | Обе оси в 0° одновременно | Оба блока Done |
| пауза | Выдержка по таймеру | Таймер → «исходная» |
- Блок«Новый блок» → образец позиционера. Две оси с именами шарниров механизма приезжают вместе с геометрией.
- ПрограммаЗаготовка SFC, пять шагов цикла. Скорости — во входные переменные: они станут ручками узла.
- ПроверкаКомпилятор принимает текст и привязку. Плеер проигрывает шаги, панель «Узел» показывает состояние PackML.
- Виртуальные сервоНаклон встаёт на 45°, вращение отрабатывает оборот; в конце цикла узел в состоянии Complete.
- ПриводыОсям назначаются профили, паспорт привода заполняется; режим «В цикле» — для производственного прогона.
Пределы осей взяты из механизма: наклон ±85°, вращение ±360°. Производитель диапазоны не публикует, и в файле механизма это названо предположением.
Исход прогона называет платформа
Карточка узла хранит последние запуски: какая программа, когда, чем кончилась. С момента пуска платформа сама спрашивает стенд и штампует запись по его кадру — держать карточку открытой не нужно.
- Дошла до концаПрограмма отработала цикл.
- ОстановленаПрогон прервали раньше конца.
- ОшибкаПрогон упал; причина — в записи.
- Исход неизвестенКонца прогона никто не наблюдал: стенд не подтвердил ход, связь пропала или сервер перезапустился посреди прогона.
Отказ называется, а не молчит
| Отказ стенда | Что это значит | Что делать |
|---|---|---|
| Серво не сопоставлено с приводом на шине | Ось программы не связана с приводом узла | Назначить профиль оси в наладке |
| Вход или выход не сопоставлен | Программа использует канал, которого железо не знает | Сопоставить канал ввода-вывода в наладке |
| Узел не найден | Узел, которому адресован прогон, удалён или указан не тот | Выбрать узел заново |
| Стенд отказал без причины | Узел не прислал причину; платформа её не сочиняет | Смотреть журнал на боксе и связь с узлом |
Несопоставленный привод блокирует пуск: подмены реальной оси виртуальной «чтобы поехало» нет. Зелёный прогон при неподключённом железе — самая дорогая ошибка, и платформа её не допускает.
Чего программа узла не делает
| Не делает | Почему | Где это есть |
|---|---|---|
| Не исполняет G-code | Своего интерпретатора у узла нет: программу реза он вызывает блоком запуска | Станки с ЧПУ |
| Не знает инструмента и слотов | Навесное узла объявляется каналом, а не номером в столе инструмента | Роботы и навесное |
| Не выводит траекторию из детали | Путь называет автор — шагами SFC и блоками PLCopen | Программы реза |
| Не принимает толчок и сырые команды из облака | Через границу проходит замысел — программа и команды «выполняй» и «стоп» | Наладка у оборудования |
| Не проверяет отставание на виртуальных осях | Обратной связи там нет; нагрузку доказывает только прогон на приводах | Приводы |
Что работает и что готовится
- РаботаетПрограммы на ST и SFC, импорт .st и PLCopen XML, компилятор, лаборатория с форсировкой, пуск узла на виртуальных осях и на приводах стенда, журнал прогонов.
- ГотовитсяСторож подтверждений выходов; блок переноса с точками таблицей — сделаны в коде, выйдут ближайшими выкатами.
- Предмет внедренияПрогон программы против симулятора рядом с контроллером, датчики тем же входом, что и реальные, — виртуальная пусконаладка.
Обсудить внедрение
Пришлите программу узла или опишите его цикл — проверим её в лаборатории и предложим этап НИОКР с ценой и сроком.
Запросить доступОбсудить внедрение
Опишите узел или линию — ответим, что проверим и в какой срок. Целевые показатели фиксируются в техзадании внедрения.
Запросить доступ