Главная   Downloads   Разное  
FAQ     Поиск   Регистрация   Вход 
Текущее время: Чт мар 28, 2024 18:49

Часовой пояс: UTC + 3 часа (Russia: MSK)




Начать новую тему Ответить на тему  [ 6 сообщений ] 
Автор Сообщение
 Заголовок сообщения: Распределение памяти FB
СообщениеДобавлено: Вт ноя 21, 2017 17:08 
Не в сети

Регистрация: Пт окт 20, 2017 20:20
Сообщения: 72
Подскажите, где распределяется память используемых FB и где можно назначать диапазон этой памяти ?
Каким объемом ограничена память FB ?
Как назначить FB энергонезависимую память ?
Контроллер CJ2M CPU35


В начало
 Профиль  
 
 Заголовок сообщения: Re: Распределение памяти FB
СообщениеДобавлено: Вт ноя 21, 2017 21:14 
Не в сети
Аватара пользователя

Регистрация: Ср ноя 08, 2006 13:01
Сообщения: 373
Откуда: г. Красноярск
evgeny писал(а):
Подскажите, где распределяется память используемых FB и где можно назначать диапазон этой памяти ?

CX-Programmer
ПЛК - Распределение памяти - Память функционального блока/SFC - Распределение памяти функционального блока/SFC. Примерно там же есть возможность "Оптимизировать память функционального блока/SFC". Всё распределят за Вас.
evgeny писал(а):
Каким объемом ограничена память FB ?

Вы вроде ограничены только объемом свободной памяти контроллера (той, которую можно выбрать для FB). Плюс у CJ2M реальная экономия памяти (в основных областях), если у одного FB много экземпляров используется.
evgeny писал(а):
Как назначить FB энергонезависимую память ?

Выбирайте для FB области памяти D и H. Они энергонезависимы.

Я обычно (если не хватает памяти, выделенной по умолчанию) под FB беру D20000...D32000.


В начало
 Профиль  
 
 Заголовок сообщения: Re: Распределение памяти FB
СообщениеДобавлено: Ср ноя 22, 2017 12:00 
Не в сети

Регистрация: Пт окт 20, 2017 20:20
Сообщения: 72
Вы писали что у CJ2M реальная экономия памяти, если у одного FB много экземпляров используется. В чем выражается эта экономия ?
Если у меня используется 400 экземпляров FB и каждый FB занимает 200 слов то мне необходимо 80000 слов памяти.
В настройках распределения памяти я выбираю FB Non Retained E1 32768 слов и FB Retained E2 32768 слов. При этом часть FB я создаю в области Retained, а часть в области Non Retained. Всего мне доступно 65536 слов, то есть 400 экземпляров FB не помещаются.
Придется уменьшать размер или количество FB, или есть другие способы ?


У вас нет необходимых прав для просмотра вложений в этом сообщении.


В начало
 Профиль  
 
 Заголовок сообщения: Re: Распределение памяти FB
СообщениеДобавлено: Ср ноя 22, 2017 13:02 
Не в сети
Site Admin
Аватара пользователя

Регистрация: Вт сен 19, 2006 21:13
Сообщения: 3510
Откуда: Москва
У CJ2M под ФБ выделяется память не зависящая от памяти для остальной проги.
У предыдущих контроллеров, шаги проги и ФБ были в UM
К областям памяти, слова которой мы используем, память для проги (UM) и ФБ не имеет никакого отношения.

evgeny писал(а):
Если у меня используется 400 экземпляров FB и каждый FB занимает 200 слов то мне необходимо 80000 слов памяти.


Каждый ФБ хранит 200 слов которые ему постоянно нужны? или все эти слова просто переменные для расчётов?
ФБ может работать и как функция, подсунул экземпляру входные данные, получил что то на выходе. Далее в проге ещё 100500 раз этому же экземпляру подсовываете другие данные.
Получиться всего один экземпляр в таблице символов, вместо 100500.

Переменным внутри ФБ можно назначить реальные адреса, например для тех, которые используются для промежуточных расчётов.

Используя один экземпляр несколько раз, немного данных для хранения можно вынести наружу, как переменные inOut

Внутри ФБ можно использовать другой ФБ...

----------------------------
Это чем таким прога занимается, что ей 80000 слов нужно?
Покажите?


В начало
 Профиль  
 
 Заголовок сообщения: Re: Распределение памяти FB
СообщениеДобавлено: Пт ноя 24, 2017 22:48 
Не в сети

Регистрация: Пт янв 30, 2009 21:25
Сообщения: 518
Справедливо для любого контроллера - ОМРОН.
Если вставлена куча ФБ - но с одним именем.
То всегда для них используется одни и те же ячейки памяти переменных.
И Всегда используется один экземпляр ФБ.
То есть код программы не растет на объем каждой новой вставки ФБ.

Например имеем ФБ на 5000 шагов. Используем в нем переменных (типа INT) 400 штук.
Назвали его при первой вставке ФБ5000.
У него 2 входа и 2 выхода.

Программа подросла на 5030 шагов. и съела 400 слов данных.
Вставили его еще раз с именем ФБ5000 - программа подросла на 30 шагов (примерно).
Слов данных не съело.
Вставили его еще раз с именем ФБ5002 - программа подросла на 5030 шагов (примерно).
и съела еще 400 слов данных.

Например вставка с одним именем - Преобразование входных данных к определенному виду выходных. Линейное преобразование. Нас не интересует содержимое внутренних переменных ФБ.

Но если ФБ использует таймера, счетчики - тут надо быть очень внимательным.

Применительно к CJ2 -
очень удобно - на входа ФБ можно передавать структуры. (массивы не помню)
Но скорее всего сам объем данных не передается - а передается только указатель на структуру. И получается что ФБ работает с конкретной памятью в которой структура определена.

_________________
А нам, все равно, и ровно.


В начало
 Профиль  
 
 Заголовок сообщения: Re: Распределение памяти FB
СообщениеДобавлено: Пт ноя 24, 2017 23:16 
Не в сети
Аватара пользователя

Регистрация: Ср ноя 08, 2006 13:01
Сообщения: 373
Откуда: г. Красноярск
Ярослав писал(а):
Например вставка с одним именем - Преобразование входных данных к определенному виду выходных. Линейное преобразование. Нас не интересует содержимое внутренних переменных ФБ.
Но если ФБ использует таймера, счетчики - тут надо быть очень внимательным.

Всё так. С Вашего позволения перефразирую.
Для новичков другими словами (вдруг пригодится в таком виде):
Если Ваш ФБ решает свою задачу за один цикл ПЛК и ему не требуется для своей внутренней работы сохранять какие-либо значения для следующего цикла, то можно использовать сколько угодно один и тот же экземпляр одного ФБ (задавая для экземпляра ФБ одно и то же имя).
Если же ФБ посложнее, содержит сохраняемые переменные и требует для решения поставленной ему задачи несколько циклов ПЛК, то необходимо использовать отдельные экземпляры одного ФБ. То есть в разделе Функциональные Блоки проекта CX-Programmer может быть описан один ФБ, но вставленные в основную программу ПЛК его экземпляры должны иметь разные имена.
Коллеги поправят, если где ошибся...


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

Часовой пояс: UTC + 3 часа (Russia: MSK)


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

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


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

Найти:
Переход:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская документация по phpBB 3