Показано с 1 по 8 из 8

Тема: Задание больших адресов в Конфигураторе ПЛК (Modbus Slave)

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию Задание больших адресов в Конфигураторе ПЛК (Modbus Slave)

    Всем здравствовать. Стоит задача связи SCADA и ПЛК 110-30М по Modbus TCP/IP.

    Для отладки разрабатываемой SCADA, я создаю стенд (ПК+ПЛК) и мне необходимо в точности повторить адресацию переменных в памяти ввода/вывода контроллера, какую использует подрядчик на нижнем уровне. Знаю, что он работает с библиотеками типа SysLibSockets, но я пока так не умею: мне понятен лишь стандартный механизм конфигурирования ПЛК. Таким образом нужно адресовать порядка 600 переменных в пределах (c запасом) 21000 регистров.

    Опытным путем обнаружил, что модуль Modbus (slave) позволяет создавать до 999 подэлементов вне зависимости от их типа. Также выяснил, что в корневом модуле Modbus slave можно создавать до 2 вложенных подмодулей того же типа: при большем числе начинает ругаться, не компилируется (да даже и во втором вложенном Modbus (slave) в элементе 8 bits при раскрытии его уже некорректно начинают отображаться символы % в адресах каналов, однако, падла, компилируется). Итого, вручную реализовал структуру разработчика нижнего уровня, широко задействуя принцип вложенности и копирования-вставки. (С используемой конфигурацией адресов и типов переменных при рациональном подходе это получилось не слишком сложно.) Причем в структуре Modbus[FIX] элемент ТСР[VAR] добавил лишь в корневой модуль Modbus (slave). В итоге получилось что-то вроде:

    Modbus (slave)[VAR]
    Modbus[FIX]
    ТСР[VAR]
    Float
    Float
    Float
    ...
    Modbus (slave)[VAR]
    Modbus[FIX]
    2 byte
    Float
    4 byte
    ...
    Modbus (slave)[VAR]
    Modbus[FIX]
    2 byte
    Float
    8 bits <при раскрытии битов в адресах на местах % нечитаемые знаки>
    Float
    ...
    Modbus (slave)[VAR]
    Modbus[FIX]
    Float
    4 byte
    ...

    Предварительно сделал пробный проект, повторяющий самый принцип вложенности (с двумя вхождениями Modbus (slave), с руганью в адресах 8 bits последнего). Проект работал, SCADA видела.

    Для функционального проекта мне потребовалось в Настройках целевой платформы увеличить выделение памяти на область выходов и под стать тому -- общую память. 21000 регистров -- это 42000 байт: итого, учитывая запас, округлил до 16#A400 размер области выходов и 16#E400 взял как общий размер памяти. Проект стал компилироваться, но вот незадача. Загружает, падла, программу, загрузил, ждет, и тут Ошибка (#0), мол, произошло отключение. Нажимаю опять "Подключиться" и все как ни в чем не бывало. Даже, бывает, вижу значения дискретных входов, могу устанавливать дискретные выходы. Но SCADA при этом ни в какую не видит контроллер: выдает ошибку 10061.

    Простой проект

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

    видит, сука, а почти такой же проект, но с программой и с 21000 адресуемых регистров, падла, не видит. Читал, что размеры памяти входов и выходов с 16 кБ можно увеличить при желании до 32 кБ, но, что это предел, явно нигде не пишут. У меня, стало быть, с 16#A400+16#1FFF где-то за 49 кБ получается. Ну, 41 кБ на выходы мне железно надо использовать. Думал бы, что проблема именно в этом, но ведь, сука, простой проект с таким же выделением памяти работает, падла... и ошибки не появляется, да даже если и появляется, то при повторном включении SCADA все равно видит ПЛК, читает и пишет переменные, а вот с полнофункциональным проектом -- нет. Я начал искать границы применимости, удалил половину элементов в области ввода-вывода, порезал и связанные с этим POU и визуализацию: так вообще перестал загружаться: компилируется, заливается и сразу вылетает, и так постоянно. Последнее связываю с тем, что при удалении столь большого числа элементов неизбежно нарушается структура адресов и происходят ошибки выравнивания, о чем без стеснения предупреждает OWEN (cм. Рук-во).

    Автоматическая адресация выставлена, проверка перекрытия тоже.

    Очень надеюсь на вашу конструктивную помощь. Вожусь с этой проблемой несколько месяцев. Здесь какая-то принципиальная ошибка. Можно ли вообще задавать 42000 байта каналов используя стандартный механизм конфигурирования области ввода-вывода?

    PS: Связываюсь и с CoDeSys, и cо SCADA напрямую через Ethernet. Как прямым шнуром, так и кроссом 8 pin (только 2 перекрестные пары) -- результат один.
    Последний раз редактировалось Nikita_; 26.02.2019 в 23:14. Причина: Уточнение

Похожие темы

  1. Задание уставки на Delta VFD CP2000 по Modbus
    от zandaqo в разделе Трёп (Курилка)
    Ответов: 14
    Последнее сообщение: 11.05.2023, 16:30
  2. Ответов: 10
    Последнее сообщение: 27.07.2016, 22:37
  3. Ответов: 9
    Последнее сообщение: 04.09.2015, 20:24
  4. ПЛК150+ИП320(slave) задание уставок
    от Anth в разделе Панели оператора (HMI)
    Ответов: 11
    Последнее сообщение: 26.07.2013, 22:19
  5. Ответов: 5
    Последнее сообщение: 14.10.2010, 14:42

Метки этой темы

Ваши права

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