На последнее сообщение можно не отвечать, сам догадался.
Вид для печати
На последнее сообщение можно не отвечать, сам догадался.
ой.простите.правда. для опыта ставил оутпут, которого в прикреплённом нету. и так же делал опыт когда индикатору присваивал один из битов привязанных к кнопке, а в кнопку добавлял реверс, дабы проверить происходит ли вообще запись в бит по событию, на уровне ип320 (в голове) происходит,а до плк не доходит
доброго времени суток. Подскажите пожалуйста логику работы ПЛК. Я понимаю, что он однозадачный, но всеже в упрощенном варианте при вызове ФБ ПЛК сначала заходит в экземпляр ФБ, выполняет его полностью и идет дальше по коду программы-родителя или как-то распределяет процессорное время создавая илюзию многозадачности, т.е. выполнил кусочек экземпляра ФБ, пошел дальше по коду родителя, в след. цикле еще кусочек и т.д.? Просто есть какая-то коллизия вот в этом куске кода:
RtB(f_in:=MIN_IN_PRESS); (*2B6_hex*)
HOLD[1388]:=RtB.byte_1;
HOLD[1389]:=RtB.byte_2;
HOLD[1390]:=RtB.byte_3;
HOLD[1391]:=RtB.byte_4;
RtB(f_in:=PRESS_ON); (*2BA_hex*)
HOLD[1396]:=RtB.byte_1;
HOLD[1397]:=RtB.byte_2;
HOLD[1398]:=RtB.byte_3;
HOLD[1399]:=RtB.byte_4;
ФБ RtB разбивает переменную типа REAL на 4 переменных типа BYTE, которые складываются в массив типа BYTE. И при преобразовании первой переменной оказывается влияние и на вторую. Вот я и задался вопросом о том как работает ФБ? Использую один экземпляр ФБ потому что не хочу засорять проект кучей экземпляров, т.к. таких преобразований для заполнения массива достаточно много
Никаких коллизий нет и не может быть для указанного способа использования если только не намутили внутри ФБ.Что там делает внутри Ваш ФБ - только Вы и знаете.
Для описанной задачи внутренность ФБ - это 2-4 строчки. Как там можно намутить ? :)
так вот и я думаю что ничего особого там нет и расчитывается за один проход. Как можно было догадаться это кусочек из реализации modbus(slave). Просто когда я тем же пресловутым лектусом записываю первые четыре из приведенных элементов массива, значение вторых тоже "задевает". Кстати "глюк" подобный наблюдается и в массиве Input_registers
capzap,
так функция же возвращает только одно единственное значение. В обратном преобразовании я использую как раз функцию.
или вы предлагаете сделать функцию, которая будет выделять из REAL переменной конкретный указаный байт?
Добрый день. Может кто подскажет кусочек программы для ПР 110 управления реверсивным счётчиком от 2 датчиков, с определением направления движения в + или -
Здравствуйте. Заранее извиняюсь за глупый вопрос. Есть ли в библиотеке oscat ФБ для перевода 16-й ASCII формы в формат чисел? То есть в строке получаю что-то типа Е069. Использую блок и на выходе получаю реальное значение.