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

Тема: modbus и массив структур

  1. #1

    По умолчанию modbus и массив структур

    День добрый.
    Есть следующая задача: установка, состоящая из нескольких сотен идентичных узлов.
    Есть контроллер ПЛК110 [ms02] и какая-то modbus периферия к нему.
    Каждый узел имеет десяток настроек и десяток результатов измерений.
    Все данные (и настройки и измерения) должны отображаться в modbus.
    Настройки должно быть можно менять как через modbus так и с веб-интерфейса.
    ______
    Суть вопроса/проблемы: каким образом соотнести внешние каналы (привязанные к modbus) с компонентами массива структур (куда складываются все данные)?
    Проблема в том, что сделать внешний канал связанный с компонентом одной структуры можно. А с массивом структур - нельзя, поскольку он не разворачивается до компонентов структуры и можно сослаться только на элемент массива, т.е. структуру целиком, что вовсе не то, что требуется.
    ______
    Существует ли правильный способ организации взаимодействия массивов структур с modbus и экранными формами, или все присвоения придется делать путем написания отдельной программы?

  2. #2
    Пользователь
    Регистрация
    11.01.2009
    Адрес
    Кострома
    Сообщений
    3,144

    По умолчанию

    3 — чтение группы регистров;
    6 — запись регистра;
    16 — запись группы регистров.

    Читайте и записывайте.
    Раскладывать по битам и регистрам в структуре нужно программно.

  3. #3

    По умолчанию

    функции модбас я знаю, спасибо. Речь совсем о другом. Есть массив структур MS[200], структуры, допустим, вида {a,b,c,d,e}
    каким образом создать внешний кaнaл связанный, к примеру, с MS[126].b? При том, что создать его можно исключительно методом перетаскивания в папку "внешние каналы" нужного компонента, а компонент этот в дереве не отображается?
    {получил немало удовольствия от здешнего бота полиции нравов, похоже у него паранойя}
    Последний раз редактировалось lttn; 13.06.2019 в 20:26.

  4. #4

    По умолчанию

    Речь ведь идет про MasterSCADA?
    Тогда про какой массив структур вы говорите?
    Опишите вашу задачу детальнее, если есть проект - приложите (Проект - ЭКспортировать), также приложите несколько скриншотов.
    Спасибо.

  5. #5

    По умолчанию

    Цитата Сообщение от SCADAMaster Посмотреть сообщение
    Речь ведь идет про MasterSCADA?
    -- ну я полагал, что речь идет о MasterSCADA 4D,
    Тогда про какой массив структур вы говорите?
    хм... про массив структур. Создаем пользовательский тип данных - структуру (см. пример). Создаем в объекте параметр с типом массив этих самых пользовательских структур.
    Переходим в "систему", добавляем PLC110_30, в него добавляем протокол modbus RTU и в папку "внешние каналы" канал с неким modbus адресом. Теперь требуется, чтобы этот канал был отображал значение, скажем из 88 элемента созданного нами массива тех самых структур, из второго компонента этого элемента. В приведенном примере требуется, чтобы "Параметр 1[88].Поле_2" читалось и записывалось в контроллер по протоколу modbus RTU по адресу 22.
    Это в качестве примера.
    В реальном проекте массив структур должен полностью соответствовать modbus карте контроллера и быть размером примерно 50 элементов массива и в структуре 20 компонентов. Т.е. тысяча регистров.
    собственно весь проект умещается на одном скриншоте: masterscada.jpg

  6. #6

    По умолчанию

    Мне кажется, вам придется все таки программно перекладывать значения из массива структур в параметры объекта, а потом уже эти параметры портировать во внешние каналы узла. Но может быть SCADAMaster4D подскажет, как обращаться из программы напрямую к переменным внешних каналов узла.

  7. #7

    По умолчанию

    особенность заключается еще и в том, что обмен массива структур с modbus - двунаправленный. И изменены компоненты массива могут быть несколькими источниками - из GUI, из программ и с использованием modbus. Появление прокладки (в виде параметров объекта) между внешними каналами и массивом порождает проблему отслеживания изменений данных, которую вообще непонятно как решать - потребуется еще одна копия массива структур для сравнения что именно изменилось и где изменилось - переменная modbus или значение в массиве структур и потребуется дурацкая программа - диспетчер, которая будет отслеживать и копировать изменения в нужном направлении. При большом количестве переменных, полагаю, такая конструкция сожрет все ресурсы контроллера.
    Если я правильно понимаю внешний канал - указатель, а не самостоятельная переменная и его использование таких проблем порождать не должно, поскольку переменная остается ровно одна - компонент элемента массива структур.
    Последний раз редактировалось lttn; 20.06.2019 в 12:43.

Похожие темы

  1. Ответов: 23
    Последнее сообщение: 12.09.2023, 07:08
  2. Ответов: 21
    Последнее сообщение: 01.07.2022, 06:36
  3. ПЛК 110, модбас и массивы структур.
    от lttn в разделе ПЛК (среда MasterSCADA 4D)
    Ответов: 7
    Последнее сообщение: 17.10.2019, 22:01
  4. Массив в регистры Modbus
    от Boris_K в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 28.04.2014, 22:42
  5. инициализация массива структур
    от drvlas в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 16.12.2010, 18:31

Ваши права

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