Area length error when writing step7

Форум АСУТП Клуб специалистов в области промышленной автоматизации Обязательно представиться на русском языке кириллицей (заполнить поле «Имя»). Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно. Не писать свой вопрос в первую попавшуюся тему — вместо этого создать новую тему. За поиск и предложение пиратского ПО и средств взлома — бан без […]

Содержание

  1. Форум АСУТП
  2. Area length error when reading/writing
  3. Area length error when reading/writing
  4. Area length error when writing step7
  5. PLCforum.uz.ua
  6. Request: пример с стандартным ПИД-регулятором
  7. Request: пример с стандартным ПИД-регулятором
  8. Re: Request: пример с стандартным ПИД-регулятором
  9. Re: Request: пример с стандартным ПИД-регулятором
  10. Re: Request: пример с стандартным ПИД-регулятором
  11. Re: Request: пример с стандартным ПИД-регулятором

Форум АСУТП

Клуб специалистов в области промышленной автоматизации

  • Обязательно представиться на русском языке кириллицей (заполнить поле «Имя»).
  • Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  • Не писать свой вопрос в первую попавшуюся тему — вместо этого создать новую тему.
  • За поиск и предложение пиратского ПО и средств взлома — бан без предупреждения.
  • Рекламу и частные объявления «куплю/продам/есть халтура» мы не размещаем ни на каких условиях.
  • Перед тем как что-то написать — читать здесь и здесь.

Area length error when reading/writing

Area length error when reading/writing

Сообщение depr123 » 29 май 2017, 10:36

Добрый день!
Используем контроллер S-300, который опрашивает по профибас цифровые преобразователи PAC 3200.
Затем с каждого PAC считываем данные, делаем разные арифметические манипуляции и складываем в DB «AI Data SHP03

L PID 992
L 1.000000e+006
/R
T «AI Data SHP03».A16_1.Total_Activ_Power

Но в диагногстическом буфере выходит такая ошибка

Event 7 of 10: Event ID 16# 2523
Area length error when writing
Global DB, double-word access, Access address: 992
Requested OB: Programming error OB (OB121)
Priority class: 1
Internal error, Incoming event
08:05:29.763 AM 05/24/2017

Event 8 of 10: Event ID 16# 2522
Area length error when reading
Global DB, double-word access, Access address: 992
Requested OB: Programming error OB (OB121)
Priority class: 1
Internal error, Incoming event
08:05:29.763 AM 05/24/2017

Понимаю что это невозможность и прочесть и записать с адреса 992. Но где проблема понять не могу. Так как в DB данные с этого адреса есть. А больше номер 992 нигде не используется.

Источник

Area length error when writing step7

Description:
The area length error appears if references are made to addresses that do not exist in the STEP 7 program or when parameterizing the block call. The Online Help in STEP 7 gives two reasons for this:

  • The value addressed by the access address is outside or not entirely inside the permissible address area (CPU-specific size).
  • Due to an incorrect address calculation the addressed value is >65535. In the case of indirect addressing, an address value of greater than 65535 might occur through incorrect calculation. This value can no longer be entered correctly in the detail information of the event. Then for S7-300 a 0 is entered and displayed as access address and the calculated value modulo 65535 for S7-400.

«When you are courting a nice girl an hour seems like a second. When you sit on a red-hot cinder a second seems like an hour. That’s relativity.»
Albert Einstein (1879-1955)

May have something to do with using AR2 to store your pointer offsets when AR2 points to the Instance DB when using FB’s.

Set some breakpoints and step through your code keeping an eye on the DB,AR registers.

Hi
504bloke i have used #call_fwd_I as in_out variable, so even if I use M0.0 for it, it give me error.So no problem with outside the access area. Incorrect calculation cannot apprehend why.
But some thing to do with AR2 as STL?? said. Because when I write

LAR2 P##call_fwd_I
A #call_fwd_I

Also problem only comes when logic in network 4 gets executed.
Some more light.

Источник

PLCforum.uz.ua

International PLC Forum

Request: пример с стандартным ПИД-регулятором

Request: пример с стандартным ПИД-регулятором

Post by a_gricaj » Thu Jul 07, 2011 12:29 pm

Re: Request: пример с стандартным ПИД-регулятором

Post by Oldman » Thu Jul 07, 2011 7:19 pm

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

Re: Request: пример с стандартным ПИД-регулятором

Post by a_gricaj » Fri Jul 08, 2011 11:51 am

Эти все ссылки находил и раньше, но там теория, а мну интересует стандартный пид регулятор — там масса параметров, многие понятны так как с теорией регулирования знаком. Интерисует минимальный набор параметров которые нужны для работы регулятора. Понял, что блок регулятора надо вызывать в ОВ85 напр. или в друм в зависимости от необходимомого периода опроса — а дальше??

Какую входную величину лучше подавать — реал или в формате переферии и т.д.

Re: Request: пример с стандартным ПИД-регулятором

Post by Oldman » Fri Jul 08, 2011 12:08 pm

Re: Request: пример с стандартным ПИД-регулятором

Post by CHANt » Sat Jul 09, 2011 7:03 pm

a_gricaj wrote: Интересует минимальный набор параметров которые нужны для работы регулятора. Понял, что блок регулятора надо вызывать в ОВ85 напр. или в друм в зависимости от необходимомого периода опроса — а дальше??

Какую входную величину лучше подавать — реал или в формате переферии и т.д.

1) Регулятор надо вызывать в двух организационных блоках:
а) в ОВ100 вызвать со своим экземплярным блоком данных, можно не задавать входы/выходы только параметр «COM_RST» установить в единичку. Это нужно чтобы сбросить промежуточные расчеты в DB, после запуска ЦПУ, чтобы регулятор начал работать с начальными параметрами.
б) в ОВ35, которому можно задать время периодичности вызова в HWConfig, в настройках ЦПУ, в ОВ35 и выполняется конфигурирование всех входов/выходов.
2) Минимальные данные? А какой регулятор ты выбрал для работы? В общем случае:
Входа:
а) «COM_RST» в ноль
б) «MAN_ON» включить ручной режим управления
в) «MAN» задать величину открытия/закрытия в ручном режиме управления
г)»CYCLE» период расчет данных в функциональном блоке
д)»CYCLE_P» период вызова FB, обычно равный вызову ОВ35
е) «SP_INT» величина уставки
ж)»PV_IN» или «PV_PER»,тут уж выбирай как удобней. Я обычно конвертирую в контроллере все датчики сразу и работаю REALовской величиной, соответственно вход «PV_IN»
Далее, я не знаю какой тип регулятора у тебя
Выхода:
«LMN» либо «LMN_PER» опять же дело вкуса. Для «LMN» реаловскую величину нужно будет конвертнуть через FC106
Обычно вся сименсовская документация по ПИДам подкреплена примерами с моделью, т.е. можно «вживую» погонять на симуляторе. В доке написано, как называется пример, обычно он ставится вместе со Step7.

