МихаилГл Так вот мы ж и колотим таких на форуме, чтобы знали :)
Вид для печати
МихаилГл Так вот мы ж и колотим таких на форуме, чтобы знали :)
Здравствуйте. Правильно ли я понимаю, что целочисленные переменные нельзя передавать битовой маской в Owen Logic
В скаде ограничено число сигналов, дискретные сигналы запаковываю в целочисленную переменную, в скаде распаковываю, есть ли возможность в Owen Logic запаковывать целочисленные переменные?
Функция putbit или setbit вроде есть
PS Ах аналоговые...
Вот, есть макрос в Менеджере компонентов
Вложение 86121
Можно на ST написать
Код:function bitIN: udint; //имя функции и тип данных выхода
var_input //объявление входных переменных
b0 : bool; //входная переменная с типом данных bool
b1 : bool;
b2 : bool;
b3 : bool;
b4 : bool;
b5 : bool;
b6 : bool;
b7 : bool;
b8 : bool;
b9 : bool;
b10 : bool;
b11 : bool;
b12 : bool;
b13 : bool;
b14 : bool;
b15 : bool;
end_var
bitIN.0 := b0;
bitIN.1 := b1;
bitIN.2 := b2;
bitIN.3 := b3;
bitIN.4 := b4;
bitIN.5 := b5;
bitIN.6 := b6;
bitIN.7 := b7;
bitIN.8 := b8;
bitIN.9 := b9;
bitIN.10 := b10;
bitIN.11 := b11;
bitIN.12 := b12;
bitIN.13 := b13;
bitIN.14 := b14;
bitIN.15 := b15;
end_function
Спасибо. Он для дискретных входов, я дискретные входы им и запаковываю. Вопрос в том, что можно ли также запаковывать аналоговые входы
Если значение аналогового входа, переведенное в целое число не превышает 255, то вы можете в один регистр запихать два значения
Также можно запаковать статусы исполнительных устройств. Например, статус "0 - выключен, 1 - в работе, 2 - авария" занимает два бита. Таких состояний можно в регистре уместить 8 штук
Здравствуйте. В вашем примере с помощью макроса 2x8i-16il два аналоговых целых числа запаковываются в одно, одно число сдвигается влево на 8 бит. Создал свой макрос, хочу распаковать одно целое число на два, сдвигаю запакованное число вправо на 8 бит, одно число распаковывается правильно, второе число в моем макросе не совсем правильно. Подскажите, пожалуйста, как правильно распаковать второе числоВложение 86626Вложение 86625
Вот так надо
Вложение 86627
2 варианта упаковки и извлечения байт из регистра Вложение 86632
Спасибо большое
Могу добавить, как я байты вертел:
Вложение 86633
Вложение 86634
В смысле, эта функция и в одном слове(регистре) байты переставит местами!
Вообще то внутренние целочисленные переменные 32 битные, я так их на байты шинковал:
Вложение 86649
Вложение 86650
Вложение 86653
В смысле, если ограничение на число сигналов(переменных) логично передавать 32 битную целочисленную переменную, она будет занимать два соседних регистра, любая скада это поддерживает, это позволит в два раза больше информации передать, в смысле, байтовых переменных.
Кроме того я ранее предлагал как одним регистром передавать до 128 16-ти битных целочисленных переменных в смысле, каждый регистр разбивается на два байта, в одном хранятся данные в другом служебная информация, это чтобы потом правильно байты данных двух соседних регистров собрать в одну 16-ти битную целочисленную переменную, вам не надо ничего собирать, просто будет идентификация байтовой переменной, короче, всего может получится при ограничении в 32 переменные в скаде передавать до 16384 байтовых целочисленных переменных, если Вы сильно никуда не спешите!
И, у Вас необычная проблема, в смысле, обычно ПР оказывается узким местом, но это интересно, что Вы смогли создать необычную проблему!
И, если какие вопросы возникли, типа откуда такие значения взял, скажу что из калькулятора:
Вложение 86654
Вложение 86655
Ради правды добавлю, что в принципе значения могут быть в некотором диапазоне, например для второго байта в диапазоне 65280 - 65535, для третьего байта 16711680 - 16777215, в смысле, это ничего не изменит, "просочившиеся" значения из младших байтов всё равно сдвиг вправо "уничтожит"!
Добрый День, коллеги.
подскажите пожалуйста как лучше реализовать схему регулятора.
Нужно поддерживать температуру продукта.
с помощью регулирующего клапана.
Но необходимо еще учитывать температуру продукта до входа в нагреватель.
Если он "учитывает" температуру продукта на входе, наверно ничего не помешает "учитывать" температуру продукта на выходе, тогда остаётся выбрать ПИД-регулятор с подходящим электроприводу выходом и всё, в смысле, поддерживай нужную температуру продукта!
Непонятно в чём здесь проблема?
коллеги извиняюсь за не полные и непонятные данные.
постараюсь пояснить;
продукт проходя через нагреватель , нагревается соответственно.
нагрев контролируется термометром при выходе.
Но температура продукта, входящая может быть не стабильна.
аппарат греется паром, проходящий через клапан с моторным приводом, управление по сигналу.
Чего хотим добиться - стабилизировать температуру на выходе.
Поэтому и предполагаем что регулятор ПИ или ПИД должен как - то брать во внимание отклонения на выходе и на входе , возможно сумму.Вложение 86694
Тогда регулятор будет перегревать, в смысле, температура на выходе поднимется при уменьшении температуры на входе!
Вроде всё понятно написали, чего хотите, а действия неадекватные, в смысле, не надо ничего там предугадывать, пусть ПИД-регулятор штатно работает, наверно придётся его правильно настроить, чтобы успевал вовремя среагировать на возмущение, всё! Это мне так кажется!
точно не сумму и не среднее двух температур, хотя бы Твх * 0.1 + Твых * 0.9
а так нужно вычислять ожидаемое отклонение выходной температуры из‑за изменения входной, эту разность умноженную на расчетный коэффициент вычитать из уставки, тогда может получиться
и третий вариант двухкаскадное управление
А двух каскадное это как?
возмущение по температуре на выходе должно быть минимальным, я буду конечно пробовать разные варианты, (может быть стабилизировать давление пара, к примеру) но при регулировке процесса по выходу в любом случае будут запоздалые реакции. дело в том что продукт через змеевик идет минут 5-8
У Вас есть возможность измерять температуру пара на входе и конденсата на выходе, а также расход конденсата?
Если да, то измеряйте расход продукта и вычисляйте баланс по калориям. Думаю ПР200 справится.
В принципе, если расход продукта - константа. Давление и температура пара на входе - константа.
Известна формула расхода конденсата f(x), где x - положение штока регулятора, то сможете удерживать строгую разницу между выходящей и входящей температурой обычным П-регулятором.
https://habr.com/ru/articles/707688/ последние абзацы
ЗЫ https://project2425235.tilda.ws/glava9
спасибо за ссылки, почитаю
Тогда ставьте https://owen.ru/product/trm12.
Подберите под Ваш регулятор с нужными типами выходов и всё!
Здравствуйте,как в овен лоджик реализовать работу оптического датчика,который обнаружив препятствие,проходит его и затем запускает исполнительный механизм.Подскажите,пожалуйста.
Очень сложно Вас понять, Вы точно человек? Короче, насколько смог понять, Вам нужен детектор заднего фронта, по его импульсу запускается механизм!
А, работу оптического датчика в ОЛ не настроишь, это независимый прибор, он сам по себе работает, без ОЛ.
У меня проект блокиратор колеса,цилиндр с оптическим датчиком выдвигается до колеса,обнаруживает его,проезжает,затем выдвигается цилиндр поменьше,который стопорит колесо.