Страница 386 из 393 ПерваяПервая ... 286336376384385386387388 ... ПоследняяПоследняя
Показано с 3,851 по 3,860 из 3923

Тема: Фичи и баги OWEN Logic

  1. #3851

    По умолчанию

    ПР200, кажется не очень давно, "подружили" с OwenConfigurator. Там можно подключиться к ПР200 в любой момент и посмотреть эти данные.
    Не очень уверен, но при включении питания или в системном меню была возможность увидеть на экране сведения об алгоритме.

    Если будет поле "Комментарии", доступные только в среде разработки - будет неплохо, я бы нашёл им применение.
    Хотя, для ведения реестра изменений, лучше пользоваться чем-то независимым от среды разработки и более распространённым, чтобы представитель эксплуатации после прочтения выдал на руки самую свежую версию.

  2. #3852

    По умолчанию

    Добрый день,
    Писал в поддержку, решил продублировать сюда.
    Использую битовые маски. Для комфортной работы с битами состояния извлекаю их из целочисленной маски и присваиваю ячейкам булевого массива.
    Чтобы не делать жесткое присвоение (arrayB[0]:= udintVar.0) решил прогнать целочисленное значение циклом FOR смещая бит в право и записывая его в каждую ячейку массива.
    Выглядит следующим образом:
    var_input
    udintVar: udint;// битовая маска
    end_var

    var
    udintArray: array [0..15] of bool; // булевый массив для записи каждого из битов состояния
    selectIn: udint; // итератор цикла
    end_var


    for selectIn := 0 to 15 do
    udintVar:= shr(udintVar,selectIn);
    udintArray[selectIn]:= udintVar.0;

    end_for

    В итоге провожу тест:
    целочисленное 1 = bit0 true
    целочисленное 2 = bit1 true
    целочисленное 3 = bit0 true и bit1 true
    целочисленное 4 = все биты 0, вместо того, чтобы bit2 был true.

    Соответственно все, что больше 4 в десятичном виде, уже откровенно не совпадает с действительность.
    Сделал подобное при помощи FBD SHR и EXTRACT и все работает корректно, а в рамках ST не работает.
    Либо я делаю что-то неверно, либо это баг.

  3. #3853

    По умолчанию

    Цитата Сообщение от Vadik39 Посмотреть сообщение

    Соответственно все, что больше 4 в десятичном виде, уже откровенно не совпадает с действительность.
    Сделал подобное при помощи FBD SHR и EXTRACT и все работает корректно, а в рамках ST не работает.
    Либо я делаю что-то неверно, либо это баг.
    А где переменные выхода? Или вы функцию сделали?
    Последний раз редактировалось kondor3000; 03.02.2025 в 16:17.

  4. #3854

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    А где переменные выхода? Или вы функцию сделали?
    Здесь не указывал, так как тестировал алгоритм.
    Тестировал с 16 булевыми переменными выхода.

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

    По умолчанию

    Цитата Сообщение от Vadik39 Посмотреть сообщение
    Добрый день,
    Писал в поддержку, решил продублировать сюда.
    Использую битовые маски. Для комфортной работы с битами состояния извлекаю их из целочисленной маски и присваиваю ячейкам булевого массива.
    Чтобы не делать жесткое присвоение (arrayB[0]:= udintVar.0) решил прогнать целочисленное значение циклом FOR смещая бит в право и записывая его в каждую ячейку массива.
    Выглядит следующим образом:
    var_input
    udintVar: udint;// битовая маска
    end_var

    var
    udintArray: array [0..15] of bool; // булевый массив для записи каждого из битов состояния
    selectIn: udint; // итератор цикла
    end_var


    for selectIn := 0 to 15 do
    udintVar:= shr(udintVar,selectIn);
    udintArray[selectIn]:= udintVar.0;

    end_for

    В итоге провожу тест:
    целочисленное 1 = bit0 true
    целочисленное 2 = bit1 true
    целочисленное 3 = bit0 true и bit1 true
    целочисленное 4 = все биты 0, вместо того, чтобы bit2 был true.

    Соответственно все, что больше 4 в десятичном виде, уже откровенно не совпадает с действительность.
    Сделал подобное при помощи FBD SHR и EXTRACT и все работает корректно, а в рамках ST не работает.
    Либо я делаю что-то неверно, либо это баг.
    У вас проблема здесь: udintVar:= shr(udintVar,selectIn);
    Вы сдвигаете на бит и запоминаете число, потом в этом новом числе вы сдвигаете на два бита и т.д.

    В общем,
    Код:
    var //объявление локальных переменных
            bitArray : array [0..15] of bool; 
            flag : udint;
            i : udint;
        end_var
        
        for i := 0 to 15 do
            flag := shr(bitMask, i);
            bitArray[i] := flag.0;
        end_for
    Последний раз редактировалось Dimensy; 03.02.2025 в 16:41.

  6. #3856

    По умолчанию

    Цитата Сообщение от Dimensy Посмотреть сообщение
    У вас проблема здесь: udintVar:= shr(udintVar,selectIn);
    Вы сдвигаете на бит и запоминаете число, потом в этом новом числе вы сдвигаете на два бита и т.д.

    В общем,
    Код:
    var //объявление локальных переменных
            bitArray : array [0..15] of bool; 
            flag : udint;
            i : udint;
        end_var
        
        for i := 0 to 15 do
            flag := shr(bitMask, i);
            bitArray[i] := flag.0;
        end_for
    Точно, упустил момент.
    Спасибо. Добавил переменную для смещенных битов и все работает.

    Спасибо за консультацию. Хорошего дня

  7. #3857

    По умолчанию

    Почему в окне слейв-сетевых переменных нет столбца "Использование в проекте" как на вкладке с обычными переменными?
    Причём в слейв переменных это более важно, т.к. неподключенные сетевые переменные "выпадают" из области памяти слейва и напрочь рушат весь опрос мастера.
    Вот и сидишь тычешь в каждую переменную списка, проверяя наличие ссылок на неё - просто капец как удобно.

    Или сделайте так, чтобы все объявленные слейв-сетевые переменные были доступны для опроса, независимо от участия их в схеме

  8. #3858

    По умолчанию

    Добрый день.
    При выполнении арифметического действия в программе (вычитание), в разных строчках программы переменная имеет разное значение, меньше на 1. При этом с переменной в этом месте программы ни каких действий не производится.
    Пробовал переносить строчку в разные места программы, удалял и из новых компонентов писал строчку, ни чего не помогает. Эта ошибка проявляется как при выполнении программы в контроллере, так и в режиме симулятора.
    Прошу подсказать, где ошибка.

    Ошибка вычитание.jpg

    Среда разработки Овен Лоджик 2.8.362.0
    ПР103-24.1610.03.X.0

  9. #3859

    По умолчанию

    Цитата Сообщение от SmSerg Посмотреть сообщение
    Добрый день.
    При выполнении арифметического действия в программе (вычитание), в разных строчках программы переменная имеет разное значение, меньше на 1. При этом с переменной в этом месте программы ни каких действий не производится.
    Пробовал переносить строчку в разные места программы, удалял и из новых компонентов писал строчку, ни чего не помогает. Эта ошибка проявляется как при выполнении программы в контроллере, так и в режиме симулятора.
    Прошу подсказать, где ошибка.

    Среда разработки Овен Лоджик 2.8.362.0
    ПР103-24.1610.03.X.0
    Вы в пошаговом режиме смотрите, так выходная переменная уже получила новое значение, а входная получит в следующем цикле.
    А вообще вычитание (любое действие) надо делать в одном месте, а не в 3 как у вас, на пол страницы размахали вместо 2 элементов.
    Либо вы просто перемудрили в программе, тогда выкладывайте проект.
    Последний раз редактировалось kondor3000; 06.02.2025 в 14:18.

  10. #3860

    По умолчанию

    делал и в пошаговом и в непрерывном цикле видно, что из-за разницы значений уменьшается общий результат вычислений.
    То что сделано на несколько шагов, на скриншоте видно, что одна и таже переменная имеет разные значения. Так быть не должно.
    Столько много действий - пытался выловить почему происходит ошибка.
    Куда выложить проект?

Страница 386 из 393 ПерваяПервая ... 286336376384385386387388 ... ПоследняяПоследняя

Похожие темы

  1. OWEN Logic v1.7
    от Евгений Сергеевич в разделе Среда программирования OWEN Logic
    Ответов: 404
    Последнее сообщение: 25.08.2020, 15:17
  2. OWEN Logic v1.7
    от Евгений Сергеевич в разделе Программируемые реле
    Ответов: 401
    Последнее сообщение: 28.07.2016, 19:46
  3. OWEN Logic 1.2.0.14b
    от Ельцов Андрей в разделе Программируемые реле
    Ответов: 40
    Последнее сообщение: 21.02.2011, 14:16
  4. OWEN Logic 1.1.0.11b
    от Ельцов Андрей в разделе Программируемые реле
    Ответов: 58
    Последнее сообщение: 12.10.2010, 20:55

Ваши права

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