Автоматизация и диспетчеризация зданий
 
Единое информационное пространство инженеров и проектировщиков
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Проблема с PG5
На страницу 1, 2  След.
 
Начать новую тему   Ответить на тему    Список форумов МЦ квадрат -> Вопросы и ответы по оборудованию Saia-Burgess
Предыдущая тема :: Следующая тема  
Автор Сообщение
algreen



Зарегистрирован: 05.05.2008
Сообщения: 20

СообщениеДобавлено: Пн Май 05, 2008 2:45 pm    Заголовок сообщения: Проблема с PG5 Ответить с цитатой

При Builde кода программы в PG5 выдается сообщение: Fatal Error 368: Dynamic space overflow for type: F.
Кто что думает? Подскажите пожалуйста!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Arnold



Зарегистрирован: 25.04.2008
Сообщения: 91

СообщениеДобавлено: Пн Май 05, 2008 5:36 pm    Заголовок сообщения: Переполнена память флаговых переменных Ответить с цитатой

Эта ошибка указывает на переполнение динамической памяти флаговых переменных. Происходит чаще при написании больших программ. (Кстати, переменные могут быть не вашими, а из библиотек, которые вы используете). По умолчанию под них выделяется область от 7500 до 8191. Верхняя граница фиксирована, а вот нижнюю можно подвинуть.
В ProgramManager-e в установках контроллера Settings выберите Software, в диалоге - вкладку Flags, в графе Non-Volatile Flags установите нижнюю границу 7000, или даже 6000. Эта ошибка скорее всего пропадет.
Правда могут появиться следующие... Very Happy
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
algreen



Зарегистрирован: 05.05.2008
Сообщения: 20

СообщениеДобавлено: Пн Май 05, 2008 5:59 pm    Заголовок сообщения: Re: Переполнена память флаговых переменных Ответить с цитатой

Эта ошибка указывает на переполнение динамической памяти флаговых переменных. Происходит чаще при написании больших программ. (Кстати, переменные могут быть не вашими, а из библиотек, которые вы используете). По умолчанию под них выделяется область от 7500 до 8191. Верхняя граница фиксирована, а вот нижнюю можно подвинуть.
В ProgramManager-e в установках контроллера Settings выберите Software, в диалоге - вкладку Flags, в графе Non-Volatile Flags установите нижнюю границу 7000, или даже 6000. Эта ошибка скорее всего пропадет.
Правда могут появиться следующие... Very Happy

Арнольд, я Вам очень благодарен за консультацию и быстрый ответ. С Saia у меня первый объект... Наверное поэтому такие казусы. Попробую сделать то, что вы рекомендовали. Rolling Eyes
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Arnold



Зарегистрирован: 25.04.2008
Сообщения: 91

СообщениеДобавлено: Вт Май 06, 2008 6:23 am    Заголовок сообщения: Флаги, таймеры и прочее.. Ответить с цитатой

Рад был помочь.
Программа у вас слишком большая для первого опыта. Около тысячи переменных, LON, EIB...
В принципе, c PG5 идет достаточно полная документация. Program Files/Saia-Burgess/PG5 1_4/Manuals/
Если у вас нет, можете скачать у нас, в разделе техподдержки. Обратите внимание на раздел 5 (Структура программы) мануала по PG5. Кроме обычных COB (cyclic organization block) блоков, PB и FB (program/function block), имеются еще и прерывания XOB (eXception block), которые позволяют использовать аппаратные прерывания, прерывания по телеграммам S-bus, обрабатывать ошибки и еще много чего интересного.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
algreen



Зарегистрирован: 05.05.2008
Сообщения: 20

СообщениеДобавлено: Вт Май 06, 2008 9:51 am    Заголовок сообщения: Re: Флаги, таймеры и прочее.. Ответить с цитатой

