Показано с 1 по 9 из 9

Тема: В ФБ ST не компилируется цикл FOR

  1. #1

    По умолчанию В ФБ ST не компилируется цикл FOR

    PROGRAM MAIN_PROGRAM

    VAR_INPUT
    N_t:Byte;
    END_VAR
    var
    i:byte;
    end_var
    VAR_OUTPUT
    out:real;
    END_VAR

    (*TODO: TYPE PROGRAM CODE HERE*)

    FOR i:=1 TO N_t DO
    out:=i/10;
    END_FOR;
    out:=i/10;
    END_PROGRAM


    Запущена компиляция.
    D:\MasterSCADA Projects\Projects\stend_1\Config\STtoSharpSolution \p383\code.st(24,1) : Ошибка FOR i:=1 TO N_t DO: Оператор FOR:ST.SemanticError.ExpectedExpressionOfType
    Компилируем p383
    Ошибка CS5001: Программа "d:\MasterSCADA Projects\Projects\stend_1\Config\STtoSharpSolution \p383\obj\x86\Debug\p383.exe" не содержит статический метод "Main", подходящий для точки входа
    Компиляция провалена. (00:00:01.1670667)

    В чем проблема?

    P.S.
    3.8.0.58188 3.8(RT32ReleaseMax)_17_04_21_13_34
    Лицензионная версия. (Ограниченная версия)
    Ограничение на число параметров OPC - 32.
    Ограничение на число задействованных выходов ФБ - 32.
    Ограничение на число связей с другими компьютерами - 32.
    Ограничение на число экземпляров - 32.
    MSRT-HDA-Client

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

    По умолчанию

    байт не является числом, сделайте переменные INT-ом и всё должно получиться
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

  3. #3

    По умолчанию

    Спасибо!
    заработало)

  4. #4

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    байт не является числом, сделайте переменные INT-ом и всё должно получиться
    А почему в CoDeSys с байтом катит ?

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

    По умолчанию

    Цитата Сообщение от IVM Посмотреть сообщение
    А почему в CoDeSys с байтом катит ?
    разве на форуме мало примеров, когда разработчики реализуют хотелки пользователей,а потом сталкиваются с попбочными эффектами. Так же и КДС где то сделал облегчение, которое сказывается на программерах пользующих другое ПО, а сименс например поступает как на картинке
    Изображения Изображения
    • Тип файла: png owen.png (6.0 Кб, Просмотров: 32)
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

  6. #6

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    разработчики реализуют хотелки пользователей,а потом сталкиваются с попбочными эффектами.
    И чем чревата эта хотелка в CoDeSys ? Я в операторах CASE в качестве селектора всегда использую переменную типа BYTE или WORD.
    Последний раз редактировалось IVM; 22.11.2017 в 16:18.

  7. #7

    По умолчанию

    Цитата Сообщение от IVM Посмотреть сообщение
    И чем чревата эта хотелка в CoDeSys ? Я в операторах CASE в качестве селектора всегда использую переменную типа BYTE или WORD.
    К сожалению, сам стандарт 61131 крайне странный.
    Технически, там BYTE-WORD-DWORD это не числа, а bit strings. Т.е. они предназначены только для работы с битами.
    При этом, сложение-вычитание этих самых BYTE в стандарте не предусмотрено.

    Но программисты (почему-то!) хотят писать код в духе dwordVar := 1; или dwordVar := dwordVar + 1;
    С точки зрения стандарта вообще непонятно как оно должно работать (и должно ли), но заставлять программистов указывать вручную что-то типа dwordVar := DINT_TO_DWORD(DWORD_TO_DINT(dwordVar) + 1); было бы совсем дико (а, может, и нет).

    CoDeSys пошли по пути автоматических неявных приведений типов (почти любых к любым). А, значит, будут случаи, когда "автоматика" сработает самым неожиданным образом.

    По какому пути пойдут разработчики MS -- интересно.

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

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    По какому пути пойдут разработчики MS -- интересно.
    так ведь дает исключение, путь уже устоявшийся
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

  9. #9

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    так ведь дает исключение, путь уже устоявшийся
    Ну, там же вопрос не про один for, а про систему типов.
    У них any_bit будет поддерживать сложение?

    Например:
    dword_var: DWORD;
    sint_var: SINT;

    dword_var := -1 XOR -2;
    или
    dword_var := BYTE_TO_DWORD(-1 XOR 2);
    или
    dword_var := dword_var + 1;
    или
    dword_var := -1;
    или
    sint_var := -1;
    dword_var := sint_var;
    или
    dword_var := INT_TO_SINT(-1);

    и т.п.

    Про КДС было тут: http://www.owen.ru/forum/showthread....l=1#post232746

Похожие темы

  1. Цикл на языке ST
    от servo в разделе ПЛК1хх
    Ответов: 17
    Последнее сообщение: 06.06.2019, 16:00
  2. Главный цикл
    от fzr125 в разделе ПЛК1хх
    Ответов: 22
    Последнее сообщение: 16.06.2014, 06:44
  3. Oscat не компилируется
    от Safron в разделе ПЛК1хх
    Ответов: 6
    Последнее сообщение: 28.02.2011, 14:12
  4. Ответов: 6
    Последнее сообщение: 05.04.2010, 09:06
  5. Ответов: 3
    Последнее сообщение: 25.09.2008, 18:38

Ваши права

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