Решил не создавать новую тему, а спросить тут
Задачка такая, есть диапазон адресов около 100 слов
в этом диапазоне в разных словах находятся 15 битов под одному биту-состоянию в слове, которые необходимо считать по modbus с контроллера в Unity Pro
по идее задача решается двумя способами:
1. в контроллере можно сформировать новое слово из этих битов и читать готовое слово, потом его расшифровывать соответственно
2. но можно ли не меняя ПО контроллера читать эти 15 битов и каким способом это лучше делать?
вроде бы можно прочитать сразу 100 регистров и потом их уже обрабатывать..
Либо надо 15 раз прочитать каждое слово с необходимым нам битом, и есть ли тут какое-нибудь лаконичное решение в плане размера кода? Например можно ли это как-то компактно написать на ST ?
- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
Задачка на чтение данных
-
- здесь недавно
- Сообщения: 16
- Зарегистрирован: 22 май 2014, 19:35
- Имя: Максим
-
- администратор
- Сообщения: 17576
- Зарегистрирован: 17 июн 2008, 16:01
- Имя: Евгений свет Брониславович
- Страна: Россия
- город/регион: Санкт-Петербург
- Благодарил (а): 824 раза
- Поблагодарили: 1652 раза
Re: Задачка на чтение данных
Я так понимаю, многое зависит от конкретного диапазона адресов, поскольку какие-то регистры можно читать побитно (Read Single Coil), а какие-то нет. Опять же, зависит от требований по скорости вычитки: если время и посылки надо экономить то в контроллеры нужно собрать слово из бит и потом его прочесть, а если трафик некритичен то читайте все 100 слов и берите нужный бит.
Собственно, решения Вы уже перечислили. Я полагаю, Вам так и поставили задачу неоднозначно - специально, чтобы поняли все нюансы. Поэтому самым правильным ИМХО будет решить её всеми способами, объяснив достоинства и недостатки каждого.
Собственно, решения Вы уже перечислили. Я полагаю, Вам так и поставили задачу неоднозначно - специально, чтобы поняли все нюансы. Поэтому самым правильным ИМХО будет решить её всеми способами, объяснив достоинства и недостатки каждого.
По вопросам работы Форума можно обратиться по этим контактам.
-
- частый гость
- Сообщения: 409
- Зарегистрирован: 20 ноя 2012, 13:45
- Имя: :.О.N.Ф
- Страна: Россия
- Благодарил (а): 3 раза
- Поблагодарили: 7 раз
Re: Задачка на чтение данных
У некоторых ОРС, не знаю как там в Unity Pro, бывает настроечка, сколько лишних регистров разрешается прочитать (если нужно считать 10 и 15, то 11, 12, 13 и 14 получаются "лишними"). Соответственно, если ваши слова в некоторых местах кучкуются, то эту настройку можно оптимально установить, чтобы такие кучки читались одним запросом - для вас это будет выглядеть как 15 настроенных на опрос регистров, а оно там само оптимизирует какие отдельно читать, какие вместе.
«Сразу видно внимание к каждой мелочи, неиспорченным не осталось ничто».
-
- здесь недавно
- Сообщения: 16
- Зарегистрирован: 22 май 2014, 19:35
- Имя: Максим
Re: Задачка на чтение данных
Вообще это как бы не учебная задача, рабочая. просто я вопрос решил задать в этом подфоруме, потому что для меня это примерно как учебный вопрос.
И я забыл написать что чтение регистров делается из одного контроллера Quantum другим контроллером Quantum, то есть верхний уровень пока не рассматривается.
Поэтому мне нужно написать секцию и скорее всего на ST, если читать 15 регистров по отдельности, но я не нашел еще примерна реализации чтения по modbus на языке ST.
Например функция CREAD_REG(в среде Concept, не знаю есть она Unity Pro или нет) может читать 100 регистров за раз, но я не уверен что это разумное решение.
Xmit вроде может читать 4 блока регистров за раз, но я не нашел пока русского хелпа по ней.
Нормально ли гонять 100 регистров по modbus сети, не создаст ли это излишнюю загрузку и не будет ли вероятности большей потери данных?
И я забыл написать что чтение регистров делается из одного контроллера Quantum другим контроллером Quantum, то есть верхний уровень пока не рассматривается.
Поэтому мне нужно написать секцию и скорее всего на ST, если читать 15 регистров по отдельности, но я не нашел еще примерна реализации чтения по modbus на языке ST.
Например функция CREAD_REG(в среде Concept, не знаю есть она Unity Pro или нет) может читать 100 регистров за раз, но я не уверен что это разумное решение.
Xmit вроде может читать 4 блока регистров за раз, но я не нашел пока русского хелпа по ней.
Нормально ли гонять 100 регистров по modbus сети, не создаст ли это излишнюю загрузку и не будет ли вероятности большей потери данных?
-
- здесь недавно
- Сообщения: 16
- Зарегистрирован: 22 май 2014, 19:35
- Имя: Максим
-
- администратор
- Сообщения: 17576
- Зарегистрирован: 17 июн 2008, 16:01
- Имя: Евгений свет Брониславович
- Страна: Россия
- город/регион: Санкт-Петербург
- Благодарил (а): 824 раза
- Поблагодарили: 1652 раза
Re: Задачка на чтение данных
Тогда ИМХО лучше в первом ПЛК сформировать слово из нужных бит, которое потом прочесть вторым ПЛК. Об OPC тут и речи не идёт. Ибо гонять по 200 байт ради того чтобы получить 2 байта - по-моему, неразумно. Хотя и можно если у Вас сеть не загружена.
По вопросам работы Форума можно обратиться по этим контактам.
-
- здесь недавно
- Сообщения: 16
- Зарегистрирован: 22 май 2014, 19:35
- Имя: Максим
Re: Задачка на чтение данных
наверное так и сделаем, просто у нас там гарантия на проект и ПО как бы нельзя менять еще полгода.
а кто-нибудь мог бы показать реализацию чтения слова по модбас на языке ST
или оно однотипно FBD только с переносом объектов в текст ? просто почему-то не смог найти именно текстовую версию
а кто-нибудь мог бы показать реализацию чтения слова по модбас на языке ST
или оно однотипно FBD только с переносом объектов в текст ? просто почему-то не смог найти именно текстовую версию