Страница 3 из 6 ПерваяПервая 12345 ... ПоследняяПоследняя
Показано с 21 по 30 из 57

Тема: Проект CoDeSys в виде текстовых файлов?

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    Andy, графика и возможности очень сильно отстают от современных тайваньских панелек, не говоря уже о скадах.

    Цитата Сообщение от Игорь Петров Посмотреть сообщение
    Можете небольшой пример на CFC записать в файл?
    Не перевариваю я эти квадратики и не использую, поэтому с примером и не получится.

  2. #2

    По умолчанию

    Цитата Сообщение от BETEP Посмотреть сообщение
    Andy, графика и возможности очень сильно отстают от современных тайваньских панелек, не говоря уже о скадах
    ВЕТЕР постоянно трудится над разнообразными предложениями по улучшению CoDeSys. Дело полезное.

    В некоторых панельках есть встроенный язык программирования. Его сравнивать с CoDeSys смешно. Это довольно разные вещи, разные области применения.

    Кратко - техническая задача CoDeSys Visu работать в РВ и на дешевых встраиваемых проц. 16 бит, который обязан тянуть логику ПЛК и графику одновременно. Никакую скаду туда не воткнуть. Графика должна быть минимально необходимой для снижения требований к проц. Такова была задача на разработку для V2.3. Применение – машиностроение, транспорт. Нечто типа панели автомобиля, трактора, погрузчика, крана, трамвая – 5 стрелок, 10 кнопок. Таких применений CoDeSys Visu десятки тысяч. Все это серийные продукты (кроме ходовой панели яхты Абрамовича). Естественно, по графике CoDeSys Visu глупо сравнивать со спец. панелями или скадами, созданными для работы на более мощных проц.

    Встроенная визуализация CoDeSys как водка. По вкусовым качествам уступает рому, коньку, марочному вину и много еще чему, но от этого область уместного применения не уменьшается

  3. #3

    По умолчанию

    Цитата Сообщение от BETEP Посмотреть сообщение
    Andy, графика и возможности очень сильно отстают от современных тайваньских панелек, не говоря уже о скадах.
    Для этой задачи хватает. На СКАДУ денег не выделили, довольствуемся малым Не хватает только архивирования (хотя можно обрабатывать логи), люди обходятся скриншотами. Зато единая среда, можно заглянуть "вовнутрь" в отладочных целях. Понимаю, что это избыточная возможность для оператора, но для "телефонной" отладки достаточно немного соображающего в компьютерах оператора.

  4. #4

    По умолчанию

    Ну, я про красивость, а не распространенность (с ней не поспоришь).
    А насчет примера у меня такая строчка может быть в цикле (20 одинаковых объектов), плюс расчетные задачи (выход целое или плавающее, а не логическое; тот же ПИД). Мне удобнее изменить в одном месте, чем в 20 сразу при изменении логики. Или приведенный пример; он тоже на LD реализуется?
    Код:
    tim3(in:=TRUE,pt:=t#5s);
    IF tim3.Q THEN
    	time4:=DINT_TO_WORD(TIME_TO_DINT(tim2.ET)/60000);
    	IF tp1c<>tp1co THEN
    		n:=n+1;
    		ss:=ss+tp1;
    	ELSE
    		tp1:=t;
    	END_IF;
    	IF tp2c<>tp2co THEN
    		n:=n+1;
    		ss:=ss+tp2;
    	ELSE
    		tp2:=t;
    	END_IF;
    	IF tp3c<>tp3co THEN
    		n:=n+1;
    		ss:=ss+tp3;
    	ELSE
    		tp3:=t;
    	END_IF;
    	IF tp4c<>tp4co THEN
    		n:=n+1;
    		ss:=ss+tp4;
    	ELSE
    		tp4:=t;
    	END_IF;
    	IF tp5c<>tp5co THEN
    		n:=n+1;
    		ss:=ss+tp5;
    (*	ELSE
    		tp5:=t; *)
    	END_IF;
    	tim3(in:=FALSE);
    	tp1co:=tp1c; tp2co:=tp2c; tp3co:=tp3c; tp4co:=tp4c; tp5co:=tp5c;
    	IF n<>0 THEN
    		t:=ss/n;
    	END_IF;
    	ttemp:=t;
    END_IF;

  5. #5

    По умолчанию

    Andy!

    Может проще завести массивы:
    tpc[0..20]
    tpc0[0..20]
    tp[0..20]

    и в цикле опрашивать функцию, в которой входной переменной будет индекс массива i и выполняется:
    Код:
    	IF tpc[i]<>tpco[i] THEN
    		n:=n+1;
    		ss:=ss+tp[i];
    	ELSE
    		tp[i]:=t;
    	END_IF;
    Да и саму двадцатку объявить глобальной константой и менять при увеличении числа объектов.

    С уважением,
    Herzog

  6. #6

    По умолчанию

    Нет, это разные случаи. В приведенном примере используются переменные из области ВВ, для массива надо их переприсваивать и т.д.

  7. #7

    По умолчанию

    Цитата Сообщение от Andy Посмотреть сообщение
    Или приведенный пример; он тоже на LD реализуется?
    Почему нет? Правой кнопкой мышки щелкаете, Конвертировать объект… в LD. Получится зуб в зуб с ветвлениями. Руками с нуля будет красивее.

    Все языки приводятся препроцессором в один собственный формат. Это значит: 1. Любую программу можно перевести на любой язык. 2. Машинный код при этом не изменится. 3. Выбор языка исключительно дело вкуса.

    Переделывать тут нет никакого смысла. Если думать в IF ELSE и так писать на LD, то получается жуть. Поэтому и говорю, что красиво писать на LD нужно уметь и думать не так как на текстовых языках. Мне лично ST ближе. Есть мастера, которые делают на LD изящные программы.

    * Область ВВ позволяет объявлять переменные ‘внахлест’. Можно положить массив поверх входов. Будет типа union в Си.

    * ; после END_IF в ST не нужна, дает пустой оператор.

  8. #8

    По умолчанию

    Насчет "внахлест" - это ж надо описывать переменные не в дереве конфигурации; хотя, когда проект устоялся (не добавляются внешние переменные), можно и переделать под такой вариант.
    Про "думать на LD" - наверное, да, мешает опыт программирования на процедурных языках. Может, когда-нибудь прозрею?

  9. #9

    По умолчанию

    Как это внахлёст адреса? Подскажите

  10. #10

    По умолчанию

    В области в/в и в маркерной (M) переменные кладутся на определенные адреса по AT. Никто не запрещает положить 2 или более переменных на один адрес. Компилятор выдаст предупреждение. Оно опционально отключаемое.

    Например, можно объявить текстовую строку в М памяти и на этот же адрес положить байтовый массив. Получим легкий побайтовый доступ к строке.

Страница 3 из 6 ПерваяПервая 12345 ... ПоследняяПоследняя

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •