Страница 8 из 9 ПерваяПервая ... 6789 ПоследняяПоследняя
Показано с 71 по 80 из 83

Тема: Подсветка переменных записываемых в конце цикла

  1. #71
    Пользователь Аватар для Сергей0308
    Регистрация
    25.06.2011
    Адрес
    Галактика Андромеды (M31)
    Сообщений
    8,308

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    А зачем вообще нужно разделять 16/32?
    Если откуда прилетело именно int16 - то сделать int16_to_32
    Далее все операции абсолютно одинаковы.
    А для отправки - так все равно улетает младшее слово.
    А вопросы переполнения - так это не здесь, а "в консерватории нужно что-то поправить"
    А как их можно не разделять?
    Например, мы получили код числа "65535", в INT16 это будет число "-1", а в INT32 это будет число "65535".
    В смысле, без знания диапазона, правильное преобразование не возможно!
    Последний раз редактировалось Сергей0308; 30.03.2024 в 18:50.
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

  2. #72
    Пользователь Аватар для Сергей0308
    Регистрация
    25.06.2011
    Адрес
    Галактика Андромеды (M31)
    Сообщений
    8,308

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Легко.



    (откудато - извне) Т.е. заполнить биты 16..31й 15тым. И всё.
    Обратно - не требуется
    Что-то я до конца не пойму, так получается всё-таки надо знать тип данных(INT/DINT)?
    А, если мы знаем тип данных нет и проблем, не надо тогда изощряться изощрёнными способами!
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

  3. #73
    Пользователь
    Регистрация
    09.12.2013
    Адрес
    Ставрополь
    Сообщений
    1,191

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Легко.
    (откудато - извне) Т.е. заполнить биты 16..31й 15тым. И всё.
    Обратно - не требуется
    То же непонятно. В любом случае либо приемная часть должна знать разрядность передающей части, либо передающая часть знать разрядность приемной части и подстраиваться под нее. Так почему сразу не указать, что у нас 16 бит или 32.

  4. #74
    Пользователь Аватар для Сергей0308
    Регистрация
    25.06.2011
    Адрес
    Галактика Андромеды (M31)
    Сообщений
    8,308

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    !?


    Угу. Делать разные функции для 16 и 32, настраивать для 32 бит, для 16 бит - это же не извращение.
    А через real делать базовые машиные операции - так это вообще нормуль нормулёв.
    Ну, это "плата" за универсальность, в смысле никто не запрещает создать отдельные макросы для каждого диапазона!

    В моём варианте это минимальная плата, всего один SEL:

    Плата за универсальность.PNG

    Что сводит к минимуму необходимость в отдельных макросах!

    Мне кажется один из самых универсальных вариантов для расчёта отрицательной части диапазона Пётр из Минска предлагал, в смысле, инверсия(кода числа) + 1, получается значение отрицательного числа по модулю, я свой вариант предложил, мне он проще показался!
    Последний раз редактировалось Сергей0308; 30.03.2024 в 21:50.
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

  5. #75
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,268

    По умолчанию

    В моём варианте это минимальная плата, всего один SEL:
    в моем варианте это приведение внешних i16 в i32.

    в смысле никто не запрещает создать отдельные макросы для каждого диапазона!
    и в моем варианте не нужно создавать отдельные макросы для каждого диапазона. Он 1.

    инверсия(кода числа) + 1
    0 - u
    Последний раз редактировалось Валенок; 30.03.2024 в 21:49.

  6. #76

    По умолчанию

    Цитата Сообщение от Сергей0308 Посмотреть сообщение
    Ну, это "плата" за универсальность, в смысле никто не запрещает создать отдельные макросы для каждого диапазона!
    Что сводит к минимуму необходимость в отдельных макросах!

    Мне кажется один из самых универсальных варианта Пётр из Минска предлагал, в смысле, инверсия + 1, получается значение отрицательного числа по модулю, я свой вариант предложил, мне он проще показался!
    Если есть функции для 32 битных, типа DINT, то как сказал Валенок, для 16 битных они не нужны. Скрин 1 Передача через 1 регистр.jpg
    Вы передаёте 1 регистр если число меньше 65535 и через 2 регистра если больше и 32 битными функциями работаете с любыми переменными.
    На скрине передан 1 регистр, а функции 32 битные. На ST функции универсальные, выложил выше. Переключатель делать не стал, хотя это возможно.
    Последний раз редактировалось kondor3000; 30.03.2024 в 22:07.

  7. #77
    Пользователь Аватар для Сергей0308
    Регистрация
    25.06.2011
    Адрес
    Галактика Андромеды (M31)
    Сообщений
    8,308

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Если есть функции для 32 битных, типа DINT, то как сказал Валенок, для 16 битных они не нужны. Скрин 1 Передача через 1 регистр.jpg
    Вы передаёте 1 регистр если число меньше 65535 и через 2 регистра если больше и 32 битными функциями работаете с любыми переменными.
    На скрине передан 1 регистр, а функции 32 битные. На ST функции универсальные, выложил выше. Переключатель делать не стал, хотя это возможно.
    И Вы считаете что эти преобразования проще чем один SEL?
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

  8. #78

    По умолчанию

    Цитата Сообщение от Сергей0308 Посмотреть сообщение
    И Вы считаете что эти преобразования проще чем один SEL?
    Сергей, вы меня удивляете, какие преобразования? Лоджик по умолчанию передаёт младший регистр (если не указать 2 регистра), хотя в программе UDINT. На скрине я просто показал происходящее.

  9. #79
    Пользователь Аватар для Сергей0308
    Регистрация
    25.06.2011
    Адрес
    Галактика Андромеды (M31)
    Сообщений
    8,308

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Сергей, вы меня удивляете, какие преобразования? Лоджик по умолчанию передаёт младший регистр (если не указать 2 регистра), хотя в программе UDINT. На скрине я просто показал происходящее.
    Я то это в принципе рассматриваю, без привязки к конкретному случаю, в смысле, к сетевым переменным!
    ОЛ в принципе не умеет работать с 32 -х битными целочисленными сетевыми переменными в режиме слейв(подчинённого устройства), в смысле, в любом случае, их придётся разделять на два соседних регистра. Может со временем это поправят, но это не точно!
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

  10. #80
    Пользователь Аватар для Сергей0308
    Регистрация
    25.06.2011
    Адрес
    Галактика Андромеды (M31)
    Сообщений
    8,308

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Если взять из слейва нужно int16, то int16_to_int32 и работаете c int32
    Если отправлять в слейв нужно int16 - то работаете и кладете int32 и всё (уже сказали же)
    Если взять из слейва нужно int32 - то склеиваете. Во всех вариантах. Включая Ваш. Но т.к там лежало int32 то и работаете c int32 как и выше.
    Если отправлять в слейв нужно int32 - то кладете части. Во всех вариантах. Включая Ваш. Но т.к нужно отправлять int32, то и работаете c int32 как и выше.

    Т.е. int32 подойдет во всех случаях, а int16 - в некоторых. (Дальше про стиральный порошок который лучше)
    Вроде понял, что Вы хотите! В смысле всегда использовать один макрос DINT(INT32)_TO_FLOAT. Если надо преобразовать INT(INT16), то предварительно преобразовываете его в DINT(INT32).
    Короче, мне кажется это не очень логичным, в смысле, чаще всё-таки INT(INT16) встречается, а DINT(INT32) намного реже. Вам надо всё равно знать, что это INT(INT16), иначе правильное преобразование невозможно, уже писал об этом, даже пример приводил! И, мне кажется в FBD проще значение INT(INT16) сразу преобразовать во FLOAT, чем ваше промежуточное преобразование в DINT(INT32). Если Вы говорите в ST это проще, поверю Вам на слово(я в ST не шарю), но это получается частный случай, не более!
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

Страница 8 из 9 ПерваяПервая ... 6789 ПоследняяПоследняя

Похожие темы

  1. ПР200 подсветка дисплея
    от Dimzon в разделе Разработки
    Ответов: 4
    Последнее сообщение: 03.04.2021, 17:54
  2. Сбой записываемых параметров
    от Bariy в разделе Программируемые реле
    Ответов: 11
    Последнее сообщение: 12.02.2020, 00:16
  3. ПР200 подсветка экрана.
    от mandrew в разделе Среда программирования OWEN Logic
    Ответов: 7
    Последнее сообщение: 23.05.2019, 16:14
  4. Ответов: 14
    Последнее сообщение: 18.11.2017, 14:53
  5. подсветка ПЛК63
    от Egor в разделе ПЛК63/73
    Ответов: 7
    Последнее сообщение: 24.02.2011, 13:54

Ваши права

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