Рад был помочь.
Программа у вас слишком большая для первого опыта. Около тысячи переменных, LON, EIB...
В принципе, c PG5 идет достаточно полная документация. Program Files/Saia-Burgess/PG5 1_4/Manuals/
Если у вас нет, можете скачать у нас, в разделе техподдержки. Обратите внимание на раздел 5 (Структура программы) мануала по PG5. Кроме обычных COB (cyclic organization block) блоков, PB и FB (program/function block), имеются еще и прерывания XOB (eXception block), которые позволяют использовать аппаратные прерывания, прерывания по телеграммам S-bus, обрабатывать ошибки и еще много чего интересного.

Арнольд, Crying or Very sad Sad я слил все файлы в один, сделал в нем один драйвер EIB, деактивировал все страницы в этом файле...
Подключено два файла:лоновский и основной со всеми страницами в состоянии disabled.
Теперь таже ошибка (368) только переполнение для типа T.
Если отключены все страницы данного файла, значит память не используется ? Но если это бы было так, тогда бы линкирование было бы успешным ведь лоновский файл (когда только он один подключен к проекту) нормально компилируется. Как дальше пытаться отладить?
Может если не хватает памяти нужно будет установить доп модуль в контроллер?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Arnold



Зарегистрирован: 25.04.2008
Сообщения: 91

СообщениеДобавлено: Вт Май 06, 2008 11:20 am    Заголовок сообщения: Сколько таймеров? Ответить с цитатой

Это переполнение по таймерам.
В том же окне, где и флаги выберите закладку Timers/Counters, установите Last Timer = 60, или 100 если 60-и не достаточно, в поле Dynamic Space поставте для таймеров Last Address = 100.
Это решение "в лоб".
А вообще я бы порекомендовал вам уменьшить число таймеров. В вашей программе переменная (выдаваемая после компаратора, к примеру Vozd_Cool19) поступает на Таймер OnOffDelay. Для чего? Что бы не выдавать переменную в сеть слишком часто? У вас стоит T0=1800 (180c, т.е. 3 мин.), а T1=100, т.е. 10 сек.
Но в блоке EIB Send Value есть параметры MinimumTimeInterval и MaximumTimeInterval, которые задают в минутах минимальный и максимальный интервалы передачи информации. Поставьте их = 3 и 30 соответственно, и таймер будет не нужен.
В лоне есть точно такой же модуль LON SendBinaryAuto. Управление им полностью идентично EIB. Используйте его вместо SendBinary, и уберите все таймеры.[/img]
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
algreen



Зарегистрирован: 05.05.2008
Сообщения: 20

СообщениеДобавлено: Вт Май 06, 2008 12:19 pm    Заголовок сообщения: Re: Сколько таймеров? Ответить с цитатой

Это переполнение по таймерам.
В том же окне, где и флаги выберите закладку Timers/Counters, установите Last Timer = 60, или 100 если 60-и не достаточно, в поле Dynamic Space поставте для таймеров Last Address = 100.
Это решение "в лоб".
А вообще я бы порекомендовал вам уменьшить число таймеров. В вашей программе переменная (выдаваемая после компаратора, к примеру Vozd_Cool19) поступает на Таймер OnOffDelay. Для чего? Что бы не выдавать переменную в сеть слишком часто? У вас стоит T0=1800 (180c, т.е. 3 мин.), а T1=100, т.е. 10 сек.
Но в блоке EIB Send Value есть параметры MinimumTimeInterval и MaximumTimeInterval, которые задают в минутах минимальный и максимальный интервалы передачи информации. Поставьте их = 3 и 30 соответственно, и таймер будет не нужен.
В лоне есть точно такой же модуль LON SendBinaryAuto. Управление им полностью идентично EIB. Используйте его вместо SendBinary, и уберите все таймеры.[/img]

Таймер OnOffDelay делает задержку на выключение и включение внутреннего блока кондиционера VRV системы (переменная Vozd_Cool). Т.к обнаружилось что кондиционеры трехскоростные, таймер наверное уберется и будет какое-то пид.

Увеличил начальный адрес таймеров, стало нехватать флагов. Понизил начальный адрес флагов до 6000 и о чудо, программа откомпилировалась.

Огромное Вам СПАСИБО!!! ВЫРУЧИЛИ! Very Happy Rolling Eyes


