Ну если "больше одного" это несколько булей и/или числа в небольших диапазонах, то чудо можно сделать ректально - внутри фунции упаковать (там удобно с битами), а к выходу прилепить распаковщик. Можно и распаковщики на ST - каждая отдельная функция возьмет своё из общей маски и выдаст нужное.
--
Я не принуждаю к такому
FBD - функциональны блок
Сейчас ST вообще же блоки не поддерживает? только функции
ну тут может терминологии хромают и недопонимание? FB - просто функция, 1 выход, FBD - по сути макрос, выходов сколько поставим.
Ну или применительно к ОЛ английской версии приведите, в русской то понятия сокращения в латинице нет. Макрос, Функция только
Последний раз редактировалось melky; 28.12.2022 в 17:19.
Не, что-то типа Q и PT у таймера, или Код ошибки и далее стековый выход к основному. В общем как сейчас у макросов, только код на ST внутри.
Просто функции с 2+2 не так интересны, а упаковывать и потом распаковывать это больше для инвалидов(костыли называются)
ну и понаглею немного - возможность работы с COM портом для организации обмена не только с Modbus устройствами, хотя бы чтобы ПР с несложными протоколами справлялся....![]()
Последний раз редактировалось melky; 29.12.2022 в 00:20.
Не мы такие, среда такая..
Упаковывать снаружи ненужно, все таки входов много.
Q и ET(видимо) - было б совсем просто, но нет TIME() (GetTickCount) и памяти. В конце концов часто ли нужно больше одного месяца?
Да, память заменит "обратная связь", а TIME() обычный счетчик снаружи или канкан с блинком - но это костыли еще большие.
А упомянутый Вами код ошибки в значении ai как раз пример упаковки 2х условно независимых и даже не бульных переменных (здесь потребовались бы прямая память и/или указатели)
//вопрос прямой памяти можно было бы решить, опять же ректально, сняв ограничения на использование разнотипных переменных по одному адресу регистра в слейве. Или уже есть?
Кстати
От ST был бы не плохой обратный подарок в квадратики если бы в художественных полях можно было бы обращатся к битам как в в ST
(если что - я автор предложения)
Последний раз редактировалось Валенок; 29.12.2022 в 09:12.
Не, ну нативная работа с сом это вы уже совсем палку перегнули
Валенок да я образно про таймер.
bayk с чего вдруг перегнул? отправить массив, принять массив, посчитать простую CS на основе принятого. Я не говорю про ASCII там варианты и т.д. а хотя бы про простые байтовые...
Сами форум посмотрите - как прикрутить весы к ПР200 сколько тем было?
Может и был уже счетчик, но посмотрев постом ранее на тригер, по образу и подобию сделал счетчик. И работает.
--------------------------------------------------
-----------------------------------------------------------Код:function funcSTU: udint; //имя функции и тип данных выхода var_input //объявление входных переменных inputVar : bool; //входная переменная с типом данных bool min, max, mrom : udint; end_var var //объявление локальных переменных temp : udint ; //локальная переменная с типом данных real и начальным значением 13.3 end_var temp:= mrom; funcSTU:= mrom; if funcSTU < min then funcSTU := min; mrom:= funcSTU; end_if if inputVar and temp = funcSTU then temp:= funcSTU; funcSTU := mrom + 1; if funcSTU > max then funcSTU := min; // funcSTU := 0 ; end_if end_if if not inputVar then funcSTU := mrom; end_if end_function
А вот детектор фронтов можно на ST сделать???
И где теги кода кнопочка? Или вручную дописать нужно или как?STU.jpg
Последний раз редактировалось lagutin; 29.12.2022 в 14:20.
Можно
Безымянный.pngКод:funR_trig := Clk and not M; funF_trig := not Clk and M;
Но зачем, если в ST их не применить, а в FBD и так есть
А в счетчике не хватает сброса
По идее можно и детектор фронтов делать, но так же обратную связь тянуть, как бы смысл уже?