Страница 59 из 135 ПерваяПервая ... 949575859606169109 ... ПоследняяПоследняя
Показано с 581 по 590 из 1349

Тема: Hardella IDE

  1. #581

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    Собственно, вопрос: какого типа является константа 1 в выражении b - 1?
    Это BYTE? SINT? USINT? INT?
    Отвечает Игорь Петров:

    123.png

  2. #582
    Пользователь
    Регистрация
    24.07.2012
    Адрес
    Россия
    Сообщений
    1,492

    По умолчанию

    А я думаю надо делать явно
    w := BYTE_TO_WORD(b - 1);
    иначе
    16#ffff

  3. #583

    По умолчанию

    Цитата Сообщение от Rake Runner Посмотреть сообщение
    "минимально необходимый".
    И что является минимально необходимым для 1?
    BYTE, SINT или USINT? (все три типа занимают 1 байт и могут принимать значение 1)

    Я понимаю, что "можно написать USINT#1". Но кто-нибудь реально так пишет?
    Много ли кто знает, что так вообще можно написать?

    Если честно, я склоняюсь к модели "делать все вычисления в знаковых типах".
    Но если так делать, то dword_var := dword_var + 1; начинает ругаться "вы тут приводите DINT к DWORD'у" И тут
    • либо разрешать такое приведение (делать так, чтобы не ругалось)
    • либо требовать запись dword_var := TO_DWORD(dword_var + 1); Выглядит, конечно, неуклюже.
    • либо переучивать всех на DINT тип: dint_var := dint_var + 1; "математически" правильно, но чего-то я сомневаюсь в осуществимости.

  4. #584

    По умолчанию

    Я бы предположил, что USINT, поскольку 1 - это положительное (так что не имеет смысла делать его SINT) целое число (так что не BYTE, который bit string).
    Но лучше уточнить у первоисточника (IEС-61131 можно без особых проблем нагуглить).

  5. #585

    По умолчанию

    Цитата Сообщение от Rake Runner Посмотреть сообщение
    Я бы предположил, что USINT, поскольку 1 - это положительное (так что не имеет смысла делать его SINT) целое число (так что не BYTE, который bit string).
    Но лучше уточнить у первоисточника (IEС-61131 можно без особых проблем нагуглить).
    В том-то и дело, что в стандарте не сказано как должно работать.
    Я пересмотрел ещё раз
    IEC STANDARD 61131-3 Second edition 2003-01, Part 3:Programming languages

    Там по поводу typed literals сказано только то, что они есть.
    Правил вычисления там нет.
    Разве что сказано, как работает деление отрицательных чисел, и что в результате 0/0 должно получаться 0.

  6. #586

    По умолчанию

    А я думаю есть еще один хороший источник - это OSCAT
    Я раньше тоже не совсем понимал зачем там все переменные (которые мне попадались, за всю библиотеку не скажу) знаковые. А константы имеют вид INT#1. Сейчас сам так пишу.

  7. #587
    Пользователь
    Регистрация
    31.07.2013
    Адрес
    Аркаим
    Сообщений
    1,033

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    В случае с CoDeSys каждый второй раз удивляются "откуда берётся fffff в энкодерах", слёзно просят DINT значение энкодера и прочее.
    Не уверен, что мое наблюдение будет полезным, но все же выскажусь.
    В моем ПРУ-проекте переменная показаний энкодера имеет тип WORD, в ПЛЦ_ПРГ я присваиваю это значение переменной типа INT. Никаких ошибок ни при компиляции, ни при работе не возникает. Т.е. без всяких дополнительных преобразований. Просто делаю ПЛЦ_ПРГ_vol (INT) := ПРУ_vol (WORD). Естественно 16#FFFF в ПРУ-перемнной отображаются в ПЛЦ-ПРГ как -1. Результат устраивает.

  8. #588

    По умолчанию

    Вопрос к В.Ситникову. Что будет, если во время работы ШД поменять quantity в SteppersConfig_PruMemoryTransfer не передергивая enable ?
    Последний раз редактировалось Вольд; 25.01.2017 в 13:36.

  9. #589

    По умолчанию

    Цитата Сообщение от Вольд Посмотреть сообщение
    Вопрос к В.Ситникову. Что будет, если во время работы ШД поменять quantity в SteppersConfig_PruMemoryTransfer не передергивая enable ?
    Не надо так делать.

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

  10. #590

    По умолчанию

    Добрый вечер.

    STEPPER2_Enc_PRU0_stepper_accel_ramp : WORD;
    STEPPER2_Enc_PRU0_stepper_decel_ramp : WORD;

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

Страница 59 из 135 ПерваяПервая ... 949575859606169109 ... ПоследняяПоследняя

Ваши права

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