Добро пожаловать на Форум по станкам с ЧПУ!

Вопрос по: Classic Ladder in LinuxCNC

Тема в разделе "Системы ЧПУ - Linux", создана пользователем tmagraphics, 4 янв 2020.

  1. tmagraphics

    tmagraphics

    Регистрация:
    20 сен 2012
    Сообщения:
    187
    Симпатии:
    0
    Потихоньку изучаю EMC, выяснилось что он может выполнять функции PLC.
    Интересно уровень этого, то есть он реально может замениить PLC на болие ли мене серьезной машине? Типа такой у которой есть два конвеера, рука робота которая берет с двигаюшегося ковеера что нить. Так же есть с десяток воздушных цилиндров с датчиками и несколько сервомоторов?
     
    Или все это заточено максимум на управлние (tool changer) сменой инструмента?
     
  2. Илья Сидоров

    Илья Сидоров

    Регистрация:
    29 сен 2012
    Сообщения:
    121
    Симпатии:
    0
    Оно ни под что конкретно не заточено. Хватит производительности - будет работать. Минимальное время цикла -1 мс, быстрей не умеет.
     
  3. alex6002

    alex6002

    Регистрация:
    21 сен 2012
    Сообщения:
    205
    Симпатии:
    0
    Меня напрягло, что в ClassicLadder'е только 10 ячеек по горизонтали, и расширить низя, а например одно сравнение занимает сразу 3 ячейки. Т.е. если нужно три сравнения переменных + входной контакт + выход уже не влезет. (я например пытался вычислить кратчайшее расстояние вращение барабана инструментов).
     
    И с математикой не понятно как бороться например, я так и не победил модуль (в инструкции нет и на форуме тоже не смогли подсказать).
     
    Хотя в целом, работат оно конечно, чего от нее еще хотеть. Количество входов/выходов можно добавлять (и через .hal файл например на месу прописывать).
     
    Короче, нужно пробовать эту штуку в каждом конкретном случае. (благо эта штука бесплатная)
     
  4. gloat

    gloat

    Регистрация:
    11 май 2012
    Сообщения:
    179
    Симпатии:
    0
    а что такого фантастического обеспечивает эта ladder logic, что на машинах, выполняющих миллиарды операций в секунду и имеющих гигабайты оперативной памяти, люди готовы рисовать нечто в 10 ячейках по-горизонтали, которое потом будет выполняться 1000 раз в секунду? ;)
     
  5. Илья Сидоров

    Илья Сидоров

    Регистрация:
    29 сен 2012
    Сообщения:
    121
    Симпатии:
    0
    Некоторую наглядность программирования она обеспечивает, больше в общем-то и ничего. У меня она делает ж-ж-ж-чик-чик-чик инструмент меняет :) .
     
  6. gloat

    gloat

    Регистрация:
    11 май 2012
    Сообщения:
    179
    Симпатии:
    0
    я случайно узнал про ее существование, когда мицубисевскую пиэлсишку с нужным мне модулем купил. интереса ради поковырял софт пару дней. ужаснулся. по-моему, это какая-то шутка :) чтобы сделать простейшие вещи, требуются невероятные усилия, по сравнению с любым языком программирования. или ассемблером. я подозреваю, что на ней можно написать что-то сложное, но зачем?? наглядность, мне кажется, сохраняется только в простейших примерах. чуть сложнее - это как рассматривать устройство микропроцессора, скомпилированного с верилога (тоже ни разу не высокоуровнего языка) в триггеры и комбинаторную логику. интересно, но нифига не понятно. мне, во всяком случае :)
    извините, вспомнилось :)
     
    имхо, если есть линукс, можно управлять тысячами пневмоцилиндров сотней гораздо более комфортных способов, нежели этот классик ладдер
     
  7. skorpionnk

    skorpionnk

    Регистрация:
    22 авг 2012
    Сообщения:
    540
    Симпатии:
    0
    gloat ,вы о ПЛК вообще, или о реализации ее конкретно в случае LinuxCNC?
    для LinuxCNC очень удобная именно в том виде, в каком она есть. Замена простейшей электроавтоматики в понятном для непрограммиста виде. (хотя такому человеку разобраться, как в .hal файле завести и вывести пины - сложновато будет), ну и легкость в изменении-исправлении, в онлайн-режиме.
     
    Независимо от LinuxCNC - ПЛК тоже отличная вещь, в плане универсальности их ,пусть и с ограничеными возможностями, относительно норм. комьютеров. По работе их использую и не нарадуюсь (условно)
     
    Тоже маленький оффтопик - сложно ли свой модуль для .hal написать, например чтобы загнать часть электроавтоматики в него? или протокол связи с внешним оборудованием необычный?
     
  8. kniaz

    kniaz

    Регистрация:
    15 апр 2013
    Сообщения:
    20
    Симпатии:
    0
     
    Если Вы под модулем HAL имеете ввиду компонет, то я их под свои нужды пишу, например, последний - это что-то типа приемника-демультиплексора для связи через один провод внешнего пульта, на котором куча кнопок, с пином парпорта, весь код занял 8 строк... Нужны всего-лишь знания языка С на уровне средней школы и безграничный полет фантазии :)
     
  9. skorpionnk

    skorpionnk

    Регистрация:
    22 авг 2012
    Сообщения:
    540
    Симпатии:
    0
    kniaz ,ага, спасибо. сам не пробовал ни разу, повода не было, а интересно. он компилируется, или прямо в виде исходника болтается где-то, и интерпретируется при запуске linuxCNC? И И оно же быстрее будет работать, чем Classic ladder...
     
  10. Дмитрий ООО

    Дмитрий ООО

    Регистрация:
    29 сен 2012
    Сообщения:
    218
    Симпатии:
    0
    А не поделитесь кусочком кода ?Просто, чтобы пронаблюдать "масштаб бедствия" ?
     
  11. skorpionnk

    skorpionnk

    Регистрация:
    22 авг 2012
    Сообщения:
    540
    Симпатии:
    0
    да ничего сложного то нет, передавать пакетом номер кнопки, а в приемнике прнимать номер, и если нарушены тайминги, ен принимать ничего.
    Другое дело, как это в емс2 реализовано.. мне тоже интресно.
     
  12. Илья Сидоров

    Илья Сидоров

    Регистрация:
    29 сен 2012
    Сообщения:
    121
    Симпатии:
    0
    Компилируется.
     
    Вот например компонентик для расчета скорости резания для токарника:
     
    component cut_speed;pin out float vc;pin in float rpm;pin in float radius;pin in float offset;function _;license "GPL";;;FUNCTION(_) { vc =0.006283*(radius-offset)*rpm; }
     
  13. kniaz

    kniaz

    Регистрация:
    15 апр 2013
    Сообщения:
    20
    Симпатии:
    0
    вот, например, слепил когда-то компонент decoder, позволяет передавать по 4 проводам 16 команд от кнопок пульта:
    распаковываем архив в домашний каталог, далее в консоли
    далее добавляем компонент в HAL:
    Недостаток - можно передавать единовременно только одну команду.
    Сейчас работаю над устранением этого недостатка, сокращением задействованых пинов до 2-х, увеличением количества одновременно передаваемых команд до желаемого. В ближайших планах -сделать дуплексный режим работы для передачи на пульт всякой индикации и пр... :)

    PS. Архив загрузить не удалось, сохраните исходный текст в файл под именем decoder.comp
    component decoder;param rw bit enable = TRUE;pin in float debounce = 0.1;pin in bit in#[4];pin out bit out##[16];variable double timer;function _;license "GPL";;;FUNCTION(_) {int i, num, temp_enable;static int lastnum = 0;temp_enable = enable;num = in(0) + in(1)*2 + in(2)*4 + in(3)*8;if (!temp_enable) out(num) = 0;if (num != lastnum) {timer += fperiod;if (timer > debounce) {for (i = 0; i < 15; i++) {if (out(i)) out(i) = 0;}timer = 0;lastnum = num;out(num) = 1;}}}

    PPS. Получить двоичный код команды в пульте можно двумя микросхемами кодера 8->3 74HC148 или диодной матрицей...
     
  14. alex6002

    alex6002

    Регистрация:
    21 сен 2012
    Сообщения:
    205
    Симпатии:
    0
    Когда покупали станок под модернизацию с 20ю инструментами в барабане тоже морально готовился писать на Java логику смены инструмента (раньше на ней программировал довольно плотно). Но потом стал разбиратся, и подумал, что это не linux-way если есть (по аналогии с Sinumerik) специально созданный для этих дел Classic Ladder.
     
    Вобщем уперся рогом и несмотря на некоторые косяки классик ладдера (в операции сравнения не работает модуль числа) все в него упихал без проблем.
     
    ИМХО вполне нормальная штука с ОГРОМНЫМИ двумя плюсами:
    1. Понятность людям совершенно далеким от программирования, но разбирающимися в элементарных электрических схемах (реле). Собственно такие люди обычно и владеют станками (бывшие программисты это большая экзотика среди станкостроителей).
    2. Исчерпывающая наглядность при отладке (сигналы сразу видны что куда идет) в режиме реального времени.
     
    А ограничение в 10 ячеек по горизонтали легко обходится, если разбить логическую цепочку на пару строк через дополнительное реле.
     
    Вобщем Классик Ладдеру твердую пятерку с минусом - пятерку за все, а минус за глюки с математикой.
     
    А что касается программы выше, то в CL есть такая штука как "weighted sum" я через нее номер инструмента от 1 до 20 получаю по 5 входам (двоичный код).
     
    P.S. И на последок - вот подумайте, напишите вы логику, например, смены инструмента на C. Потом станок продадите, или например уволитесь с места работы где он стоит. А там что-то с механикой случится например, и программа перестанет нормально ее отрабатывать - и представьте фрезеровщика "дядю Васю Балалайкина", который будет пытаться это все наладить. А Классик Ладдеровские "релейные схемы" это хрестоматийная классика жанра PLC, которая будет одинаково хорошо понятна и профессионалу и новичку, да и вам, когда вы через пару лет забудете как что в вашем C-коде работает.