Последний раз редактировалось: algreen (Вт Май 06, 2008 12:29 pm), всего редактировалось 3 раз(а)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Arnold



Зарегистрирован: 25.04.2008
Сообщения: 91

СообщениеДобавлено: Вт Май 06, 2008 12:26 pm    Заголовок сообщения: Ok Ответить с цитатой

Успехов Exclamation
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
algreen



Зарегистрирован: 05.05.2008
Сообщения: 20

СообщениеДобавлено: Пн Май 12, 2008 10:46 am    Заголовок сообщения: Re: Ok Ответить с цитатой

Успехов Exclamation

Арнольд! Еще проблема!

Теперь программа не загружается в контроллер!
Выдает сообщение: Code segment too small. Has 24K, needs 49K.
Насколько я понимаю, это не хватает памяти у PCD1.M135?
Если это так, то, как я понимаю нужно добавить ее. У Вас есть в наличии эти микросхемы?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Arnold



Зарегистрирован: 25.04.2008
Сообщения: 91

СообщениеДобавлено: Пн Май 12, 2008 2:11 pm    Заголовок сообщения: Сегмент кода Ответить с цитатой

Ну и программка у вас получилась!
Действительно, максимально у 135 может быть 32 К слов кода (128К).
Но прежде, чем докупать память, я бы посоветовал попробовать оптимизировать программу.
Пришлите, посмотрю что можно сделать.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Arnold



Зарегистрирован: 25.04.2008
Сообщения: 91

СообщениеДобавлено: Вт Май 13, 2008 6:57 am    Заголовок сообщения: Оптимизация Ответить с цитатой

1) У вас при приеме переменных EIB идет деление каждой переменной на 100. Правильно, в EIB переменные с фиксированной точкой передаются в виде *100, но вам нет никакой необходимости приводить к нормальному виду. Просто уставку увеличте в 100 раз, вы сэкономите больше 200 операций деления - это довольно много.
2) Везде, где идет прием переменных EIB вместо отдельных блоков поставьте один на 10 переменных. В параметрах прописываете групповые адреса, соответствующие переменной, и все. Опять же экономия - в 10 раз.
3) У вас используется почти 80 ПИ регуляторов - это безумная трата ресурсов. Разберитесь с этим повнимательнее - наверня в фан-койлах Daikin стоят свои регуляторы. Но это уже вопрос технологии, а не программирования...
4) Непонятно, зачем идет вывод в EIB значения 255 при перепаде переменной Vozd_Cool_xxx - если нет передачи другого значения. Но тут опять же вопрос алгоритма.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
algreen



Зарегистрирован: 05.05.2008
Сообщения: 20

СообщениеДобавлено: Вт Май 13, 2008 4:34 pm    Заголовок сообщения: Re: Оптимизация Ответить с цитатой

1) У вас при приеме переменных EIB идет деление каждой переменной на 100. Правильно, в EIB переменные с фиксированной точкой передаются в виде *100, но вам нет никакой необходимости приводить к нормальному виду. Просто уставку увеличте в 100 раз, вы сэкономите больше 200 операций деления - это довольно много.
2) Везде, где идет прием переменных EIB вместо отдельных блоков поставьте один на 10 переменных. В параметрах прописываете групповые адреса, соответствующие переменной, и все. Опять же экономия - в 10 раз.
3) У вас используется почти 80 ПИ регуляторов - это безумная трата ресурсов. Разберитесь с этим повнимательнее - наверня в фан-койлах Daikin стоят свои регуляторы. Но это уже вопрос технологии, а не программирования...
4) Непонятно, зачем идет вывод в EIB значения 255 при перепаде переменной Vozd_Cool_xxx - если нет передачи другого значения. Но тут опять же вопрос алгоритма.

Арнольд, cпасибо за информацию, я понял, в каком направлении рыть.

Но похоже памяти все равно не хватит. У вас есть память в наличии и сколько стоит она (если она решит вопрос). Мне удалось сжать программу до 28к. Может и еще что-нибудь выкину из-нее...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Arnold



Зарегистрирован: 25.04.2008
Сообщения: 91

