1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

S7-300 - "The statements are not being processed"

PLC, прочие контроллеры, промышленные компьютеры, операторские панели
Ответить
Аватара пользователя

Автор темы
MuadDib
частый гость
частый гость
Сообщения: 462
Зарегистрирован: 31 июл 2010, 09:12
Имя: Павел
Страна: РФ
Благодарил (а): 10 раз
Поблагодарили: 17 раз

S7-300 - "The statements are not being processed"

Сообщение MuadDib »

На обслуживаемом нами оборудовании один из узлов стал работать только в ручном режиме, в "автомате" ничего не движется. Машина управляется S7-300 (6ES7315-2EH14-0AB0)/ Пытаясь найти источник проблемы, мы подключились к контроллеру и обнаружили странную вещь. Часть функций, отвечающих за управление данным узлом не вызывается ( "The statements are not being processed" в строке состояния Step7 при включении online-режима среды разработки). При этом блок вызывается безусловно. Выглядит это следующим образом. FB216 содержит часть функционала по автоматическому управлению данным узлом (отладка внутри данного блока показывает, что он не вызывается). Вызов этого блока осуществляется из FC215, выглядит это так:

Код: Выделить всё

Network 26:

|-----||--------------(SE)-|

Network 27:
UC FB216

Network 28:
....

При отладке FC215 видно, что NW26 выполняется, но если щёлкнуть на NW27, опять видим, что "The statements are not being processed". Безусловный вызов блока, до него тупо вызывается обычный таймер... Но получается, что управление к NW27 вообще не переходит. Как такое может быть?
Аватара пользователя

CHANt
эксперт
эксперт
Сообщения: 1465
Зарегистрирован: 25 июл 2008, 10:25
Имя: Эдуард Владимирович
Страна: СССР
город/регион: Оренбург
Благодарил (а): 45 раз
Поблагодарили: 104 раза

Re: S7-300 - "The statements are not being processed"

Сообщение CHANt »

Безусловный вызов UC подразумевает что определены все параметра блока ранее. Проверьте, что экземплярный блок данных FB216 открывается до безусловного вызова, должно быть типа OPN DB216. Иначе блок не должен работать.
--------------------------------------------------------------------------------------------
Аватара пользователя

Marrenoloth
завсегдатай
завсегдатай
Сообщения: 524
Зарегистрирован: 05 окт 2009, 11:51
Имя: Тихомиров Дмитрий Викторович
Страна: Россия
город/регион: Москва
Благодарил (а): 17 раз
Поблагодарили: 20 раз

Re: S7-300 - "The statements are not being processed"

Сообщение Marrenoloth »

Только не OPN BD###, а OPN DI### - надо как инстанс блок открывать, а не как шаред DB.
Аватара пользователя

Автор темы
MuadDib
частый гость
частый гость
Сообщения: 462
Зарегистрирован: 31 июл 2010, 09:12
Имя: Павел
Страна: РФ
Благодарил (а): 10 раз
Поблагодарили: 17 раз

Re: S7-300 - "The statements are not being processed"

Сообщение MuadDib »

Спасибо всем откликнувшимся!

Я поизучал программу и не нашёл ничего определённого :( Действительно, вызов FB осуществляется без указания экземплярного DB, и вышестоящего OPN DI### я в программе не нашёл. Но:

1. Описание интерфейса FB216 пустое - нет ни входных, ни выходных, ни статических, ни временных переменных. Соответственно, экземплярный блок вроде как и не нужен.
2. Собственно программа FB216 обращается только к глобальным данным (I, Q, M, Т), а также к открытому ранее шаред DB. Выглядит это в программе примерно так:

Код: Выделить всё

//FC0

Network 3:
OPN "xyz"                                    DB223
UC   "aaa"                                    FC201
UC   "bbb"                                    FC202
....
UC  "qqq"                                     FC215   <-- здесь, помимо прочих FB, вызывается FB216
....
Соответственно, программы данной подсистемы обращаются к данным шаред ДБ так:

Код: Выделить всё

L          DBW 276
Вроде все законно, хоть и отличается от рекомендованного стиля (программа в стиле Step5, что-ли?): открывается шаред DB223 с общими для группы программ данными, и все программы к нему обращаются по мере необходимости посредством "обычного доступа".

3. Единственная странность - в некоторых местах FB216 обращается к области L, при том что никаких переменных в интерфейсе FB нет вообще. Причем, обращение идёт и на чтение, и на запись. Не знаю, насколько это допустимо, но подобные финты ушами я замечал по всей данной программе, а таких странностей с "невызываемой" программой в других местах не было.

Короче, в программе всё мутно, символы на итальянском, а все спецы фирмы-производителя оборудования в полном составе свалили в отпуск... Что ещё нужно для счастья? :Р

Буду признателен за любые рекомендации по поиску "порывшейся собаки".
Аватара пользователя

Marrenoloth
завсегдатай
завсегдатай
Сообщения: 524
Зарегистрирован: 05 окт 2009, 11:51
Имя: Тихомиров Дмитрий Викторович
Страна: Россия
город/регион: Москва
Благодарил (а): 17 раз
Поблагодарили: 20 раз

Re: S7-300 - "The statements are not being processed"

Сообщение Marrenoloth »

Ну, не красиво, несколько нагружает контроллер, но, действительно, все законно. Про L память - это TEMP переменные. И, на самом деле, не важно сколько из них будут вбиты в декларацию FB или FC - она всегда выделяется по-максимуму при каждом новом вызове блока, а размер зависит от конкретной модели контроллера.
Так что тут только курить программу. Итальянцы, сколько с ними сталкивался, всегда такие жопы делают. Или еще похуже! Типа защищают свои секреты. :(
Ответить

Вернуться в «Средний уровень автоматизации (управляющий)»