P.S. «Старый», хорош бурдеть! В отпуск надо иногда ходить!

Источник

a_gricaj

Posts: 202
Joined: Wed Mar 19, 2008 1:12 pm
Location: Ukraine

Request: пример с стандартным ПИД-регулятором

Кинте ссылку на пример с стандартным ПИД-регулятором, плз)
Искал, и на форуме толком нет ничего, а некоторые ссылки вообще не работают ((


Oldman

Posts: 797
Joined: Tue Aug 21, 2007 7:05 am

Re: Request: пример с стандартным ПИД-регулятором

Post

by Oldman » Thu Jul 07, 2011 7:19 pm

viewtopic.php?f=9&t=10321 , viewtopic.php?f=9&t=11293 , viewtopic.php?f=9&t=8169

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


a_gricaj

Posts: 202
Joined: Wed Mar 19, 2008 1:12 pm
Location: Ukraine

Re: Request: пример с стандартным ПИД-регулятором

Post

by a_gricaj » Fri Jul 08, 2011 11:51 am

Эти все ссылки находил и раньше, но там теория, а мну интересует стандартный пид регулятор — там масса параметров, многие понятны так как с теорией регулирования знаком. Интерисует минимальный набор параметров которые нужны для работы регулятора. Понял, что блок регулятора надо вызывать в ОВ85 напр. или в друм в зависимости от необходимомого периода опроса — а дальше??

Какую входную величину лучше подавать — реал или в формате переферии и т.д.


Oldman

Posts: 797
Joined: Tue Aug 21, 2007 7:05 am

Re: Request: пример с стандартным ПИД-регулятором

Post

by Oldman » Fri Jul 08, 2011 12:08 pm

там на одной из ссылок есть линк на сайт komatic http://www.plc4good.org.ua/view_post.php?id=97 (это как пример).если поизучаешь сайт то и пример найдешь.ну и последнее пробуй сам писать и пытайся настраивать ПИД .ну все же есть на сайте достаточно включить мозги и напрячься.сходи на форум официальный сименса там при прочтении постов многому можно научится.есть еще такой сайт http://s7-facility.blogspot.com/ на нем тоже можно подчерпнуть много всего.ну ленишься же.скажи что я не прав.меня еще и поимели админы.кто хочет развиваться найдет способ.другое дело если б было видно что делал усилия и ничего не получается а так лень твоя виновата.звиняйте если слишком резко но на правду не обижаются.


CHANt

Posts: 501
Joined: Tue Jun 27, 2006 5:52 am
Location: Russia

Re: Request: пример с стандартным ПИД-регулятором

Post

by CHANt » Sat Jul 09, 2011 7:03 pm

a_gricaj wrote:Интересует минимальный набор параметров которые нужны для работы регулятора. Понял, что блок регулятора надо вызывать в ОВ85 напр. или в друм в зависимости от необходимомого периода опроса — а дальше??

Какую входную величину лучше подавать — реал или в формате переферии и т.д.

1) Регулятор надо вызывать в двух организационных блоках:
а) в ОВ100 вызвать со своим экземплярным блоком данных, можно не задавать входы/выходы только параметр «COM_RST» установить в единичку. Это нужно чтобы сбросить промежуточные расчеты в DB, после запуска ЦПУ, чтобы регулятор начал работать с начальными параметрами.
б) в ОВ35, которому можно задать время периодичности вызова в HWConfig, в настройках ЦПУ, в ОВ35 и выполняется конфигурирование всех входов/выходов.
2) Минимальные данные? А какой регулятор ты выбрал для работы? В общем случае:
Входа:
а) «COM_RST» в ноль
б) «MAN_ON» включить ручной режим управления
в) «MAN» задать величину открытия/закрытия в ручном режиме управления
г)»CYCLE» период расчет данных в функциональном блоке
д)»CYCLE_P» период вызова FB, обычно равный вызову ОВ35
е) «SP_INT» величина уставки
ж)»PV_IN» или «PV_PER»,тут уж выбирай как удобней. Я обычно конвертирую в контроллере все датчики сразу и работаю REALовской величиной, соответственно вход «PV_IN»
Далее, я не знаю какой тип регулятора у тебя
Выхода:
«LMN» либо «LMN_PER» опять же дело вкуса. Для «LMN» реаловскую величину нужно будет конвертнуть через FC106
Обычно вся сименсовская документация по ПИДам подкреплена примерами с моделью, т.е. можно «вживую» погонять на симуляторе. В доке написано, как называется пример, обычно он ставится вместе со Step7.

P.S. «Старый», хорош бурдеть! В отпуск надо иногда ходить! :D


Oldman

Posts: 797
Joined: Tue Aug 21, 2007 7:05 am

Re: Request: пример с стандартным ПИД-регулятором

Post

by Oldman » Sun Jul 10, 2011 5:15 am

все что CHANT объяснил, есть тут с примерами http://old.automation-drives.ru/as/prod … %CE&l3=doc надо тока сделать над собой усилие ну или захотеть в чем либо разобраться.сименс наверное одна из лучших контор, если не самая лучшая по техподдержке.официальных доков по базовым вещам море в том числе на русском .читай не хочу.смотреть тут страничку что привел надо Internet Explorer а не другими модными браузерами.
P.S.за советы спасибо


a_gricaj

Posts: 202
Joined: Wed Mar 19, 2008 1:12 pm
Location: Ukraine

Re: Request: пример с стандартным ПИД-регулятором

Post

