Показано с 1 по 10 из 26

Тема: Почему бы Овену не сделать переменные 64 или 128 байт в модуле slave?

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

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

    По умолчанию

    Цитата Сообщение от Николаев Андрей Посмотреть сообщение
    To Загнетов:
    Давайте еще раз разберемся.
    Вам необходимо опрашивать 100-150 битных датчиков? При нормальном формировании области памяти опрашиваемого устройства\устройств это занимает от 4 до 5 регистров Мы в модулях ОБЯЗАТЕЛЬНО сделали маски входов и маски выходов, где одной посылкой значение 32 входов считывается....
    в этой цитате модуль = программный модуль в конфигурации ввода-вывода ПЛК или slave-устройство ввода-вывода ?


    Объект технически не сложный, но ответственность велика и я решил формализовать обращения к элементам структур, об этом далее.

    в посте http://www.owen.ru/forum/showpost.ph...8&postcount=15 Валенок описал интересный формальный способ, использовать на манер препроцессорных директив символьные метки для обращения к элементам структур. При таком подходе получается компактно, но
    возможны скрытые ошибки, о которых я написал по этой ссылке.

    Если структурировать все данные явно, то можно возложить проверки такого рода на компилятор. Объем обмена значительно увеличится (увеличение около 10 раз), но для Ethernet это не критично.
    Именовать переменные в области ввода вывода и создавать ошибки нет желания, поэтому там будет noname-балласт.

    Заказчик попросил еще и ручную симуляцию статусов устройств с панели и это еще немного увеличило область обмена.
    Данные структурируются таким способом: Агрегат.Механизм_или_датчик.Статусы_и_команды
    Чтобы не иметь проблем с выравниванием (вопрос о нём в конце поста), минимальный элемент в структуре взят 16 битовым.

    В результате одна задвижка, для работы с которой было бы достаточно 6 бит (закрыта, открыта, закрыть, открыть, симулировать статус открытия, закрытия) в при обмене в сегменте сети ПЛК-панель (Ethernet) превратилась в 48 бит

    При обмене в сегменте ПЛК-slave (Овен-модули ввода и вывода, RS-485 mbus RTU) это будут всего 3 бита открыть/закрыть, закрыта, открыта.

    Цитата Сообщение от Николаев Андрей Посмотреть сообщение
    To Загнетов:
    Или Вам необходимо формировать в ПЛК карту памяти, причем опрашивающее устройство не умеет читать произвольные регистры, а ему нужно выравнивать, добавляя заплатки?
    Просто до конца не понял.
    Конечно умеет, ПЛК Овен ситывает данные с модулей ввода вывода Овен.
    Но ради удобства решил формировать в ПЛК карту памяти в виде структуры, складывать в нее состояния устройств, команды ПЛК, команды панели, уставки и др. В зависимости от режима работы некоторыми переменными работать при помощи масок. Так легче.
    Очень похоже на ситуацию, когда "пассажир и его портфель" едут на грузовике, но это не затратно.

    Цитата Сообщение от Николаев Андрей Посмотреть сообщение
    А вот официальный ответ: пока что добавлять в конфигурацию модули 64 или 128 байт не планировали.
    выход - формировать балласт вручную из 4-байтных. (capzap справедливо "прищучил" меня - в "owen_plc_config..." модули называются каналами)

    Цитата Сообщение от Николаев Андрей Посмотреть сообщение
    Принципиально это возможно. Но задача такая становилась 1-2 раза. При более близком рассмотрении люди переходили на построение обмена через SysLibCom.
    до SysLibCom еще не дошел, я в начале пути.
    на форуме пишут про проблемы с этой библиотекой, а проблемы заказчику не нужны.

    Цитата Сообщение от Николаев Андрей Посмотреть сообщение
    И еще раз. Если Вы умеете формировать дамп памяти и работать с ним - рекомендую пользоваться библиотеками.
    такое умение есть у "писателя" на С и asm.

    Цитата Сообщение от Николаев Андрей Посмотреть сообщение
    В них Вы можете формировать какие угодно дампы по размеру. Плюс совершенно не используется память, ограниченная типом лицензии L или М. Согласитесь, это здорово.
    Конфигурация создается для людей, которые ничего не хотят знать про дампы и указатели.
    В этот раз наверное проще скопировать дамп памяти в область обмена и пользоваться модулем mb TCP slave. Памяти не жалко.

    Цитата Сообщение от Николаев Андрей Посмотреть сообщение
    Скажу крамольную мысль - не смотря на все годы, проведенные с CoDeSys я не умею пользоваться указателями, и всем начинающим на курсах ЗАПРЕЩАЛ с ними работать (рекомендовал не работать хотя бы первые 6-9 месяцев). Ибо это путь к нестабильной работе контроллера и сложному поиску ошибок. И пользуются такими инструментами в основном спецы, перешедшие с ПО верхнего уровня на ПЛК.
    Напишите что-нибудь на C и умение придет к Вам.
    Косвенная адресация всегда опаснее, чем прямая, так как компилятор не может формально проверить ее. Очень даже правильно советуете. Можно по ошибке с указателями уйти в чужую область памяти и "натворить дел". Именно из-за этого я не стал применять способ описанный Валенком. Возможные ошибки не очевидны, и трудно выявляемы.
    Кстати, можно ли из-за неправильного обращения по указателю нарушить оперативную память кода ПЛК Овен или она безопасно отделена?

    Цитата Сообщение от Николаев Андрей Посмотреть сообщение
    Открыт к обсуждению.
    Спасибо, может быть заменить в проекте все ПЛК 100 на 110-ые из-за съемных колодок и выигрыша производительности (или в 110 тот же ARM9?).
    От этих контроллеров потребуется в основном хороший быстрый сетевой обмен. Логическая программа не сложная.

    Вопросы:

    1. Есть мнение (capzap) , что переписывая пословно по указателям около 400 байт в область обмена, возможно не вписаться в длительностью цикла ПЛК. Опасение реальное?
    2. Может ли компилятор, редактор связей или динамический диспетчер памяти разместить элементы структуры не подряд вплотную друг за другом, а кусками в разных местах?
    3. Тот же вопрос для массива 16 битных, есть ли гарантия на отсутствие "щелей"?
    4. В структуре осуществляется выравнивание по адресам, подобное области ввода-вывода?
    Последний раз редактировалось Загнетов; 05.09.2012 в 12:03.

Похожие темы

  1. плк63-пм01 потеря байт
    от Elka в разделе ПЛК63/73
    Ответов: 35
    Последнее сообщение: 06.11.2012, 14:26
  2. ПЛК(Slave) < СП270(Master) > ПЛК(Slave). Хождение по экранам при потере связи.
    от masterfloMaster в разделе Панели оператора (HMI)
    Ответов: 3
    Последнее сообщение: 12.04.2011, 17:41
  3. чтение массива байт
    от Febricio в разделе Сетевые технологии
    Ответов: 1
    Последнее сообщение: 29.07.2010, 11:06
  4. Modbus slave переменные
    от Дмитрий77 в разделе ПЛК1хх
    Ответов: 7
    Последнее сообщение: 30.04.2010, 15:26

Ваши права

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