Страница 732 из 1041 ПерваяПервая ... 232632682722730731732733734742782832 ... ПоследняяПоследняя
Показано с 7,311 по 7,320 из 10404

Тема: ВОПРОС-ОТВЕТ (отвечаем на простые вопросы от новичков)

  1. #7311

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    я ни чего не писал ни про компиляцию ни про ресурсы процессора, я говорю про интерпретатор, есть какие то же разумные рамки в программировании холстов, какой смысл что то кодить в "жопе мира" когда не охватываешь что находиться в верхнем левом углу холста
    А я охватил левый верхний угол. Просто блоки размещал сверху вниз, т.к. так показалось удобнее(ставить все блоки слева направо и потом вниз мне показалось не так удобно). И в таком размещении место быстро закончилось. И это стало неожиданностью, т.к. не особо и большая программа.
    Представьте, что вы пишете свой код, а у вас в какой то момент начинает отказывать редактор смещать курсор вниз...неожиданно.

    Пример с одним единственным присваиванием написал лишь как комментарий к вашим словам "ну конечно есть, процессор же выполняет машинный код а не художества в виде квадратиков, на все эти линии связи отводится определенный объем памяти под ссылки с одного элемента к другому, случается так что он заканчивается". В том плане, что объем памяти в данном случае совсем не причем. Я сомневаюсь, что белое пустое поле занимает какой-то объем памяти...

  2. #7312
    Пользователь Аватар для Rednaxel
    Регистрация
    15.05.2015
    Адрес
    Минск
    Сообщений
    19

    По умолчанию

    Цитата Сообщение от Andy86-j Посмотреть сообщение
    ... Хотя изначально вопрос то был в другом - есть ли ограничения по размещения блоков в CFC. Судя по всему оно все таки есть.
    Подтверждаю: есть такое ограничение. При чем судя по всему никто из нас здесь с ним не сталкивался.
    И о чем это говорит по-вашему?

    Я считаю что как раз сказалось отсутствие системного подхода + чересчур длинные имена переменных съели все место.
    Кроме того, вот эту булевскую логику и/или/если однозначно лучше всего писать на ST: будет гораздо компактнее и нагляднее, ну после некоторой растяжки мозгов конечно
    Например, на вскидку, не вдаваясь в подробности вашей задачи, вот этот блок открытие байпасного клапана
    (откачка камеры фор насосом)
    почему бы для пробы не переписать на ST?
    Да в конце концов, если поджимает время, выделить эту часть простым копированием в отдельный блок на том же CFC.

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

  3. #7313

    По умолчанию

    Также подтверждаю, ограничение по размеру холста есть, я на него натыкался самолично. Расстраиваться по этому поводу бессмысленно, ждать, что что-то изменится - тем более бессмысленно, поэтому нужно "понять и простить". И двигаться дальше, например, разбив всю программу на несколько фрагментов, каждый из которых создать в виде собственного POU, или... в общем вариантов много.

  4. #7314

    По умолчанию

    Здравствуйте, подскажите пж такой вопрос - с точки зрения экономии времени цикла ПЛК и размера кода как лучше:

    Например:
    A,B:bool;

    1. A:=B;
    или
    2. If A<>B Then A:=B;End_if;

    СПС

  5. #7315
    Пользователь Аватар для Rednaxel
    Регистрация
    15.05.2015
    Адрес
    Минск
    Сообщений
    19

    По умолчанию

    Цитата Сообщение от a_gricaj Посмотреть сообщение
    Здравствуйте, подскажите пж такой вопрос - с точки зрения экономии времени цикла ПЛК и размера кода как лучше:
    СПС
    Скорее Вы уважаемый сотрете всю клавиатуру набирая код, прежде чем это заметно повлияет на время выполнения вашей программы
    Ну если конечно не будете пытатся "загонять ПЛК в угол" какими-нибудь циклами или загружая его интенсивными сетевыми опросами.
    Так что не парьтесь на эту тему, пишите как Вам удобнее, лижь бы задача решалась, а оптимизировать будете когда уже "руку набъете".

    P.S. Надеюсь Вы понимаете что результат выполнения вариантов в Вашем примере не всегда одинаков?

  6. #7316

    По умолчанию

    Цитата Сообщение от Rednaxel Посмотреть сообщение
    Скорее Вы уважаемый сотрете всю клавиатуру набирая код, прежде чем это заметно повлияет на время выполнения вашей программы
    Ну если конечно не будете пытатся "загонять ПЛК в угол" какими-нибудь циклами или загружая его интенсивными сетевыми опросами.
    Так что не парьтесь на эту тему, пишите как Вам удобнее, лижь бы задача решалась, а оптимизировать будете когда уже "руку набъете".

    P.S. Надеюсь Вы понимаете что результат выполнения вариантов в Вашем примере не всегда одинаков?
    Например: типовая задача управление эл. двигателем - использую один FB c разными областями памяти, таких двигателей 100 шт. "клавиатура не стерлась", а время цикла выросло.....
    Нет, не понимаю, поясните , почему результат выполнения вариантов в моем примере не всегда одинаков....

  7. #7317
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,224

    По умолчанию

    Цитата Сообщение от a_gricaj Посмотреть сообщение
    Здравствуйте, подскажите пж такой вопрос - с точки зрения экономии времени цикла ПЛК и размера кода как лучше:

    Например:
    A,B:bool;

    1. A:=B;
    или
    2. If A<>B Then A:=B;End_if;

    СПС
    оба варианта конвертируйте из ST в IL, гипотетически представте что это машинный код и посчитайте количество инструкций, которое выполнит процессор. Так то любой компилятор должен еще и сам оптимизировать код, так что может в машинных кодах они обе будут одинаково выполнятся
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  8. #7318

    По умолчанию

    вот, что получилось:

    LD B //A:=B;
    ST A

    LD A //If A<>B Then A:=B;End_if;
    NE B
    NOT

    JMPC else1_0

    LD B
    ST A

    else1_0:
    end1_0:

    получается, что "If A<>B Then A:=B;End_if;" - плохо, и код больше, и если "A<>B" так еще плюс две операции, я правильно понял?

  9. #7319

    По умолчанию

    Ребята, проясните плз. Пару линий написал на сименсе. Но в целом работаю на микроконтроллерах.
    Пришлось восстанавливать оборудование сделанное другими. Оно на ПЛК110 + МВ110 + ИП320.
    В принципе особо вопросов не возникло и сам контроллер работает.
    Завязка возникла с ИП320.
    Здесь 2 нюанса. Не знаю насколько важных. ПЛК остался старый, а ИП заменили на новый и сейчас ИП320[М01].
    Я сделал ПЛК мастером, а МВ110 и ИП320 слэйвом и помадил на один шнурок.
    МВ110 работает как часы. Вопросов нет.
    ИП тоже, в принципе работает. Только одну хрень не догоняю.
    ===
    У меня есть уставка температуры, которая задаётся с ИП.
    Я не нашёл, каким образом задать там начальное значение.
    Я его задаю в ПЛК и делаю его RETAIN.
    Но в цикле работы с панелью, оно берётся с панели и затирается!
    Мне бы сделать его register input/ output, при связи с панелью, но такого регистра я не вижу.
    Не могу понять - мне что в конфигураторе плк делать 2 регистра с одним адресом или как?
    Мне надо чтобы оператор панели видел к примеру "50" и мог изменить на 55. Условно. А он видет 0.
    В сименсе там просто зеркало делается. Там вообще я операцию связи с панелью не выполняю.
    Просто указываю по каждому тегу вид операции. Например время обновления. Причём могу указать "по изменению" или "по появлению".
    То есть если в данный момент моя температура не видна на экране, то она и передаваться в панель не будет.
    Этим обеспечивается максимальная пропускная способность шины. Загрузку я могу посмотреть прямо в работе.

  10. #7320
    Пользователь Аватар для Rednaxel
    Регистрация
    15.05.2015
    Адрес
    Минск
    Сообщений
    19

    По умолчанию

    Цитата Сообщение от sasav Посмотреть сообщение
    ........
    У меня есть уставка температуры, которая задаётся с ИП.
    Я не нашёл, каким образом задать там начальное значение.
    Я его задаю в ПЛК и делаю его RETAIN.
    Понимаю Ваше непонимание после Siemens

    Но здесь все немного по другому. Просто сделайте панель мастером. Она будет хранить ваши Retain, доверьтесь ей, она так задумана.

    Если есть возможность, посадите ее на отдельную линию RS485 или RS232 - так будет проще в плане диагностики.

    Естественно это будет у Вас отдельная ветка в конфигурации ПЛК: Modbus (slave) ну или OWEN (slave), или какой там протокол выбираете.
    Успехов!

Страница 732 из 1041 ПерваяПервая ... 232632682722730731732733734742782832 ... ПоследняяПоследняя

Метки этой темы

Ваши права

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