Добрый день.
Возникла проблема при загрузке проекта в панель. Выдает сообщение "Не достаточно памяти для загрузки проекта".
Поясните пожалуйста, о чем идет речь? При симуляции такой проблемы не было.
Добрый день.
Возникла проблема при загрузке проекта в панель. Выдает сообщение "Не достаточно памяти для загрузки проекта".
Поясните пожалуйста, о чем идет речь? При симуляции такой проблемы не было.
Со всей ответственностью заявляю
1. В конфигурации ПЛК адреса регистров панели для ВСЕХ real output/input модулей должна быть ЧЕТНОЙ, как для регистров PSW так и для регистров PFW! У Вас в конфигурации ПЛК все адреса НЕЧЕТНЫЕ!
2. Byte Sequence должен иметь значение "Native"
По поводу времени.
Запись в Регистры PFW в панели кешируется. Т.е. физическая запись в регистры PFW происходит с задержкой, может через несколько десяток секунд.
Может это и влияет
Однако в вашем проекте ПЛК есть другая засада!
Овен ПЛК через конфигурацию не умеет делать групповые запросы к слейвам.
А у Вас в Мастере, в UMD сотни регистров!
Т.к. групповых запросов нет, то все регисты читаются и пишутся по очереди, по списку, ПО ОДНОМУ,
Интервал между запросами к регистрам панели - polling time Вы задали в одном случае 0,4 сек, а во втором 0,3 сек
Захват-1.png Захват-2.png
При этом Work mode установлен как Both ! Т.е. ВСЕ output модули будут записываться в панель циклически по времени, а не по изменению их значений!
Запись/чтение чередуются
Теперь смотрите как будет работать обмен с панелью 80
1. зп. ПЛК --> Панель PSW301, 302
пауза 300мс
2. чт. Панель --> ПЛК PFW399, 400
пауза 300мс
3. зп. ПЛК --> Панель PSW303, 304
пауза 300мс
4. чт. Панель --> ПЛК PFW403, 404
пауза 300мс
5. зп. ПЛК --> Панель PSW305, 306
пауза 300мс
6. чт. Панель --> ПЛК PFW405, 406
пауза 300мс
.......
и т.д. пока список ВСЕХ модуле не закончится, затем сначала
Теперь сложите ВСЕ 300мс и скажите, через сколько минут ПЛК прочитает последние регистры PFW469, 470 ?
А кроме панели 80 есть еще и 88 и модули!
Дополнение
Если в конфигурации несколько UDM, то мастер обрабатывает по одной переменной из каждого UMD по очереди. Т.е сначала одну переменную из одного UMD, затем одну переменную из второго UMD, опять одну переменную из одного UMD, затем одну переменную из второго UMD и т.д. Если количество переменных в UMD разное, то переменные одного UMD фактически будут опрашиваться чаще. Даже при одинаковом времени Polling time для обоих UMD.
Последний раз редактировалось petera; 31.05.2020 в 23:10.
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
Добрый день.
В эмуляторе обращение к discrete inputs слэйва CODEYS возможно только через 3x (в функциональной области выбираете операцию Копировать регистр, например 3x0-->PSW256).
Биты 0-15 регистра PSW256 будут отображать значения discrete inputs слэйва 0-15.
Для записи coils надо использовать обращение типа 0x0.
На реальной панели - обращение к discrete inputs через 1x и обращение к coils слэйва CODESYS через 4x - работает корректно.
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk
Вопрос решил.
В историческом графике параметры среза были большие.
Если для модулей - чтение идет правильное, то менять Трейс Моде не надо.
Для панелей - лучшее решение в плане повышения быстродействия - сделать ПЛК слейвом,
Я понимаю, что много переделывать нужно, тогда это совет на будущие проекты
А сейчас
Минимум - разнести для панелей все модули input и ouput по разным UMD. В UMD c ouput сделать режим работы By Value Change.
Максимум
Для реализации групповых запросов, хотя бы для чтения регистров из панели, использовать в конфигурации модули String, тогда можно по 40 регистров за один раз читать из панели. Здесь тоже правка проекта в ПЛК нужна, но проще.
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
Я бы для начала, чтобы понять принципы обмена, сделал тестовый проект ПЛК-Панель, по 3..4 регистра для чтения и записи и поигрался бы с ним, разные там Byte Sequence, адреса - четные/нечетные.
Для примера использования модулей String для организации групповых запросов к панели
Принцип простой
Захват-2.png
1. В UMD создаем String Output/Input
2. Смотрим какой адрес типа "AT % ......" конфигуратор присвоил модулю
3. В разделе объявления PLC_PRG создаем Массивы типа
<Наше Имя> AT <смотрим п.2>:ARRAY [<число элементов>] OF <нужный тип> (WORD, BYTE, REAL)
4. При этом число байт(символов) в свойствах String Output/Input д.б. для
- WORD ровно в 2 раза больше чем число элементов в массиве п.3.
- REAL ровно в 4 раза больше чем число элементов в массиве п.3.
- BYTE равно числу элементов в массиве п.3.
но для любого типа число байт(символов) в свойствах String д.б НЕ БОЛЕЕ 80. Почему максимум 80 - отдельная тема. Меньше можно.
Захват-4.png
Осталось в программе извлечь элементы массивов по привычным названиям переменных.
Результат в работе
Захват-1.png
Внимание! Значение Byte Sequence для данного способа не имеет значения, т.к. при групповом чтении массива регистров из панели они приходят в правильном порядке.
ЗЫ.
Команды чтения для String input нужно заменить на 0х03
Захват-11.png
Последний раз редактировалось petera; 30.05.2020 в 07:17.
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg