Показано с 1 по 10 из 353

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

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

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

    По умолчанию

    Цитата Сообщение от rtn Посмотреть сообщение
    Обойдусь думаю без FOR и DIV/MOD, и напишу-ка скрипт считающий количество дней с 01.01.1980 до 01,01,2020:
    var y,d,DinY:word;
    r1,r2:real;
    begin
    y:=1980;
    d:=0;
    while y<2020 do
    begin
    if round(y/4)=(y/4) then DinY:=366 else DinY:=365;
    d:=d+DinY;
    //********
    r1:=round(y/4);
    r2:=y/4;
    //********
    y:=y+1;
    end;
    WriteInteger('var_d',d);
    WriteInteger('var_y',y);
    WriteFloat('var_r1',r1);
    WriteFloat('var_r2',r2);
    end.
    В редакторе скрипта опять всё замечательно получил нужные 14610 дней, а при запуске в эмуляторе получается уже 14640 дней.
    Для поиска косяка добавлены переменные r1 и r2, так как все года вдруг стали високосными.
    Редактор скриптов:
    var_r1=505
    var_r2=504.75
    Эмулятор:
    var_r1=504.00
    var_r2=504.00
    Откуда 504.00???? это же итерация для 504*4=2016!!!!!! года, т.е. пред,пред,пред последняя.
    Что происходит с локальными переменными в циклах? Возможно я что-то не понимаю, но кажется скрипты абсолютно не работоспособны. Как будто два различных компилятора. Один правильный для редактора кода и отладки а второй- кривой в эмуляторе и контроллере.
    Проблему подтверждаем, переадресовываем ее нашим разработчикам. Как только получу ответ, я его Вам перешлю.

  2. #2

    По умолчанию

    Цитата Сообщение от Сергей Сисейкин Посмотреть сообщение
    Проблему подтверждаем, переадресовываем ее нашим разработчикам. Как только получу ответ, я его Вам перешлю.
    Тогда уж и про проблемы с операторами DIV/MOD и циклом FOR (предыдущий пост) передайте пожалуйста.
    И если можно предложение: Запускать скрипт из окна редактора скрипта в отдельном потоке отличном от GUI. В случае ошибочного бесконечного цикла вешается наглухо всё приложение "Контроллеры" с последующей потерей данных. И кнопочку в этом случае нужно добавить "Остановить". Красный квадратик после зеленого треугольника в панели инструментов к примеру.

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

    По умолчанию

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

Похожие темы

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

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

Ваши права

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