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>