Страница 165 из 1044 ПерваяПервая ... 65115155163164165166167175215265665 ... ПоследняяПоследняя
Показано с 1,641 по 1,650 из 10436

Тема: ВОПРОС-ОТВЕТ (отвечаем на простые вопросы от новичков)

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

    По умолчанию

    PUTBIT не совсем соответствует Вашему описанию задачи, либо её не правильно сформулировали, либо не заглядывали во внутрь DC32, потому что в лоджике есть PUTBIT


    ЗЫ на катринке то, что я до этого написал в ST

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

    По умолчанию

    capzap возможно, но работает так же как и в Лоджике DC32.
    Допустил ошибку при копировании функции, сейчас проверю ваш вариант на ST для сравнения.
    Что-то ваш вариант при входном значении 31 выдает 0

    15 на входе должно в dword на выходе дать 1 в 15-м бите. число 32768, не выходит каменный цветок у функции почему-то

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

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    capzap возможно, но работает так же как и в Лоджике DC32.
    Допустил ошибку при копировании функции, сейчас проверю ваш вариант на ST для сравнения.
    Что-то ваш вариант при входном значении 31 выдает 0

    15 на входе должно в dword на выходе дать 1 в 15-м бите. число 32768, не выходит каменный цветок у функции почему-то
    а это была проверка , объявите переменную cnst вместо INT -> DWORD и должно заработать. Начинайте с анализа кода, что и для чего, а не просто бездумное копирование. В лоджике ведь работает? Там просто все числа 32-х разрядные, а в КДС типы бывают и 16-и разрядные

  4. #1644
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,669

    По умолчанию

    ага, уже разобрался. Почитал справку по SHL и заменил все на DWORD

    Вот сижу, соображаю, как заставить свигаться биты по кругу, но не среди 8-ми битов, а по выбору, например среди 5-ти младших, и чтобы 5-й бит шел на 1-й..... ?

  5. #1645

    Exclamation Проблема с SysLibFile

    Следующая проблема... Когда размер файла созданного и редактируемого посредством SysLibFile становится 1кб (1024байт), данные в него перестают добавляться. Как можно решить эту проблему?

  6. #1646
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,669

    По умолчанию

    capzap может у меня хромает логика, но если эту же функцию написать с параметрами BYTE то вроде как должны значения меняться согласно входным переменным.
    0 = 1, 1 = 2, 2 = 4, 3 = 8, 4 = 16, 5 = 32, 6 = 64, 7 = 128, 8 = 1
    однако 8 = 0 и так до 31, 32 = 1, то есть Codesys где-то кладет на BYTE и продолжает считать все через DWORD. Думаю с WORD будет та же петрушка. Или я где-то что-то не учитываю ?

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

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    capzap может у меня хромает логика, но если эту же функцию написать с параметрами BYTE то вроде как должны значения меняться согласно входным переменным.
    0 = 1, 1 = 2, 2 = 4, 3 = 8, 4 = 16, 5 = 32, 6 = 64, 7 = 128, 8 = 1
    однако 8 = 0 и так до 31, 32 = 1, то есть Codesys где-то кладет на BYTE и продолжает считать все через DWORD. Думаю с WORD будет та же петрушка. Или я где-то что-то не учитываю ?
    В байте 256 "единиц",с нуля до 255, чтоб увидеть 256 нужен как минимум ворд. А ноль Вы видите по тому что 8 это уже девятый разряд

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

    По умолчанию

    capzap то, что 8 это 9-й разряд я понимаю, но это относится к word и dword. Суть то в другом, в работе функции битового сдвига SHL по отношению к BYTE а не по отношению к DWORD, что он делает постоянно, независимо от явного указания переменных. Вроде как 8 это уже разряд следующего байта и если параметр задан Byte то функция должна вернуться к началу. Ведь когда параметр DWORD и мы на вход подаем 32-й разряд функция возвращается в начало и на выходе ставит 1. И так по кругу. По отношению же к BYTE и WORD функция на это плюет. ИМХО - не логично.

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

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    capzap то, что 8 это 9-й разряд я понимаю, но это относится к word и dword. Суть то в другом, в работе функции битового сдвига SHL по отношению к BYTE а не по отношению к DWORD, что он делает постоянно, независимо от явного указания переменных. Вроде как 8 это уже разряд следующего байта и если параметр задан Byte то функция должна вернуться к началу. Ведь когда параметр DWORD и мы на вход подаем 32-й разряд функция возвращается в начало и на выходе ставит 1. И так по кругу. По отношению же к BYTE и WORD функция на это плюет. ИМХО - не логично.
    Не путаете с ROL?

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

    По умолчанию

    capzap не путаю. Правильнее было бы в справочной информации по функции указать, что она работает только с DWORD. но это имхо.
    Кстати ROL тоже с BYTE косячит, если не ошибаюсь... попробую проверить щас.
    ROL так не косячит, 128 потом опять 1 и по кругу.

Страница 165 из 1044 ПерваяПервая ... 65115155163164165166167175215265665 ... ПоследняяПоследняя

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

Ваши права

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