А если посмотреть и подумать головой, что внутри на входах 0 стоят. Значит что?
Вы что и макросы внутри не запускали ?
Вид для печати
Думайте головой, почему их нет внутри?
Макрос тоже внутри сам не тикает. Это эмуляция работы и задавать входы надо руками.
Или внутри эмулировать секунды, на ФБ это возможно.
Тут пример времени в ФБ
https://owen.ru/forum/showthread.php...l=1#post443096
FB в эмуляции работает, но если в эмуляции посмотреть что происходит внутри этого FB, то там ничего не происходит.
Может вы покажите, что в эмуляции этого простого FB переменная Q внутри считает импульсы. Вы же писали, что внутри FB в эмуляции все шевелится.
kondor писал
Чувствуете разницу? Не запустите эмуляцию, откройте ФБ, а сначала откройте ФБ и только потом запустите эмуляцию.Цитата:
Откройте ФБ и запустите эмуляцию
И разницы нет, макрос это, ФБ или функция на ST. Ну, не может Лоджик при эмуляции программы показать что происходит внутри блока. Только, либо всю программа целиком, либо внутренность ФБ (вся остальная программа, при этом, не эмулируется)
Newcomer - FB это отдельная программа, если утрировано. Вы открываете FB на редактирование - далее эмуляция и видите все происходящее, выполняете отладку и т.д.
Потом вы вставляете FB в основную программу и там уже не можете при эмуляции зайти и посмотреть результаты работы FB, он должен у вас быть уже вылизанным с программной точки зрения и эмулируете вы уже саму программу.
Добрый день
Как сделать так, чтобы энергонезависимая сетевая переменная не обнулялась при передергивании питания ПР205 ?
Общий принцип такой
Вложение 87110
Ну, мы же не знаем, что у вас и как организовано внутри блока.
Вариантов множество. Покажите внутренности блока и вам подскажут.
Как вариант
Код:function bmState: udint; //имя функции и тип данных выхода
var_input //объявление входных переменных
Enable : bool;
netState : udint;
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
if Enable then
bmState.0 := b0;
bmState.1 := b1;
bmState.2 := b2;
bmState.3 := b3;
bmState.4 := b4;
bmState.5 := b5;
bmState.6 := b6;
bmState.7 := b7;
bmState.8 := b8;
bmState.9 := b9;
bmState.10 := b10;
bmState.11 := b11;
bmState.12 := b12;
bmState.13 := b13;
bmState.14 := b14;
bmState.15 := b15;
else
bmState := netState;
end_if
end_function
Добавить энергонезависимую переменную инициализации R1, которая сохранит значение и Вложение 87137
при включении запишет значение на выход
Скрытый текст:
1) В момент запуска выходные переменные могут быть еще не рассчитаны, поэтому запишут в энергонезависимую переменную ноль. Эта конструкция на один цикл не дает это сделать
2) Можно и обычные переменные делать энергонезависимыми, но с ними может быть такая же ситуация, когда в момент запуска они перезаписываются нулем. Конструкция не дает этого сделать
Вложение 87138
Код:function_block fb
var_input
inVal : udint;
end_var
var_output
outVal : udint;
end_var
outVal := inVal;
end_function_block
При входе в FB значение надо сначала восстановить из сетевой (ведь она энергонезависимая и содержит сохраненное значение до первого цикла).
А потом уже в самом FB можно менять это значение при необходимости.
Попробуйте перед выключением подать сначала in.Код:function_block fb
var_input
inVal : udint;
in, reset: bool;
end_var
var_output
outVal : udint;
end_var
var
rtIN : SYS.RTRIG;
rtReset : SYS.RTRIG;
end_var
outVal := inVal;
rtIN(I := in);
If rtIN.Q then
outVal := 100;
end_if
rtReset(I := reset);
If rtReset.Q then
outVal := 0;
end_if
end_function_block
А перед следующим выключением подать reset.
Чисто для эксперимента.
Не могли бы подсказать, по какой причине не выводится на экран через компонент ввод вывод времени это самое время? Сделал все по инструкции присвоил дату к переменной, эту переменную перетащил к другой, и эту другую в компонент засунул. Однако вообще ничего. Где ошибся?
И еще как работают переменные и данные в настройках прибора? у меня там вообще 2000 год просто и все. Но в часы реального времени считают. Чего то не уловил видимо.
Надо привязать все переменные времени и присвоить переменным на холсте программы, а потом выводить на экран (работает только в живой ПР).
Проще работать с готовыми блоками времени, в том числе в симуляции
ФБ времени в ПР205 (Часы, Мин. и Сек.) ФБ Опер Таймер (наработка) на языке ST______ https://owen.ru/forum/showthread.php?t=38721#8
Дата, Время и День недели через DT с 2000г. (и с 1970г.)____________ https://owen.ru/forum/showthread.php?t=40116#4
Спасибо за информацию.А где это описано, или же это просто особенность которую все знают?
Здравствуйте. В справке Лоджика не нашел такой информации: На холсте входы и выходы дополнительного модуля ПРМ появятся только после подключения ПРМ к ПР205 и конфигурации? Сейчас я пока не имею на руках ПР205 с модулем расширения ПРМ, но проект нужно делать. Спасибо за внимание.