Добрый день.
Возникла проблема при загрузке проекта в панель. Выдает сообщение "Не достаточно памяти для загрузки проекта".
Поясните пожалуйста, о чем идет речь? При симуляции такой проблемы не было.
Вид для печати
Добрый день.
Возникла проблема при загрузке проекта в панель. Выдает сообщение "Не достаточно памяти для загрузки проекта".
Поясните пожалуйста, о чем идет речь? При симуляции такой проблемы не было.
Со всей ответственностью заявляю
1. В конфигурации ПЛК адреса регистров панели для ВСЕХ real output/input модулей должна быть ЧЕТНОЙ, как для регистров PSW так и для регистров PFW! У Вас в конфигурации ПЛК все адреса НЕЧЕТНЫЕ!
2. Byte Sequence должен иметь значение "Native"
По поводу времени.
Запись в Регистры PFW в панели кешируется. Т.е. физическая запись в регистры PFW происходит с задержкой, может через несколько десяток секунд.
Может это и влияет
Однако в вашем проекте ПЛК есть другая засада!
Овен ПЛК через конфигурацию не умеет делать групповые запросы к слейвам.
А у Вас в Мастере, в UMD сотни регистров!
Т.к. групповых запросов нет, то все регисты читаются и пишутся по очереди, по списку, ПО ОДНОМУ,
Интервал между запросами к регистрам панели - polling time Вы задали в одном случае 0,4 сек, а во втором 0,3 сек
Вложение 49273 Вложение 49274
При этом 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.
Добрый день.
В эмуляторе обращение к discrete inputs слэйва CODEYS возможно только через 3x (в функциональной области выбираете операцию Копировать регистр, например 3x0-->PSW256).
Биты 0-15 регистра PSW256 будут отображать значения discrete inputs слэйва 0-15.
Для записи coils надо использовать обращение типа 0x0.
На реальной панели - обращение к discrete inputs через 1x и обращение к coils слэйва CODESYS через 4x - работает корректно.
Вопрос решил.
В историческом графике параметры среза были большие.
Если для модулей - чтение идет правильное, то менять Трейс Моде не надо.
Для панелей - лучшее решение в плане повышения быстродействия - сделать ПЛК слейвом,
Я понимаю, что много переделывать нужно, тогда это совет на будущие проекты
А сейчас
Минимум - разнести для панелей все модули input и ouput по разным UMD. В UMD c ouput сделать режим работы By Value Change.
Максимум
Для реализации групповых запросов, хотя бы для чтения регистров из панели, использовать в конфигурации модули String, тогда можно по 40 регистров за один раз читать из панели. Здесь тоже правка проекта в ПЛК нужна, но проще.
Спасибо Petera! Буду исправляться потихоньку. И тут сразу вопрос раскидал по разным UMD input и output, вообще теперь контроллер не видит панель(81 ошибка). Наверное из-за того что у меня на столе только панель и плк, без модулей или где то время сделать поменьше/побольше?
Я бы для начала, чтобы понять принципы обмена, сделал тестовый проект ПЛК-Панель, по 3..4 регистра для чтения и записи и поигрался бы с ним, разные там Byte Sequence, адреса - четные/нечетные.
Для примера использования модулей String для организации групповых запросов к панели
Принцип простой
Вложение 49283
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 - отдельная тема. Меньше можно.
Вложение 49284
Осталось в программе извлечь элементы массивов по привычным названиям переменных.
Результат в работе
Вложение 49285
Внимание! Значение Byte Sequence для данного способа не имеет значения, т.к. при групповом чтении массива регистров из панели они приходят в правильном порядке.
ЗЫ.
Команды чтения для String input нужно заменить на 0х03
Вложение 49287
Спасибо еще раз Petera, вот что значит помощь новичку, всё понятно на примерах изложено. Но я не могу понять один момент, я делал подобие температурной защиты на 3 сервисные (с коррекцией), 2 операторные(для просмотра) панели и 12 модулей AI, все UMD были TraceMode, все регистры панели (кроме битовых) были смещены на 1, и всё до сих пор работает, причём не плохо, как так то? А тут вроде и не много и даже связь с панелью не налаживается.
Ну теперь буду всё по уму делать, всё переделывать, главное чтобы времени на всё хватало.
Почти всё понятно, но есть вопросы: Для чего эта строчка? 0011 BlokByte AT %IB7.2.3.0:ARRAY [0..20] OF BYTE;
Почему её начальный адрес 350, Вложение 49303
а для REAL, указан адрес 0, хотя должен быть 350 как раз.
Вложение 49304
Для разработчиков, вопрос к работе Конфигуратора СП-300..
создаю текстовой объект и всё что в нем указываю сразу после ;№+-/*(и может быть других символов) не отображается
Вложение 49331,
а если после этих знаков и буквы/цифры ставить пробел, то всё корректно отображается
Вложение 49332
И еще если сделать жирным то можно не ставить пробел после символа и буквы/цифры, работает корректно.
Как-то так.
Спасибо за замечания!
Так получилось потому, что хотелось побыстрей выложить пример. Есть еще две ошибки в количестве элементов в массиве
Конечно должно быть так
Вложение 49343
и
Вложение 49344
Последняя картинка иллюстрация использования String для замены модулей типа 8bit input. Для 8bit output - аналогично. Если в панели нужно читать/писать PSB, то для String нужны команды 0х01 или соответственно 0х0fЦитата:
Для чего эта строчка? 0011 BlokByte AT %IB7.2.3.0:ARRAY [0..20] OF BYTE;
Вам спасибо!
Я так понимаю такая строка будет правильной, для записи байт в панель: BlokByte_toPanel AT %QB7.1.4.0:ARRAY [0..19] OF BYTE;
Вложение 49363
А вот с битами что то не получается правильно написать.
Пытаюсь понимать, есть проблема с чтением из панели, в чем дело не пойму, то ли таргет старый то ли контроллер старый. Наводит это на мысль потому что и в Output и в Input string moduls, цифро-буквенные обозначения одинаковые AT%QB ...... вроде так не должно быть. Т.е. мне кажется что из-за этого чтение не идёт, а запись в панель хорошо идёт
У вас физический контроллер точно версия PLC 110-60 v.2 ?
Тоже проверил у себя, с PLC 110-60, все адреса правильные получаются, Вложение 49397
а с версией PLC 110-60 v.2, как у вас, и в Output и в Input ВСЕХ модулей, адреса одинаковые AT%QB , разница только в цифрах.
Вложение 49398
Это такая фишка новых ПЛК, у них все переменные в конфигурации начинаются на Q
Например, Register input/output
Вложение 49402
в обоих случаях QW
А в старом ПЛК
Вложение 49403
Здесь Input и Output - разные IW и QW
Но ведь никто не жаловался, что мастер не может прочитать простые регистры из слейва
Может ошибка в адресе слейва в настройках UMD в котором String input?
Вопрос следующий:
Панель - слейв (их несколько). Хочу, чтобы панель на запрос от мастера передавала (в старшем байте) кроме запрошенных данных и свой ID (адрес в модбасRTU). Посмотрел - а он в системных регистрах не отражен. Или я плохо смотрел?
Парсить модбас-ответ неудобно, опрашиваю панели из конфигуратора (не из библиотеки).
Спасибо. Что-то я протупил :(
День добрый. Правильно ли я понял, что при опросе панели шлюзом ПЕ210 нужный регистр указывать в 16-ричной форме? Например, PSW2038 будет в конфигураторе OwenCloud "7f6"? А PFW 2038 - "18e96"?
Всех приветствую! Что то и так и так приём с панели не идёт. Само просто сделал, что не так не пойму, помогите господа.
Похоже у всех кто просмотрел всё получилось? Получается что проблема конкретно в моем контроллере или панели? Хотя не String modul если ставить, а просто Register modul, то всё передается.
Еще подскажите, по поводу системных регистров PFW36,37 и остальных, которые не указаны в руководстве
В том что вы последним выложили, даже программы для записи, чтения String нет. Что там проверять? Только запись бит. А в программе для СП300, полно косяков.
И контроллера v2 у меня тоже нет.
Вложение 49570 Везде Вложение 49571 косяки Вложение 49572
Спасибо, господин Кондор большое за помощь, вы очень помогли мне, я обязательно все косяки учту в реальном проекте. Я просто проверял связь двустороннюю между панелью и ПЛК с помощью модулей Стринг по рекомендации Петра, и даже со всеми этими ошибками данные передаются, в чём я собственно и убедился. Проблема оказалась более глобальной и это больше вопрос к фирмачам. Настроил связь ПЛК с панелью 307Б, всё работает, а с панелью 315Р не хочет, программа одна и та же на ПЛК, подключал разные панели. По сему и вопрос, может есть какие то системные регистры в панели которые нужно включить или отключить?
С СП315 не работал, но есть отличия по описанию. На сколько я понял:
1) Регистры возможно (PFW36.2 и PFW130) переключать только в режиме Мастер, в режиме Слейв ничего не надо. Про PFW37.2 вообще ничего нет.Вложение 49608
2) При каждой заливке программы, надо переподключать USB кабель.
3) Есть отличия в названии портов, в СП315 есть COM1- Download и COM2- PLC. Вам надо COM2- PLC. Проверить кабель.
4) Проверить DIP переключатели.
5) Панель у меня всегда в Слейве с адресом 1, может вам с 80 попробовать на 1 поменять.
П.П. 1,5 - У меня тоже всегда слейв панель, но адрес не думаю что может влиять, так как контроллер может через модуль стринг отправлять в панель, только считать через стринг не может. (На счет 130 регистра если можно поясните, что он такое.)
П 2 - Это действительно так и очень не удобно.
П 3 - Тут всё проверено
П 4 - DIPы все стандартно вниз отпущены.
Всё таки я склоняюсь к багу именно 315 панели, так как на 307ой всё прекрасно получилось.
Поэтому вопрос уже выше, будут, интересно, исправлять?
Можно пример чтения/записи PFW в макросе? А то в справке написано, что "Для PFW: с помощью функций Read/Reads и Write/Writes. Обратите внимание, что присвоения в стиле PSB[300]=TRUE; и PFW[300]=100; не сработают.", а конкретного примера, как надо, я не нашел. Например мне нужно присвоить переменной x значение PFW1000.
Read(HMI_LOCAL_MCH,0,TYPE_PFW,11000,0,TYPE_WORD,&X )
Так? Какой адрес писать в SlaveID, ноль?
Панели нет под рукой, проверить не могу.
Доброго времени суток, уважаемые форумчане. Подскажите пожалуйста почему связь с панелью встала в проекте, свежим взглядом. Возможно что то углядеть не могу? А может есть какие непрописанные истины о которых я узнаю здесь на форуме часто)
И тут на вторые сутки заработала панель, сама, несколько раз пришлось ресетить ПЛК, и сразу нашел много ошибок у себя, а всё таки почему иногда отваливается связь?
Наверняка вопрос был, но я не нашел. Есть возможность сделать автоматический выход из пароля (логоф)? В справке и настройках проекта не нашел. Или только с системными регистрами PSB 60-68 работать вручную?
И есть ли возможность отслеживать активность пользователя, чтобы автоматически выключить бит доступа через определенной время?