by a_gricaj » Mon Jul 11, 2011 1:02 pm

Спасибо Вам CHANt за помощь — всегда помогаете.

Но пока не получается:
Создал я в контроллере FB41-CONT_C (ПИД регулятор) и его экземплярный блок DB41, есть также ОВ1, ОВ35, ОВ86, ОВ88, ОВ100, ОВ120 и ОВ121
В ОВ1 вставляю FB41 (без задания параметров) — заливаю в контроллер ошибки нет, открываю ОВ35 и прописываю вызов FB41 на STL:

И появляется вот такая ошибка в диагностическом буфере:

Order No./ Description Component Version
6ES7 416-2XK04-0AB0 Hardware 2
— — — Firmware V 4.0.3
Rack: 0
Slot: 3
Serial number: SVPT3373834

Event 1 of 110: Event ID 16# 2523
Area length error when writing
Instance DB, word access, Access address: 76
FB number: 41
Module address: 1412
Requested OB: Programming error OB (OB121)
Priority class: 12
Internal error, Incoming event
01:44:52.001 AM 01/01/1994

Event 2 of 110: Event ID 16# 2523
Area length error when writing
Instance DB, double-word access Access address: 72
FB number: 41
Module address: 1350
Requested OB: Programming error OB (OB121)
Priority class: 12
Internal error, Incoming event
01:44:52.001 AM 01/01/1994

Event 3 of 110: Event ID 16# 2522
Area length error when reading
Instance DB, double-word access Access address: 60
FB number: 41
Module address: 1340
Requested OB: Programming error OB (OB121)
Priority class: 12
Internal error, Incoming event
01:44:52.001 AM 01/01/1994

Event 4 of 110: Event ID 16# 2522
Area length error when reading
Instance DB, double-word access Access address: 56
FB number: 41
Module address: 1334
Requested OB: Programming error OB (OB121)
Priority class: 12
Internal error, Incoming event
01:44:52.001 AM 01/01/1994

Что я неправильно делаю??????


CHANt

Posts: 501
Joined: Tue Jun 27, 2006 5:52 am
Location: Russia

Re: Request: пример с стандартным ПИД-регулятором

Post

by CHANt » Mon Jul 11, 2011 5:02 pm

Не толкай регулятор в ОВ1! На то он и ОВ1 что у него самый низкий приоритет. Т.е. ОВ1 приостанавливает выполнение, когда другие ОВ вызываются. На это в документации на любой регулятор и указывают. Либо тогда специальные меры принимай, чтобы Cycle_P содержал реальные данные о времени выполнения ОВ1. Лучше вставь в ОВ35.


a_gricaj

Posts: 202
Joined: Wed Mar 19, 2008 1:12 pm
Location: Ukraine

Re: Request: пример с стандартным ПИД-регулятором

Post

by a_gricaj » Mon Jul 11, 2011 5:08 pm

Все работает (регулирование частоты привода через частотник и аналоговый датчик уровня) но есть програмная ошибка (горит INTF)
и ошибка похожая на ту, что раньше была.

То-есть лучше регулятор с параметрами запихнуть в функцию или в ОВ35 вставить???

А в библиотечном FB41 нет параметра Cycle_P. как тут поступать?

Запихнул регулятор в функцию — ошибка осталась(По аналогии из прогой которая работает у меня на заводе- хочу разобраться), где я могу быть не прав???


sania

Site Admin
Posts: 1333
Joined: Sat Aug 13, 2005 6:15 am
Contact:

Re: Request: пример с стандартным ПИД-регулятором

Post

by sania » Mon Jul 11, 2011 5:52 pm

ааа ,сори,увидел что раньше выдал буфер
тогда сделай так:
сотри дб из списка блоков
открой там где вызываешь пид
сотри вызов дб
впиши снова
подтверди его создание
сохрани
загрузи в плк дб

a_gricaj wrote:По аналогии из прогой которая работает у меня на заводе- хочу разобраться

только если сама функция вызывается из об35,тогда будет работать правильно
вот пример
Image


CHANt

Posts: 501
Joined: Tue Jun 27, 2006 5:52 am
Location: Russia

Re: Request: пример с стандартным ПИД-регулятором

Post

by CHANt » Mon Jul 11, 2011 6:11 pm

Не знаю, почему у тебя ЦПУ ругается на экземплярный блок данных, может что-то с ним делал? Попробуй удалить и создать снова. (Собственно, Sania уже подсказал) :)
Pid_fb41.zip — сконфигурировал, грузится в симулятор без проблем. Можешь посмотреть — включил П+И+Д, сконфигурировал ручное управления, задал уставку, задал датчик, определил в каком диапазоне будет лежать выход регулятора (0..100%), задал цикл расчета. в ОВ100 тоже показал как сбрасываются статические переменные.


dmitry_79

Posts: 149
Joined: Sun Dec 20, 2009 1:30 pm
Location: Russia

Re: Request: пример с стандартным ПИД-регулятором

Post

by dmitry_79 » Tue Jul 12, 2011 4:56 am

А про построение каскадных регуляторов на базе FB41 есть какая нибудь информация? Примеры? Все что сумел найти в документации — это краткое упоминание о возможности построения сложных регуляторов… ничего конкретного…

Best regards!



a_gricaj

Posts: 202
Joined: Wed Mar 19, 2008 1:12 pm
Location: Ukraine

Re: Request: пример с стандартным ПИД-регулятором

Post

by a_gricaj » Tue Jul 12, 2011 1:22 pm

Пока не получается — все равно висит эта програмная ошибка

Может у кого будет время, посмотрите плз мою програму (ткните носом — где я партачу), ссылка — http://webfile.ru/5434809
а пока попробую пример от CHANt


sania

Site Admin
Posts: 1333
Joined: Sat Aug 13, 2005 6:15 am
Contact:

Re: Request: пример с стандартным ПИД-регулятором

Post

by sania » Tue Jul 12, 2011 7:13 pm

блин так зачем его 2 раза вызывать? в об1 и об35,дак ещё и без DI!
вызов фс1 перенеси в об35,а то что там сотри

