Связь со мной: telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru (личка на форуме - не подходит)
Раздел CDS V3.5 на сайте | Основные темы по CDS V3.5 на форуме: Вопросы и ответы | Визуализация | Настройка обмена с другими устройствами
Repository Archive V3.5 SP4 (необходим для СПК207/СПК1хх без Eth/ПЛК3xx)
oscat.ru | Как обратиться в техподдержку? | Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | Проблема XY | Как правильно задавать вопросы | AnyDesk
Добрый день, прошу помощи зала, не удаёться связать панел СП310Р и ПЛК 110-24 32.к.м. В панели нарисовал кнопку . присвоили ей адрес PSB 256, скорость 9600, в ПЛК в конфигурации добавил модуль RS 485_1, универсальный модбайс девайс (NET MODE - TCP, MODYLE SLAVE ADRES - 1, BY POLL TIME) , 8-bit input module (REGISTER adres 256, COMAND - READ COIL STATUS). Внулевом бите этого регистра указал переменную MAO_1_OTK_CP_IN которая должна переключаться в программе по нажатию кнопки на экране и ничего не происходит. Где ошибка не могу найти..Rtorka.zipRtorka.zip
Ту проект панели
1. Не понятно по какому интерфейсу будет связь.
Если по RS 485, то зачем для UMD задан ежим работы TCP, должен быть Serial
Захват-5.png
2. ПЛК в настройках RS 485 задано - нет контроля четности
Захват-1.png
А в настройках порта панели - есть (Контроль на четность)
Захват-2.png
3. ПЛК для MAO_1_OTK_CP_IN адрес задан 256
Захват-4.png
А для переключателя на экране панели почему-то адрес уже PSB300
Захват-6.png
А должен быть PSB256
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Мой канал на РУТУБЕ
https://rutube.ru/channel/23641433/
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
Petera, спасибо. С регистром PSB 300/256 в реальностивсе было правильно это zip. файл был сохранён до того как я изменил его в ПЛК. Заработало сразу как я исправил бит четности и NET MODE выставил SERIAL.
Проект в составе ПЛК-110(М02)- СП307(слэйв) по RS-485 и быстрые выходы по таймерному прерыванию 25кГц.
В конфигурации на чтение из панели около 30 регистров с числовыми значениями (коды клавиш, уставки).
Реакция на нажатие клавиши СП307 около 3-4 сек, что недопустимо.
На форуме встречал предложения для уменьшения числа элементов для чтения из панели применить "String input module".
Вопрос - как сформировать строку в панели в последовательности регистров (преобразовать числовые значения в ASCII коды
аналогично оператору CoDeSys "word_to_string")? Может существует незадокументированная HMI Api Function для макросов.
Какой такой "word_to_string"?
Предложенный способ повышения скорости обмена с панелью с использованием в мастере ПЛК модулей String output module/String input module здесь http://www.owen.ru/forum/showthread....l=1#post141316
Смотрите внимательно пример программы для ПЛК
Захват-1.png
Никаких преобразований числовых значения в ASCII коды здесь нет
А панель вообще не знает о том, что ее регистры читаются какими-то String input module. Т.е. никаких дополнительных телодвижений в проекте для панели делать не требуется, в том числе и преобразовать числовые значения в ASCII коды.
ЗЫ, Т.к. ссылка больше не работает привожу описание способа использования String output /String input модулей
1. Определяем приемлемое количество регистров в одном запросе, у меня в примере будет 16 регистров в одной группе.
Для каждой группы будем использовать ОДИН модуль String
Слишком много в группе делать не стоит.
а) для модуля String есть "магическая" цифра 80 (перманентное число байт в модуле String), по этому если модулей String будет больше одного, то в каждом можно использовать не более 80 байт или 40 регистров. Так получилось, что в реальном распределении памяти адрес каждого последующего модуля String совпадает с адресом 41 регистра предыдущего и все регистры старше 41 будут переписываться информацией из первых регистров последующих модулей.
Больше 40 регистров можно если модуль String всего один.
2.Помещаем String output и String input модули в разные UMD
Для UMD с String output задаем режим работы по изменению значения
Захват-5.png
В String output используем для записи 16 функцию
Захват-1.png
3. Смотрим в конфигурации какие адреса получились для модулей String, например AT %QB7.1.0.0 и/или AT %QB7.1.1.0 и/или %QB7.1.2.0 и т.д
Захват-2.png
4. Создаем в разделе описания переменных нужное количество групп регистров в виде массивов вида Blok1 AT %QB7.1.0.0:ARRAY [0..15] OF WORD
где после AT приводим адреса из конфигурации.
Захват-3.png
число байт в модуле String д.б. в два раза больше числа регистров в группе
Захват-4.png
5. В программе обращаемся к элементам массивов
Захват-6.png
Вот еще один пример - чтение из панели значений Float
Захват-2.png Захват-3.png
Последний раз редактировалось petera; 22.04.2020 в 13:27.
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Мой канал на РУТУБЕ
https://rutube.ru/channel/23641433/
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
Petera, спасибо за оперативный ответ.
С символьной переменной я связался по причине определения str1 в конфигураторе
Вложение 30532
которая в результате читалась в ПЛК как str1='', т.е. пустой строкой.
Сегодня же попробую изменить чтение регистров предложенным Вами способом.
Не понял только один момент - почему Вы ограничиваете в указанном примере чтение-запись
в одном канале (переменной) 16-ю регистрами (amount byte=32), ведь максимальное значение
равно 249 байтам и указав (amount byte=40) можно обойтись одним каналом.
И ещё один момент - функция "копировать регистр" из битового PSB в слово PSW
Захват-2.jpg
работает при офлайн эмуляции при PSB кратном 8 (как справедливо Вами указано в одном из
Ваших сообщений), а на СП300 приведенная на изображении функция читает значения из
начального адреса, кратного 16 (PSB288) в PSW296.0.???
Ограничения в 16 регистров нет, это значение у меня только для примера. Кроме того в следующем посте http://www.owen.ru/forum/showthread....l=1#post176633 более подробный ответ, почему в моем примере в группе по 16 регистров.
Однако в реальности 249 байт не получается, для String есть "магическая" цифра 80 (перманентное число байт в модуле String), по этому если модулей String будет больше одного, то можно использовать только 80 байт или 40 регистров, объяснения здесь http://www.owen.ru/forum/showthread....l=1#post177886
По поводу "копировать регистр" из битового PSB в слово PSW.
Не совсем понял Ваш вопрос.
Могу сказать только, что начальный адрес PSB должен быть ОБЯЗАТЕЛЬНО кратным 16. Это будет работать и в эмуляторе и в панели.
Если PSB выбирать кратном 8, то такой вариант правильно работает ТОЛЬКО в эмуляторе. Для реальной панели этот вариант не проходит.
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Мой канал на РУТУБЕ
https://rutube.ru/channel/23641433/
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
Petera, в Ваших примерах ссылка в конфигураторе на адресное пространство типа IB7.2.0 (входы).
У меня почему-то QB, хотя вставлен "String input module"
Захват-3.jpgЗахват-3.jpg
Это глюк конфигуратора или в объявлении переменных указывать типа
(Blok1_fromPanel AT %QB6.2.0.0:ARRAY [0..39] OF WORD)?