SIEMENS, DF&PD

Предыдущее посещение: Вт июн 21, 2016 5:57 Текущее время: Вт июн 21, 2016 5:57

Часовой пояс: UTC + 3 часа




 [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: Step7 подскажите новичку
СообщениеДобавлено: Пт июн 25, 2010 14:06 
Не в сети
Новый писатель

Зарегистрирован: Пт июн 25, 2010 9:42
Сообщения: 20
Здравствуйте. Я сейчас осваиваю Step7 и вообще
программирование. Есть программатор с действующим проектом и папка с материалами
курсов по программированию от Сименса. Потихоньку вникаю, слежу за
процессом, но не могу перескочить одну непонятку. А в папке по
программированию ответа не нашел. Дело в том, что в функциях (FC)
частенько попадаются строки начинающиеся, например, с А или О и дальше
символьное имя DB и символьное имя адреса, когда я пытаюсь узнать кто положил в
соответствующий DB эти данные, ничего не получается. Я щелкаю по строке
правой кнопкой и выбираю "локатион", а в открывшемся окошке бывает только одна
строчка и в ней написано та же FC и тот нетворк с которого я зашел. Или может быть несколько строк, но все показывают кто берет эти данные ("А", "О" или "L"), и нет ни одной строчки с "=" или "Т".
Пытался заходить с референс дата, указывал в фильтре номер DB и открывал
референс. В окне референса моя строка команды тоже одна. Подскажите,
пожалуйста, как узнать откуда в этот DB поступили данные, самостоятельно
что-то запарился.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт июн 25, 2010 14:23 
Не в сети
Написал больше чем Вы читали

Зарегистрирован: Чт ноя 22, 2007 5:39
Сообщения: 1335
Откуда: Иркутск
команды А и О - опрашивают бит и когда ищете в референсе эту переменную ищется именно этот адрес, т.е. бит.

А переменная может быть записана например как байт, слово или двойное слово.

Скорее всего пишется сразу слово а опрашиваются потом биты слова, потому и сылок в референсе нет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт июн 25, 2010 14:41 
Не в сети
Новый писатель

Зарегистрирован: Пт июн 25, 2010 9:42
Сообщения: 20
Спасибо за подсказку. А как можно задать поиск этого байта, слова или двойного слова? Должен же быть способ...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт июн 25, 2010 14:44 
Не в сети
Писатель со стажем

Зарегистрирован: Чт авг 17, 2006 8:18
Сообщения: 745
Откуда: Ярославль
Возможно, что контроллер только читает эти данные, а положил их туда, скажем HMI (Scada или панель оператора, аки всякие уставки).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт июн 25, 2010 15:14 
Не в сети
Новый писатель

Зарегистрирован: Пт июн 25, 2010 9:42
Сообщения: 20
Спасибо, Алексей. Но положил данные, как мне кажется, процессор. Я сейчас взял три такие (расположенные рядом) строки в качестве примера и открыл блок данных. Пока не нажал контрол +4, в блоке группа адресов была спрятана в массив, а после нажатия появилась деталировка с символьными именами каждого бита. Как же вычислить анонима? На мой взгляд, это огромный минус Step7, что не все легко проследить.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт июн 25, 2010 15:25 
Не в сети
Новый писатель

Зарегистрирован: Пт июн 25, 2010 9:42
Сообщения: 20
Сейчас попалась строчка "L" загружающая тип риал. Перешел в "локацию" - к ней три обращения и все через "L". Ни одного "Т". А адрес не в массиве. Если эти данные положила панель оператора, то что, проследить уже не получится? Пока с этим не разберусь, дальше шагать трудно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт июн 25, 2010 15:32 
Не в сети
Писатель со стажем

Зарегистрирован: Чт авг 17, 2006 8:18
Сообщения: 745
Откуда: Ярославль
Вопрос - у Вас есть исходник проекта, или Вы все отгрузили из PLC?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт июн 25, 2010 15:45 
Не в сети
Новый писатель

Зарегистрирован: Пт июн 25, 2010 9:42
Сообщения: 20
Исходник есть, но написан "зубрами программирования" и комментарии не к каждой строчке, а через девяносто восемь на девяносто девятую. Но таблица символьных имен вся и соответствует.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт июн 25, 2010 16:13 
Не в сети
Писатель со стажем

Зарегистрирован: Пн июл 06, 2009 9:37
Сообщения: 851
Откуда: Санкт-Петербург
откройте эту DB и посмотрите куда попадает этот адрес, какой комментарий у данных
посмотрите как используются данные в программе (как уставка для сравнения и т.п.)
найдите проект панели оператора
Цитата:
Как же вычислить анонима? На мой взгляд, это огромный минус Step7, что не все легко проследить.

напрямую зависит от прямолинейности рук программиста, писавшего программу


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт июн 25, 2010 18:29 
Не в сети
Новый писатель

Зарегистрирован: Пт июн 25, 2010 9:42
Сообщения: 20
Спасибо, Александр. Как я понял, Вы советуете ориентироваться на символьные имена каждого бита. Например, если в DB416 есть бит Step [1]. Direct_Cmd, то следует искать отправителя данных в функции со словом Step. Например, Step meneger. Но ведь это нужно или вызубрить весь проект, или при каждой попытке найти источник данных перечитывать имена 200...300 функций. Можно, конечно, но так хочется легкого пути, клацнуть какой-нибудь средней кнопкой и пройти в пункт "Anonimus". Я пробовал искать по именам, но пока прочтешь все это иноязычное месиво, просто забываешь что именно ты искал. Может есть средство задать в каком нибудь поисковике адрес, скажем, 416DB.1289DBW и узнать откуда пришло двойное слово? Если нет поисковика, я готов набрать в функции ни к чему не обязывающую команду "L 416DB.1289DBW" и посмотреть ее "локацию". Вот кстати, если каждый бит двойного слова имеет свое символьное имя, это позволит узнать откуда пришло все слово? Жалко, что невозможно проверить этот метод до конца выходных (программатор остался на работе).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб июн 26, 2010 8:04 
Не в сети
Написал больше чем Вы читали

Зарегистрирован: Чт ноя 22, 2007 5:39
Сообщения: 1335
Откуда: Иркутск
В Симатик менеджере: Options->Cross reference -> Display. Там довольно много полезной информации.

1. В Cross Reference лежат как обращения к символьным переменным, так и к переменным с неназначенными символами. И если например идет обращение на чтение к символьному биту "Struct.bit_2" и нигде нет прямой записи этого бита - то смотрим его абсолютный адрес - скажем DB100.DBX50.4 - и ищем в таблице обращение к абсолютным переменным перекрывающим этот адрес - DB100.DBB50, DB100.DBW50, DB100.DBD50 и DB100.DBD48.

2. Эти переменные действительно могут устанавливаться из панели или станции оператора и тогда чтоб найти установку этих переменных нужен проект панели/скады.

3. Есть еще вариант косвенной адресации. Тогда в кросс-референсах вы не найдете обращений к этим адресам по определению. И тогда придется досконально изучать все конструкции с косвеной адресацией переменных - типа T W [AR1,P#0.0], и разбираться к каким в действительности адресам идет обращение.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб июн 26, 2010 19:32 
Не в сети
Новый писатель

Зарегистрирован: Пт июн 25, 2010 9:42
Сообщения: 20
Kapter, большое спасибо за подробный ответ. Буду пробовать искать перекрывающие адреса. А про косвенные адреса поищу литературу, тут я плаваю особенно глубоко...


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
 [ Сообщений: 12 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения

Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group