Содержание
- Форум АСУТП
- Area length error when reading/writing
- Area length error when reading/writing
- Area length error when writing step7
- PLCforum.uz.ua
- Request: пример с стандартным ПИД-регулятором
- Request: пример с стандартным ПИД-регулятором
- Re: Request: пример с стандартным ПИД-регулятором
- Re: Request: пример с стандартным ПИД-регулятором
- Re: Request: пример с стандартным ПИД-регулятором
- 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. «Старый», хорош бурдеть! В отпуск надо иногда ходить!
-
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,тогда будет работать правильно
вот пример
-
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
извиняюсь,лень было переходить с языка на язык
DI : инстанс дата блок.
вызов : CALL FB41, DB41 ,подразумевает : вызвать FB41 с DI41
|
#1 |
Member
Join Date: Oct 2004 Location: India. Posts: 750 |
Area length error when reading Hi there 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
__________________ |
|
|
|
#2 |
Lifetime Supporting Member
Join Date: Jan 2005 Location: Down South Posts: 2,711 |
From Siemens web site Description:
__________________ 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.» |
|
|
|
#3 |
Member
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.
|
|
|
|
#4 |
Member
Join Date: Oct 2004 Location: India. Posts: 750 |
Hi LAR2 P##call_fwd_I Problem disappears!! Also problem only comes when logic in network 4 gets executed.
__________________ |
|
|
|
#5 |
Lifetime Supporting Member
Join Date: Nov 2006 Location: UK Posts: 6,468 |
Stop, Go directly to jail, if you pass Go, do not collect �200 |
|
|
|
#6 |
Lifetime Supporting Member
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, |
|
|
|
#7 |
Member
Join Date: Oct 2004 Location: India. Posts: 750 |
Always restore AR2 inside FB after using it !! Ah L D[AR2,P#0.0] great 1) I declared a variable in TEMP Area (TEMP0) with data type DW. 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 !
__________________
Last edited by manmeetvirdi; November 21st, 2009 at 08:11 AM.
|
|
|
|
#8 |
Lifetime Supporting Member
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). L iFred is actually loading iBert…. the possibilities for confusion are endless. |
|
|
|
#9 |
Member
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 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
__________________
Last edited by manmeetvirdi; November 21st, 2009 at 08:21 AM.
|
|
|
Форум АСУТП
Клуб специалистов в области промышленной автоматизации
- Обязательно представиться на русском языке кириллицей (заполнить поле «Имя»).
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не писать свой вопрос в первую попавшуюся тему — вместо этого создать новую тему.
- За поиск и предложение пиратского ПО и средств взлома — бан без предупреждения.
- Рекламу и частные объявления «куплю/продам/есть халтура» мы не размещаем ни на каких условиях.
- Перед тем как что-то написать — читать здесь и здесь.
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…