СообщениеДобавлено: Ср Май 14, 2008 4:19 am    Заголовок сообщения: Память Ответить с цитатой

В принципе 28 К уже влезет. В Settings/Hardware выберите вкладку Memory, отметьте Manual Memory Allocation, и выставьте Code = 30, Text/DB = 8, или другую комбинацию, главное, что бы внизу в Totals было не больше 128 К. Здесь Code задается в K Lines, 1 линия = 4 байта, т.е. 30 KLines = 120 Kbyte. А Text/DB в Kb.
Памяти у меня нет в наличии, а стоит она -
RAM 128К - 15,19 Euro, RAM 512K - 33,75 Euro.
Если закажете, будет к началу июня. Но я думаю, уложитесь...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
algreen



Зарегистрирован: 05.05.2008
Сообщения: 20

СообщениеДобавлено: Ср Май 14, 2008 2:30 pm    Заголовок сообщения: Re: Память Ответить с цитатой

В принципе 28 К уже влезет. В Settings/Hardware выберите вкладку Memory, отметьте Manual Memory Allocation, и выставьте Code = 30, Text/DB = 8, или другую комбинацию, главное, что бы внизу в Totals было не больше 128 К. Здесь Code задается в K Lines, 1 линия = 4 байта, т.е. 30 KLines = 120 Kbyte. А Text/DB в Kb.
Памяти у меня нет в наличии, а стоит она -
RAM 128К - 15,19 Euro, RAM 512K - 33,75 Euro.
Если закажете, будет к началу июня. Но я думаю, уложитесь...

Вроде уложился, но заказчик теперь хочет усложнить алгоритм...
Так что возможно потребуется приобрести память.
Еще раз спасибо за советы и ликбез!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
algreen



Зарегистрирован: 05.05.2008
Сообщения: 20

СообщениеДобавлено: Пн Июн 16, 2008 7:54 pm    Заголовок сообщения: Re: Память Ответить с цитатой

В принципе 28 К уже влезет. В Settings/Hardware выберите вкладку Memory, отметьте Manual Memory Allocation, и выставьте Code = 30, Text/DB = 8, или другую комбинацию, главное, что бы внизу в Totals было не больше 128 К. Здесь Code задается в K Lines, 1 линия = 4 байта, т.е. 30 KLines = 120 Kbyte. А Text/DB в Kb.
Памяти у меня нет в наличии, а стоит она -
RAM 128К - 15,19 Euro, RAM 512K - 33,75 Euro.
Если закажете, будет к началу июня. Но я думаю, уложитесь...

Вроде уложился, но заказчик теперь хочет усложнить алгоритм...
Так что возможно потребуется приобрести память.
Еще раз спасибо за советы и ликбез!

Здравствуйте Арнольд!

Вынужден еще раз к Вам обратиться!

Память приобрели установили, все загружается, алгоритм уже более 128 страниц...

Но дело не в объеме. При общении с EIB возникают проблемы в драйвере EIB - RCV touts Touts, collision (warning). Драйвер читает адреcа EIB, которых нет в проекте...
Система EIB состоит и устройств типа TRITON с которых читается информация о текущих температурах в комнате и уставке температуры в данной комнате. Бывают ситуации, когда, в текущая температура считывается, а уставки не читаются или имеют значение 0 или неверные значения.

Программа уменьшена для тестирования на одной комнате-объемы информации минимальны, поэтому не понятно- в чем может быть проблема-тритоны или Saia или PG5 или драйвер EIB или еще что-нибудь? Экпериментировал с драйвером (ставил EIB EXT и изменял его настройки), для опроса данных с тритона применял и POL fbox b RCV fbox. Арнольд, Вы сталкивались с этим?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов МЦ квадрат -> Вопросы и ответы по оборудованию Saia-Burgess Часовой пояс: GMT
На страницу 1, 2  След.
Страница 1 из 2

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB
Группа компаний «МЦ квадрат»
Россия, Москва, 117342, ул. Введенского 8
Тел./Факс: +7(495) 332-5092
Дизайн и разработка littlebear.ru