temp
новичок; 18.11.04

Есть временная переменная, например #TEMP3, как я могу посмотреть где и что ей присваивается, если через Go to Location поиска этой переменной не происходит? Например переменная стоит в FB60, я начинаю искать откуда она берется (открывая все подряд блоки) и нахожу, что она появляется из FB10, ей присваивается другая времееная переменная, которая тоже неизвестно где находится.


Re: temp
VVV; 19.11.04

Все временные переменные на то и временные, потому, что они действуют только внутри блока.Их нельзя использовать из других блоков. Разные названия временных переменных в разных блоках- это разные переменные. Но для блоков типа FB, которые вызываются с блоками DB есть переменные не TEMP а STAT, которые автоматически берутся из DB вначале выполнения FB и записываются обратно в DB вконце FB.

Re: temp
VVV; 19.11.04

Вывод :)) Если Вам нужно найти временную переменную, то ищите ее только в этом блоке. Для этого в Степе 5.1 по CTRL+F, а в 5.2 и 5.3 уже можно искать по GoTo и временные переменные тоже.

Re: temp
новичок; 19.11.04

я все это понимаю, а что делать, если в блоке эта переменная только одна и выступает в роли открытого контакта, при вызове блока она не присутствует и переменная именно TEMP. В online эта переменная меняется- т.е. может быть и "1" и "0". Может ли эта переменная задаваться извне? (контроллер соединен с переферией по profibus и по Ithernet)

Re: temp
VVV; 19.11.04

Скорее всего используется не явное присвоение этой переменной. Например это булева переменная и имеет адрес TEMP 0.3. А где нибуди в программе есть, например такая строка:

А I 0.0
= L 0.3
То есть здесь мы присвоили этой переменной значение со входа 0.0 периферии. То есть обратились к ней не по имени, а по адресу.
Слышал я, что есть способ еще хитрее. Если мы вызываем несколько FC, а в ней еще FC и еще FC, то есть локальный буфер загружен данными из нескольких FC, то возможно писать и читать данные из локальной области других блоков,а не только из своей...

Re: temp
новичок; 19.11.04

да, но как определить тогда адрес TEMP3- это 0.3, 1.3 или 3.0-?

Re: temp
новичок; 19.11.04

нашел я, что Initial adress этой переменной Temp3 1.1, а как найти где и что присваивается этому адресу?

Re: temp
новичок; 22.11.04

нашел я , что при вызове блока FB60 устанавливается как раз через =L 1.1 при появлении метки М0.0 (метка инициализации). Теперь другая проблема-во всех цепях эта метка используется в виде условиий, а установки или задания этой метки в поиске-нет.

Re: temp
VVV; 22.11.04

Ну вот, значит разобрались, что зависит от М 0.0.

Скорее всего (если как то программисты придерживались правил), то это какой либо системный (вспомогательный бит). Обычно М 0.0 - это всгда "0", а М 0.1 - всегда "1".
Либо другой вариант. Это системный меркер импульсов, то есть аппаратно конфигурится, что, например, байт МВ 0 - будет байтом импульсов.
Посмотрите в Hardware Config, в свойствах контроллера, закладка Cycle\Clock Memory, стоит ли галочка Clock Memory и если да, то какой байт.
Re: temp
новичок; 22.11.04

галочка действительно стоит, memory byte: 300

Re: temp
VVV; 23.11.04

Нет, ну МВ 300 - это не то.

Значит к этому байту обращаются косвенно, например, через такой оператор
......
S M[#Adress]
где Adress - адрес этого бита в памяти.
А откуда Вы знаете, что это метка инициализации?
Может, если инициализация, то при старте контроллера инициализируется в ОВ 100?
Re: temp
VVV; 23.11.04

Нет, ну МВ 300 - это не то.

Значит к этому байту обращаются косвенно, например, через такой оператор
......
S M[#Adress]
где Adress - адрес этого бита в памяти.
А откуда Вы знаете, что это метка инициализации?
Может, если инициализация, то при старте контроллера инициализируется в ОВ 100?
Re: temp
VVV; 23.11.04

Нет, ну МВ 300 - это не то.

Значит к этому байту обращаются косвенно, например, через такой оператор
......
S M[#Adress]
где Adress - адрес этого бита в памяти.
А откуда Вы знаете, что это метка инициализации?
Может, если инициализация, то при старте контроллера инициализируется в ОВ 100?
Re: temp
Darwin; 23.11.04

Попробуйте поискать " М0.0" через "Go to Location" и установив в окне "Go to Location" чек бокс "Overlapping access to memory areas". Т.е. при установке этого чек бокса будут найдено также использование " М0.0" в составе байтов, слов, двойных слов. Если " М0.0" устанавливается косвенно то ничего не поможет т.к. как найдешь М 310.0 если используют

L P#M 300.0
A [AR1,P#10.0]

Re: temp
новичок; 24.11.04

Всем большое спасибо. В ОВ100 вызывается FC10, в котором 0-му байту передаются значения блока данных. Через Go to location и overlapping access to memory areas также этот байт легко находится. Последний вопрос- если бы адрессация метки была косвенная (S M#adress)- адрес этого бита в памяти был бы отражен в таблице определения временных переменных?

Re: temp
VVV; 24.11.04

Нет. Переменная #Adress это просто переменная. Локаляная, из блока данных или из меркерной области. Ей где то должен присваиваться адрес, например так:

L P#25.3
T #Adress
set
= M[#Adress] //Установить бит памяти 25.3
Где Adress локальная переменная типа DWORD.
Или так:
L 203 //Это тоже 25.3
T MD100 //Пишем адрес сюда

A I 124.7
= M[MD100] // M 25.3 = I 124.7
Re: temp
Новичок 2; 7.12.04

А все-таки как новичок нашел что при вызове блока FB60 переменная

устанавливается через =L 1.1 при появлении метки М0.0
Re: temp
новичок; 8.12.04

в самом FB60 установки адреса 1.1 я не нашел, через go to location нашел откуда вызывается FB60- это оказались FC1, FC2, FC3. Перед вызывом блока FB60 в FC1 (например)есть такая строка:

A M102.0
= L1.1
Re: temp
Новичок 2; 8.12.04

А если адрес 1.1 имеет несколько присвоений? Как тогда?

Re: temp
Павел Кобелев; 9.12.04

В редакторе LAD/FBD/STL по меню Options->Reference data->Display открывается окно, в котором можно посмотреть много чего полезного, в том числе и где что чему присваивается. Адреса без имен там тоже можно посмотреть.

Re: temp
новичок; 9.12.04

что-то я не нашел в Options->Reference data->Display адреса без имен, не подскажешь где посмотреть? (не могу найти там адрес 1.1)

Re: temp
Павел Кобелев; 10.12.04

В окне, которое открывается по Options->Reference data->Display

в меню View есть пункт "Addresses without Symbol"<<br>