P.S.возьми-ка ты лучше проект CHANt`a и не парь мозги
P.S.S. конструкция UC FB 41 подразумевает что перед ней ты задал ВСЕ необходимые ей данные
т.е. перед этим должно быть как минимум OPN DI 41


CHANt

Posts: 501
Joined: Tue Jun 27, 2006 5:52 am
Location: Russia

Re: Request: пример с стандартным ПИД-регулятором

Post

by CHANt » Tue Jul 12, 2011 7:57 pm

Можно еще добавить:
1) Зачем открывать DB41 (это экземплярный DB) командой «OPN»? Не надо. Открываются DB в теле какой нибудь функции, чтобы работать с прямой адресацией, типа: DBW2. Если его не открывать, то вид адресации будет: DB41.DBW2. А ты открыл DB и тут же обращаешься к ней по полной адресации (это я про ОВ1, раздел с частотником).
2) Отключи Д составляющую. Для уровня она тебе не нужна. Ты ее физический смысл понимаешь?
3) переключение на ручной режим (MAN_ON) и задание уровня открытия (MAN) вытащи на панель. Будет удобно тестировать регулятор и если надо отключать.
4) Обрати внимание на значения границ выхода LMN, это параметры LMN_HLM=100.0 и LMN_LLM=0.0. Если их сделать соответственно LMN_HLM=85.0 и LMN_LLM=5.0 ТО регулятор на выходе даст не более 85 условных единиц и не менее 5 условных единиц. Удобно очень оставлять некий пропуск по нижнему порогу (с точки зрения ТБ), так как регулятор не является отсекающим устройством. Или например, у тебя управляющий сигнал не 0..10В, а 2..10В.
5) LMN… Вообще есть стандартная FC106, аналогичная FC105 тобой использованная. Но, если у тебя управляющий сигнал в полном диапазоне: 0..10В, 4..20мА, 0..20мА, то тут лучше применить наверное LMN_PER, так как выход у тебя с контроллера идет. Т.е. сразу PQW518 задать.
В общем, не забывай ткнуть в FB41 мышкой и нажать F1


a_gricaj

Posts: 202
Joined: Wed Mar 19, 2008 1:12 pm
Location: Ukraine

Re: Request: пример с стандартным ПИД-регулятором

Post

by a_gricaj » Wed Jul 13, 2011 4:01 pm

Все получилось (сделал как советовал sania) — когда стал вызывать FC1 (а в FC1 вызываеться блок регулятора) в ОВ35 — ошибка пропала

1. Я вызывал регулятор и в ОВ35 и в FC1 — так получается нельзя? Почему??

2. Но есть работоспособный вариант когда в ОВ35 вызываеться функциональный блок регулятора строкой: UC FB41(ПИД-регулятор), и тогда больше нигде не надо вставлять FB41, а параметрирование FB41 в таком случае следует делать через его экземплярный блок??????


CHANt

Posts: 501
Joined: Tue Jun 27, 2006 5:52 am
Location: Russia

Re: Request: пример с стандартным ПИД-регулятором

Post

by CHANt » Wed Jul 13, 2011 4:21 pm

a_gricaj wrote:1. Я вызывал регулятор и в ОВ35 и в FC1 — так получается нельзя? Почему??

А как ты себе представляешь работу одного и того же два раза? В расчетах мешанина будет, результат не предсказуем…

a_gricaj wrote:2. Но есть работоспособный вариант когда в ОВ35 вызываеться функциональный блок регулятора строкой: UC FB41(ПИД-регулятор), и тогда больше нигде не надо вставлять FB41,

Второй раз только в ОВ100 надо вызывать его, для сброса stat-переменных DB41 при старте контроллера.

a_gricaj wrote:а параметрирование FB41 в таком случае следует делать через его экземплярный блок??????

Да.
А какую цель ты преследуешь вызовом UC? Левой ногой, правое ухо? :)


a_gricaj

Posts: 202
Joined: Wed Mar 19, 2008 1:12 pm
Location: Ukraine

Re: Request: пример с стандартным ПИД-регулятором

Post

by a_gricaj » Wed Jul 13, 2011 4:32 pm

Понял БОЛЬШОЕ СПС за разяснения)


sania

Site Admin
Posts: 1333
Joined: Sat Aug 13, 2005 6:15 am
Contact:

Re: Request: пример с стандартным ПИД-регулятором

Post

by sania » Wed Jul 13, 2011 6:43 pm

ошибка пропала не от переноса фс,а от удаления UC
в оригинальной проге скорей всего перед UC задан DI

а вообще прикольно, в 400-м при 5 строчках кода, скан об1 должен быть 1-2 мсек,а в настройках пид — 100.
т.е. его ошибка в 50 раз
если это тебя удовлетворяет…он же работает как он/офф,может задуматься о том что пид и не нужен?


a_gricaj

Posts: 202
Joined: Wed Mar 19, 2008 1:12 pm
Location: Ukraine

Re: Request: пример с стандартным ПИД-регулятором

Post

by a_gricaj » Thu Jul 14, 2011 3:08 pm

А, что ты меешь ввиду под «ДИ»??????????????????????


sania

Site Admin
Posts: 1333
Joined: Sat Aug 13, 2005 6:15 am
Contact:

Re: Request: пример с стандартным ПИД-регулятором

Post

by sania » Thu Jul 14, 2011 4:17 pm

извиняюсь,лень было переходить с языка на язык :haha:
DI : инстанс дата блок.
вызов : CALL FB41, DB41 ,подразумевает : вызвать FB41 с DI41



Old
November 21st, 2009, 05:01 AM

 
#1

Member

India

manmeetvirdi is offline

 

Join Date: Oct 2004

Location: India.

Posts: 750

Area length error when reading


Hi there
Iam unable to understand as to why PLC gives «

Area Length error when reading

» if I add «

A#call_fwd_I

» at the very end of the block.

Code:

FUNCTION_BLOCK FB 100
TITLE =
//1)check if station is enabled.
//2)if enabled then wait for the demand of that station.
//3)iF demand of all the active stations comes then generate the sequence 
//number orderly.
VERSION : 0.1


VAR_INPUT
  stn1_ena_hmi : BOOL ;    
  stn2_ena_hmi : BOOL ;    
  stn3_ena_hmi : BOOL ;    
  stn4_ena_hmi : BOOL ;    
END_VAR
VAR_IN_OUT
  stn4_call_I : BOOL ;    
  stn3_call_I : BOOL ;    
  stn2_call_I : BOOL ;    
  stn1_call_I : BOOL ;    
  call_fwd_I : BOOL ;    
END_VAR
VAR
  stn1_active : BOOL ;    
  stn2_active : BOOL ;    
  stn3_Active : BOOL ;    
  stn4_active : BOOL ;    
  call_fwd : BOOL ;    
  fp_st1 : BOOL ;    
  fp_st2 : BOOL ;    
  fp_st3 : BOOL ;    
  fp_st4 : BOOL ;    
  ena_inc : INT ;    
  fn_st1 : BOOL ;    
  fn_st2 : BOOL ;    
  fn_st3 : BOOL ;    
  fn_st4 : BOOL ;    
  fwd_demand : INT ;    
  fp_st1_f : BOOL ;    
  fp_st2_f : BOOL ;    
  fp_st3_f : BOOL ;    
  fp_st4_f : BOOL ;    
  fn_st1_f : BOOL ;    
  fn_st2_f : BOOL ;    
  fn_st3_f : BOOL ;    
  fn_st4_f : BOOL ;    
  stn4 : INT ;    
  stn3 : INT ;    
  stn2 : INT ;    
  stn1 : INT ;    
  fp_reset : BOOL ;    
END_VAR
VAR_TEMP
  count : INT ;    
  count1 : INT ;    
END_VAR
BEGIN
NETWORK
TITLE =to know number of the active stuffing station

//increment the counter

      A     #stn1_ena_hmi; 
      FP    #fp_st1; 
      JCN   st2; 
      L     #ena_inc; 
      L     1; 
      +I    ; 
      T     #ena_inc; 



st2:  A     #stn2_ena_hmi; 
      FP    #fp_st2; 
      JCN   st3; 
      L     #ena_inc; 
      L     1; 
      +I    ; 
      T     #ena_inc; 

st3:  A     #stn3_ena_hmi; 
      FP    #fp_st3; 
      JCN   st4; 
      L     #ena_inc; 
      L     1; 
      +I    ; 
      T     #ena_inc; 

st4:  A     #stn4_ena_hmi; 
      FP    #fp_st4; 
      JCN   end1; 
      L     #ena_inc; 
      L     1; 
      +I    ; 
      T     #ena_inc; 

end1: NOP   0; 

//decrement the counter


      A     #stn1_ena_hmi; 
      FN    #fn_st1; 
      JCN   st2n; 
      L     #ena_inc; 
      L     -1; 
      +I    ; 
      T     #ena_inc; 

st2n: A     #stn2_ena_hmi; 
      FN    #fn_st2; 
      JCN   st3n; 
      L     #ena_inc; 
      L     -1; 
      +I    ; 
      T     #ena_inc; 

st3n: A     #stn3_ena_hmi; 
      FN    #fn_st3; 
      JCN   st4n; 
      L     #ena_inc; 
      L     -1; 
      +I    ; 
      T     #ena_inc; 


st4n: A     #stn4_ena_hmi; 
      FN    #fn_st4; 
      JCN   end2; 
      L     #ena_inc; 
      L     -1; 
      +I    ; 
      T     #ena_inc; 
end2: NOP   0; 




NETWORK
TITLE =to know number of the call forward demands

//increment the counter
      A     #stn4_ena_hmi; 
      A     #stn4_call_I; 
      FP    #fp_st1_f; 
      JCN   st2f; 
      L     #fwd_demand; 
      L     1; 
      +I    ; 
      T     #fwd_demand; 

st2f: A     #stn3_call_I; 
      A     #stn3_ena_hmi; 
      FP    #fp_st2_f; 
      JCN   st3f; 
      L     #fwd_demand; 
      L     1; 
      +I    ; 
      T     #fwd_demand; 

st3f: A     #stn2_call_I; 
      A     #stn2_ena_hmi; 
      FP    #fp_st3_f; 
      JCN   st4f; 
      L     #fwd_demand; 
      L     1; 
      +I    ; 
      T     #fwd_demand; 

st4f: A     #stn1_call_I; 
      A     #stn1_ena_hmi; 
      FP    #fp_st4_f; 
      JCN   end3; 
      L     #fwd_demand; 
      L     1; 
      +I    ; 
      T     #fwd_demand; 

end3: NOP   0; 

//decrement the counter


      A     #stn4_call_I; 
      A     #stn4_ena_hmi; 
      FN    #fn_st1_f; 
      JCN   st2r; 
      L     #fwd_demand; 
      L     -1; 
      +I    ; 
      T     #fwd_demand; 

st2r: A     #stn3_call_I; 
      A     #stn3_ena_hmi; 
      FN    #fn_st2_f; 
      JCN   st3r; 
      L     #fwd_demand; 
      L     -1; 
      +I    ; 
      T     #fwd_demand; 

st3r: A     #stn2_call_I; 
      A     #stn2_ena_hmi; 
      FN    #fn_st3_f; 
      JCN   st4r; 
      L     #fwd_demand; 
      L     -1; 
      +I    ; 
      T     #fwd_demand; 


st4r: A     #stn1_call_I; 
      A     #stn1_ena_hmi; 
      FN    #fn_st4_f; 
      JCN   end4; 
      L     #fwd_demand; 
      L     -1; 
      +I    ; 
      T     #fwd_demand; 

end4: NOP   0; 









NETWORK
TITLE =
//to check is number of active stations are equal to call fwd demand
      O(    ; 
      L     #fwd_demand; 
      L     0; 
      ==I   ; 
      )     ; 
      O     #call_fwd; 
      JC    end5; 
      L     #fwd_demand; 
      L     #ena_inc; 
      ==I   ; 
      JCN   end5; 

      S     #call_fwd_I; 
end5: NOP   0; 
////reset the set bit after the acknowledgement is received

      A     #call_fwd_I; 
      FN    #fp_reset; 
      JCN   end6; 
      R     #call_fwd; 
      R     #stn1_call_I; 
      R     #stn2_call_I; 
      R     #stn3_call_I; 
      R     #stn4_call_I; 

      L     0; 
      T     #stn4; 
      T     #stn3; 
      T     #stn2; 
      T     #stn1; 
end6: NOP   0; 


NETWORK
TITLE =
//once the call_fwd is set now name the stations according to priority basis

      A     #call_fwd_I; 
      AN    #call_fwd; 
      JCN   fin; 

      SET   ; 
      S     #call_fwd; 


      LAR1  P##stn4_call_I; 
      LAR2  P##stn4; 
      L     5; 
      T     #count1; 

      L     4; 
c2:   T     #count; 
      A      [AR1,P#0.0]; 
      JCN   c1; 
      L     #count1; 
      L     #count; 
      -I    ; 
      T     W [AR2,P#0.0]; 
      JU    c3; 

c1:   L     #count1; 
      L     -1; 
      +I    ; 
      T     #count1; 



c3:   +AR1  P#0.1; 
      +AR2  P#2.0; 

      L     #count; 
      LOOP  c2; 


fin:  NOP   0; 


      A     #call_fwd_I; 
END_FUNCTION_BLOCK

What on?

regards

__________________
Manmeet

 

Reply With Quote

Old
November 21st, 2009, 05:51 AM

 
#2

Lifetime Supporting Member

England

504bloke is offline

 

504bloke's Avatar

 

Join Date: Jan 2005

Location: Down South

Posts: 2,711

From Siemens web site

Description:
The area length error appears if references are made to addresses that do not exist in the STEP 7 program or when parameterizing the block call. The Online Help in STEP 7 gives two reasons for this:

  • The value addressed by the access address is outside or not entirely inside the permissible address area (CPU-specific size).
  • Due to an incorrect address calculation the addressed value is >65535. In the case of indirect addressing, an address value of greater than 65535 might occur through incorrect calculation. This value can no longer be entered correctly in the detail information of the event. Then for S7-300 a 0 is entered and displayed as access address and the calculated value modulo 65535 for S7-400.

__________________
Regards

Dave

«When you are courting a nice girl an hour seems like a second. When you sit on a red-hot cinder a second seems like an hour. That’s relativity.»
Albert Einstein (1879-1955)

 

Reply With Quote

Old
November 21st, 2009, 06:20 AM

 
#3

Member

United Kingdom

STL??? is offline

 

Join Date: Sep 2005

Location: UK

Posts: 879

May have something to do with using AR2 to store your pointer offsets when AR2 points to the Instance DB when using FB’s.

Set some breakpoints and step through your code keeping an eye on the DB,AR registers.


Last edited by STL???; November 21st, 2009 at 06:24 AM.

 

Reply With Quote

Old
November 21st, 2009, 06:47 AM

 
#4

Member

India

manmeetvirdi is offline

 

Join Date: Oct 2004

Location: India.

Posts: 750

Hi
504bloke i have used #call_fwd_I as in_out variable, so even if I use M0.0 for it, it give me error.So no problem with outside the access area. Incorrect calculation cannot apprehend why.
But some thing to do with AR2 as STL?? said. Because when I write

LAR2 P##call_fwd_I
A #call_fwd_I

Problem disappears!!

Also problem only comes when logic in network 4 gets executed.
Some more light……………..

__________________
Manmeet

 

Reply With Quote

Old
November 21st, 2009, 06:56 AM

 
#5

Lifetime Supporting Member

United Kingdom

L D[AR2,P#0.0] is offline

 

Join Date: Nov 2006

Location: UK

Posts: 6,468

Stop, Go directly to jail, if you pass Go, do not collect �200

 

Reply With Quote

Old
November 21st, 2009, 07:13 AM

 
#6

Lifetime Supporting Member

United Kingdom

L D[AR2,P#0.0] is offline

 

Join Date: Nov 2006

Location: UK

Posts: 6,468

.. I’ve just been searching for a relevant post but to no avail.

ALL FB interface variables (IN/IN_OUT/OUT/STAT) are accessed using the instance DB and AR2.

If you modify AR2 inside an FB you cannot access an interface variable whilst AR2 is being used for something.

You must save AR2 in the temp area,
Do your processing using AR2 (only using temps).
Restore AR2 from the temp area.
All interface variable access is now allowed.

 

Reply With Quote

Old
November 21st, 2009, 07:43 AM

 
#7

Member

India

manmeetvirdi is offline

 

Join Date: Oct 2004

Location: India.

Posts: 750

Always restore AR2 inside FB after using it !!


Ah L D[AR2,P#0.0] great
Am feeling relived now…

1) I declared a variable in TEMP Area (TEMP0) with data type DW.
2) Before using AR2 in network 4 i wrote «TAR2 #TEMP0»
3) After using AR2 i restored it by «LAR2 #TEMP0»

Now PLC has no problem !!

OR

Just Point AR2 to any interface variable declared inside IN/OUT/IN_OUT/STAT (

THIS IS WRONG)

Lesson:

Always restore AR2 inside FB after using it !! else if you access an interface variable you will have RED LIGHT.

Thanks and Cheers !

__________________
Manmeet


Last edited by manmeetvirdi; November 21st, 2009 at 08:11 AM.

 

Reply With Quote

Old
November 21st, 2009, 07:48 AM

 
#8

Lifetime Supporting Member

United Kingdom

L D[AR2,P#0.0] is offline

 

Join Date: Nov 2006

Location: UK

Posts: 6,468

You were lucky to get an area read error and a red light — this is not always the case.

Let say that you have two ints in the stat area (iFred then iBert).
AR2 gets incremented by 2 bytes

L iFred is actually loading iBert…. the possibilities for confusion are endless.

 

Reply With Quote

Old
November 21st, 2009, 08:18 AM

 
#9

Member

India

manmeetvirdi is offline

 

Join Date: Oct 2004

Location: India.

Posts: 750

Ok LD I got the point.

Just pointing AR2 to any interface variable declared inside IN/OUT/IN_OUT/STAT (it will remove RED light though) and then performing actions like «L #iFred» will load some value which is not present in #iFred. Great point !

In my code itself if I just add
LAR2 P##stn1_active
L #stn4
A #call_fwd_I

accumulator does not show the right value in #stn4 even though RED LIGHT is gone !!

Thats Mind blowing !!!!

LD you can make a puzzle based on this

__________________
Manmeet


Last edited by manmeetvirdi; November 21st, 2009 at 08:21 AM.

 

Reply With Quote

Форум АСУТП

Клуб специалистов в области промышленной автоматизации

  • Обязательно представиться на русском языке кириллицей (заполнить поле «Имя»).
  • Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  • Не писать свой вопрос в первую попавшуюся тему — вместо этого создать новую тему.
  • За поиск и предложение пиратского ПО и средств взлома — бан без предупреждения.
  • Рекламу и частные объявления «куплю/продам/есть халтура» мы не размещаем ни на каких условиях.
  • Перед тем как что-то написать — читать здесь и здесь.

Area length error when reading/writing

Area length error when reading/writing

Сообщение depr123 » 29 май 2017, 10:36

Добрый день!
Используем контроллер S-300, который опрашивает по профибас цифровые преобразователи PAC 3200.
Затем с каждого PAC считываем данные, делаем разные арифметические манипуляции и складываем в DB «AI Data SHP03

L PID 992
L 1.000000e+006
/R
T «AI Data SHP03».A16_1.Total_Activ_Power

Но в диагногстическом буфере выходит такая ошибка

Event 7 of 10: Event ID 16# 2523
Area length error when writing
Global DB, double-word access, Access address: 992
Requested OB: Programming error OB (OB121)
Priority class: 1
Internal error, Incoming event
08:05:29.763 AM 05/24/2017

Event 8 of 10: Event ID 16# 2522
Area length error when reading
Global DB, double-word access, Access address: 992
Requested OB: Programming error OB (OB121)
Priority class: 1
Internal error, Incoming event
08:05:29.763 AM 05/24/2017

Понимаю что это невозможность и прочесть и записать с адреса 992. Но где проблема понять не могу. Так как в DB данные с этого адреса есть. А больше номер 992 нигде не используется.

Источник

Area length error when reading step7

Description:
The area length error appears if references are made to addresses that do not exist in the STEP 7 program or when parameterizing the block call. The Online Help in STEP 7 gives two reasons for this:

  • The value addressed by the access address is outside or not entirely inside the permissible address area (CPU-specific size).
  • Due to an incorrect address calculation the addressed value is >65535. In the case of indirect addressing, an address value of greater than 65535 might occur through incorrect calculation. This value can no longer be entered correctly in the detail information of the event. Then for S7-300 a 0 is entered and displayed as access address and the calculated value modulo 65535 for S7-400.

«When you are courting a nice girl an hour seems like a second. When you sit on a red-hot cinder a second seems like an hour. That’s relativity.»
Albert Einstein (1879-1955)

May have something to do with using AR2 to store your pointer offsets when AR2 points to the Instance DB when using FB’s.

Set some breakpoints and step through your code keeping an eye on the DB,AR registers.

Hi
504bloke i have used #call_fwd_I as in_out variable, so even if I use M0.0 for it, it give me error.So no problem with outside the access area. Incorrect calculation cannot apprehend why.
But some thing to do with AR2 as STL?? said. Because when I write

LAR2 P##call_fwd_I
A #call_fwd_I

Also problem only comes when logic in network 4 gets executed.
Some more light.

Источник

Area length error when reading step7

Hello fellow programmers!

I’ve come to you with a new problem. currently I am working on a project involving a network of 8 Siemens PLCs (ET200S IM151-8 PN/DP CPU). They all pretty much do the same thing, so they’re configured almost the same, except the HW. They all seem to work flawlessly, except one. This one, when I start it up, immediately turns on the RED SF LED. I’ve attached the Diagnostic Buffer read with Module Information inside Siemens.

I’ve also read Area length error when reading and Please help me: Area length error when reading but I couldn’t figure out what’s the solution to my problem.

I also mention that the CPU doesn’t go into STOP because I loaded all the necessary OBs in order to prevent that (learned this one from this forum ), but the boss see’s every RED thingy as a problem , so I must solve this one in order to get him off my back.

Has anyone ever dealt with this situation? Could anyone help me solve this?

Thanks in advance!
Voicu

P.S. Oh, I forgot to mention. I’m the boss.

Источник

PLCforum.uz.ua

International PLC Forum

Request: пример с стандартным ПИД-регулятором

Request: пример с стандартным ПИД-регулятором

Post by a_gricaj » Thu Jul 07, 2011 12:29 pm

Re: Request: пример с стандартным ПИД-регулятором

Post by Oldman » Thu Jul 07, 2011 7:19 pm

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

Re: Request: пример с стандартным ПИД-регулятором

Post by a_gricaj » Fri Jul 08, 2011 11:51 am

Эти все ссылки находил и раньше, но там теория, а мну интересует стандартный пид регулятор — там масса параметров, многие понятны так как с теорией регулирования знаком. Интерисует минимальный набор параметров которые нужны для работы регулятора. Понял, что блок регулятора надо вызывать в ОВ85 напр. или в друм в зависимости от необходимомого периода опроса — а дальше??

Какую входную величину лучше подавать — реал или в формате переферии и т.д.

Re: Request: пример с стандартным ПИД-регулятором

Post by Oldman » Fri Jul 08, 2011 12:08 pm

Re: Request: пример с стандартным ПИД-регулятором

Post by CHANt » Sat Jul 09, 2011 7:03 pm

a_gricaj wrote: Интересует минимальный набор параметров которые нужны для работы регулятора. Понял, что блок регулятора надо вызывать в ОВ85 напр. или в друм в зависимости от необходимомого периода опроса — а дальше??

Какую входную величину лучше подавать — реал или в формате переферии и т.д.

1) Регулятор надо вызывать в двух организационных блоках:
а) в ОВ100 вызвать со своим экземплярным блоком данных, можно не задавать входы/выходы только параметр «COM_RST» установить в единичку. Это нужно чтобы сбросить промежуточные расчеты в DB, после запуска ЦПУ, чтобы регулятор начал работать с начальными параметрами.
б) в ОВ35, которому можно задать время периодичности вызова в HWConfig, в настройках ЦПУ, в ОВ35 и выполняется конфигурирование всех входов/выходов.
2) Минимальные данные? А какой регулятор ты выбрал для работы? В общем случае:
Входа:
а) «COM_RST» в ноль
б) «MAN_ON» включить ручной режим управления
в) «MAN» задать величину открытия/закрытия в ручном режиме управления
г)»CYCLE» период расчет данных в функциональном блоке
д)»CYCLE_P» период вызова FB, обычно равный вызову ОВ35
е) «SP_INT» величина уставки
ж)»PV_IN» или «PV_PER»,тут уж выбирай как удобней. Я обычно конвертирую в контроллере все датчики сразу и работаю REALовской величиной, соответственно вход «PV_IN»
Далее, я не знаю какой тип регулятора у тебя
Выхода:
«LMN» либо «LMN_PER» опять же дело вкуса. Для «LMN» реаловскую величину нужно будет конвертнуть через FC106
Обычно вся сименсовская документация по ПИДам подкреплена примерами с моделью, т.е. можно «вживую» погонять на симуляторе. В доке написано, как называется пример, обычно он ставится вместе со Step7.

P.S. «Старый», хорош бурдеть! В отпуск надо иногда ходить!

Источник

Hi I’m a bit new to Siemens, we;re an Allen Bradley plant…until now. we just got a brand new used press and it has a seimens controller on it. The press doesn’t seem to have any manual functions so I as asked to move the cylinder, but I can’t until I clear this fault. it won’t do anything. 

I’m told I’m working with an older processor, s7 300?I don’t really know seimens that well. 

I saved the diagnostics buffer as a text file and pasted it below. in case that helps solve my problem. I’m thinking it’s just having trouble communicating with remote IO, but I’m not sure. I might be trying to communicate to a robot that used to be there that no longer is. 

Diagnostic buffer of module CPU 314C-2 DP

Order No./ Description            Component                         Version                       
6ES7 314-6CH04-0AB0               Hardware                          5                             
— — —                             Firmware                          V 3.3.11                      
Boot Loader                       Firmware expansion                A 37.12.12                    

Rack:                             0
Slot:                             2


Serial number: S Q-EDU050142014


Event 1 of 10:  Event ID 16# 2522
Area length error when reading
Global DB, word access, Access address:    262
Requested OB: Programming error OB (OB121)
Priority class:  1
Internal error, Incoming event
10:36:07.052 AM  04/17/2019
(Coding: 16# 2522  0179  0024  0106  0000  0000)


Event 2 of 10:  Event ID 16# 2522
Area length error when reading
Global DB, word access, Access address:    260
Requested OB: Programming error OB (OB121)
Priority class:  1
Internal error, Incoming event
10:36:07.052 AM  04/17/2019
(Coding: 16# 2522  0179  0024  0104  0000  0000)


Event 3 of 10:  Event ID 16# 2943
I/O access error, writing
P area, word access, Access address:     40
Requested OB: I/O access error OB (OB122)
Priority class:  1
External error, Incoming event
10:36:07.052 AM  04/17/2019
(Coding: 16# 2943  017A  0020  0028  0000  0000)


Event 4 of 10:  Event ID 16# 2943
I/O access error, writing
P area, word access, Access address:     36
Requested OB: I/O access error OB (OB122)
Priority class:  1
External error, Incoming event
10:36:07.052 AM  04/17/2019
(Coding: 16# 2943  017A  0020  0024  0000  0000)


Event 5 of 10:  Event ID 16# 2943
I/O access error, writing
P area, word access, Access address:     38
Requested OB: I/O access error OB (OB122)
Priority class:  1
External error, Incoming event
10:36:07.051 AM  04/17/2019
(Coding: 16# 2943  017A  0020  0026  0000  0000)


Event 6 of 10:  Event ID 16# 2522
Area length error when reading
Global DB, word access, Access address:    262
Requested OB: Programming error OB (OB121)
Priority class:  1
Internal error, Incoming event
10:36:07.051 AM  04/17/2019
(Coding: 16# 2522  0179  0024  0106  0000  0000)


Event 7 of 10:  Event ID 16# 2522
Area length error when reading
Global DB, word access, Access address:    260
Requested OB: Programming error OB (OB121)
Priority class:  1
Internal error, Incoming event
10:36:07.050 AM  04/17/2019
(Coding: 16# 2522  0179  0024  0104  0000  0000)


Event 8 of 10:  Event ID 16# 2943
I/O access error, writing
P area, word access, Access address:     40
Requested OB: I/O access error OB (OB122)
Priority class:  1
External error, Incoming event
10:36:07.050 AM  04/17/2019
(Coding: 16# 2943  017A  0020  0028  0000  0000)


Event 9 of 10:  Event ID 16# 2943
I/O access error, writing
P area, word access, Access address:     36
Requested OB: I/O access error OB (OB122)
Priority class:  1
External error, Incoming event
10:36:07.050 AM  04/17/2019
(Coding: 16# 2943  017A  0020  0024  0000  0000)


Event 10 of 10:  Event ID 16# 2943
I/O access error, writing
P area, word access, Access address:     38
Requested OB: I/O access error OB (OB122)
Priority class:  1
External error, Incoming event
10:36:07.050 AM  04/17/2019
(Coding: 16# 2943  017A  0020  0026  0000  0000)

Hello fellow programmers!

I’ve come to you with a new problem… currently I am working on a project involving a network of 8 Siemens PLCs (ET200S IM151-8 PN/DP CPU). They all pretty much do the same thing, so they’re configured almost the same, except the HW. They all seem to work flawlessly, except one. This one, when I start it up, immediately turns on the RED SF LED. I’ve attached the Diagnostic Buffer read with Module Information inside Siemens.

I’ve also read Area length error when reading and Please help me: Area length error when reading but I couldn’t figure out what’s the solution to my problem.

I also mention that the CPU doesn’t go into STOP because I loaded all the necessary OBs in order to prevent that (learned this one from this forum ), but the boss see’s every RED thingy as a problem , so I must solve this one in order to get him off my back.

Has anyone ever dealt with this situation? Could anyone help me solve this?

Thanks in advance!
Voicu

P.S. Oh, I forgot to mention… I’m the boss…

Понравилась статья? Поделить с друзьями:
  • Ardupilot error compass variance
  • Arduinodroid ошибка загрузки
  • Arduino error variable or field declared void
  • Arduino error stray 320 in program
  • Arduino error stray 302 in program arduino