Страница 31 из 35 ПерваяПервая ... 212930313233 ... ПоследняяПоследняя
Показано с 301 по 310 из 353

Тема: Вопрос-ответ по Телемеханика ЛАЙТ

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

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Сергей Сисейкин
    Гость

    По умолчанию

    Добрый день.
    Спасибо за примеры и подробные комментарии.
    Исполнители скрипта действительно разные в режиме отладки и в режиме работы.
    Указанные проблемы подтверждаем, будем исправлять:
    1) r2 := y/4;
    если y - целочисленная переменная, то производится целочисленное деление; используйте пока вещественную переменную
    2) k:=5 mod 3;
    операция mod приводит к неработоспособности скрипта (и div тоже)
    3) for i:=1 to 10 do
    цикл for выполняется на одну итерацию меньше, чем должен; используйте пока циклы while или repeat-until

  2. #2

    По умолчанию

    Добрый день

    У None-target (с запуском Enlogic эмулятором) есть ограничение по количеству входов/выходов при использовании опроса по протоколу modbus?
    Столкнулся с ограничением в 3 параметра или это ограничение бесплатной версии?

  3. #3
    Сергей Сисейкин
    Гость

    По умолчанию

    Цитата Сообщение от ryuraa Посмотреть сообщение
    Добрый день

    У None-target (с запуском Enlogic эмулятором) есть ограничение по количеству входов/выходов при использовании опроса по протоколу modbus?
    Столкнулся с ограничением в 3 параметра или это ограничение бесплатной версии?
    Добрый день.

    Ограничение на количество переменных в демо-версии нет. Только время работы.
    Какой прибор вы опрашиваете? из библиотеки поддержанных устройств? или прибор для которого самостоятельно написали карту адресов? если карту писали самостоятельно, то у вас в ней ошибка, не правильно выбран тип данных, функция и т.д. отсюда будут либо недостоверные значения, либо "-" в режиме опроса виртуального контроллера.

  4. #4

    По умолчанию

    Доброго времени суток.
    2 вопроса по телемеханике лайт.
    Первый: в контроллере создаю строковую переменную, как её можно изменить из визуализации?
    3.png

    Второй: есть скрипт, который в зависимости от настройки делит переменную на 1, 10 или 100. Переменная - ток, читается из прибора БЗП-01. При отладке скрипта выходная переменная нормально делится и отображаются все знаки после запятой. Но в таблице "Входы/выходы функционального блока" после запятой нули. Например, получили переменную 1234, в окне отладки скрипта при делении на 100 получим 12,34, а в таблице "Входы/выходы функционального блока" будет только 12,00. В чем проблема?

    Программа для одного канала:

    var Inom, ain, bin, cin: integer;
    var aout, bout, cout: real;
    {---------- main program -----------}
    begin
    ReadInteger('Inom',Inom);
    ReadInteger('Iain',ain);
    if Inom < 31 then begin
    aout := ain / 100;
    end
    else begin
    if Inom < 301 then begin
    aout := ain / 10;
    end;
    end;
    if Inom > 300 then begin
    aout := ain;
    end;
    WriteFloat('Iaout', aout);
    end.

    Типы переменных:
    переменные.png

  5. #5
    Сергей Сисейкин
    Гость

    По умолчанию

    Цитата Сообщение от Neru Посмотреть сообщение
    Доброго времени суток.
    2 вопроса по телемеханике лайт.
    Первый: в контроллере создаю строковую переменную, как её можно изменить из визуализации?
    3.png

    Второй: есть скрипт, который в зависимости от настройки делит переменную на 1, 10 или 100. Переменная - ток, читается из прибора БЗП-01. При отладке скрипта выходная переменная нормально делится и отображаются все знаки после запятой. Но в таблице "Входы/выходы функционального блока" после запятой нули. Например, получили переменную 1234, в окне отладки скрипта при делении на 100 получим 12,34, а в таблице "Входы/выходы функционального блока" будет только 12,00. В чем проблема?

    Программа для одного канала:

    var Inom, ain, bin, cin: integer;
    var aout, bout, cout: real;
    {---------- main program -----------}
    begin
    ReadInteger('Inom',Inom);
    ReadInteger('Iain',ain);
    if Inom < 31 then begin
    aout := ain / 100;
    end
    else begin
    if Inom < 301 then begin
    aout := ain / 10;
    end;
    end;
    if Inom > 300 then begin
    aout := ain;
    end;
    WriteFloat('Iaout', aout);
    end.

    Типы переменных:
    переменные.png
    Здравствуйте.

    К сожалению переменные типа string в Телемеханике не работают.

    По второму вопросу, уже ранее писали (20.02.2020), о том что при отладке используется одни исполнители скрипта, в рабочем режиме другие.
    пока данная проблема не решена.

  6. #6

    По умолчанию

    Цитата Сообщение от Сергей Сисейкин Посмотреть сообщение
    Здравствуйте.

    К сожалению переменные типа string в Телемеханике не работают.

    По второму вопросу, уже ранее писали (20.02.2020), о том что при отладке используется одни исполнители скрипта, в рабочем режиме другие.
    пока данная проблема не решена.
    Планируется ли наладить работу со строковыми переменными?

  7. #7

    По умолчанию

    нет, не планируется ( на данный момент и в ближайшее время точно нет)
    Инженер направления "Энергетика"
    https://energy.owen.ru/

  8. #8

    По умолчанию

    Цитата Сообщение от Neru Посмотреть сообщение
    Доброго времени суток.
    2 вопроса по телемеханике лайт.
    Первый: в контроллере создаю строковую переменную, как её можно изменить из визуализации?
    3.png

    Второй: есть скрипт, который в зависимости от настройки делит переменную на 1, 10 или 100. Переменная - ток, читается из прибора БЗП-01. При отладке скрипта выходная переменная нормально делится и отображаются все знаки после запятой. Но в таблице "Входы/выходы функционального блока" после запятой нули. Например, получили переменную 1234, в окне отладки скрипта при делении на 100 получим 12,34, а в таблице "Входы/выходы функционального блока" будет только 12,00. В чем проблема?

    Программа для одного канала:

    var Inom, ain, bin, cin: integer;
    var aout, bout, cout: real;
    {---------- main program -----------}
    begin
    ReadInteger('Inom',Inom);
    ReadInteger('Iain',ain);
    if Inom < 31 then begin
    aout := ain / 100;
    end
    else begin
    if Inom < 301 then begin
    aout := ain / 10;
    end;
    end;
    if Inom > 300 then begin
    aout := ain;
    end;
    WriteFloat('Iaout', aout);
    end.

    Типы переменных:
    переменные.png
    Как вариант, можно изменить скрипт следующим образом - и он будет работать уже правильно:

    var Inom, ain, bin, cin: integer;
    var aout, bout, cout, temp: real;
    {---------- main program -----------}
    begin
    ReadInteger('Inom',Inom);
    ReadInteger('Iain',ain);
    temp:=ain;

    if Inom < 31 then begin
    aout := temp / 100;
    end
    else begin
    if Inom < 301 then begin
    aout := ain / 10;
    end;
    end;
    if Inom > 300 then begin
    aout := ain;
    end;
    WriteFloat('Iaout', aout);
    end.

    test.png

  9. #9

    По умолчанию

    Спасибо, помогло

  10. #10

    По умолчанию

    Добрый день.
    Возможно ли определить состояние определенного бита переменной в стрипте?

Страница 31 из 35 ПерваяПервая ... 212930313233 ... ПоследняяПоследняя

Похожие темы

  1. ВОПРОС-ОТВЕТ (отвечаем на простые вопросы от новичков)
    от Serge_UA в разделе ПЛК (среда CoDeSys V2.3)
    Ответов: 11868
    Последнее сообщение: Вчера, 17:54
  2. CODESYS V3.5. Вопросы и ответы
    от ООО "БЛС инжинеринг" в разделе ПЛК (среда CODESYS V3.5)
    Ответов: 8751
    Последнее сообщение: 30.03.2026, 14:35
  3. Экспресс вопрос (ответ)
    от rovki в разделе Программируемые реле
    Ответов: 8821
    Последнее сообщение: 13.03.2026, 22:29
  4. вопрос-ответ , или а поговорить????
    от Павел Братковский в разделе Трёп (Курилка)
    Ответов: 10
    Последнее сообщение: 24.01.2018, 11:05
  5. Вопрос-ответ по Телемеханика ЛАЙТ
    от Popov Boris в разделе В разработке
    Ответов: 80
    Последнее сообщение: 03.11.2016, 15:24

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

Ваши права

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