- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
Разложение слова побитно
-
- эксперт
- Сообщения: 1172
- Зарегистрирован: 14 ноя 2013, 20:35
- Имя: Анатолий Сергеевич
- Страна: Россия
- город/регион: Башкортостан
- Благодарил (а): 13 раз
- Поблагодарили: 68 раз
Разложение слова побитно
Здравствуйте, уважаемые!)))
Появилась задачка осуществить обмен между узкоспециализированным плк и Сименс с7-1500 по протоколу модбас.
Битовые регистры модбас разбросаны по адресному пространству и чтоб уменьшить количество запросов хочу упаковать биты в слова. В Сименсе матаппарат сильный и процесс распаковки/упаковки осуществить проще простого, но вот на другой стороне (узкоспециализированный контроллер) такого аппарата нет, есть только простейшие математические функции.
Упаковку математическими функциями реализовать удалось, а вот распаковку ума не приложу как осуществить...
Может знатоки сталкивались с такими задачками и укажут нужное направление решения?
Появилась задачка осуществить обмен между узкоспециализированным плк и Сименс с7-1500 по протоколу модбас.
Битовые регистры модбас разбросаны по адресному пространству и чтоб уменьшить количество запросов хочу упаковать биты в слова. В Сименсе матаппарат сильный и процесс распаковки/упаковки осуществить проще простого, но вот на другой стороне (узкоспециализированный контроллер) такого аппарата нет, есть только простейшие математические функции.
Упаковку математическими функциями реализовать удалось, а вот распаковку ума не приложу как осуществить...
Может знатоки сталкивались с такими задачками и укажут нужное направление решения?
-
- эксперт
- Сообщения: 1031
- Зарегистрирован: 25 июл 2008, 10:06
- Имя: Леонид
- Страна: РФ
- Благодарил (а): 34 раза
- Поблагодарили: 110 раз
Разложение слова побитно
Остаток от деления на 2 - младший бит
Деление на 2 - сдвиг вправо на 1 бит.
Можно написать простую программу:
Деление на 2 - сдвиг вправо на 1 бит.
Можно написать простую программу:
Код: Выделить всё
цикл n= 0 .. 15
бит[n]= остаток (число/2)
число = число/2
Хард - это то, что можно швырнуть об стенку, а софт - это то, что можно лишь обматерить.
-
- почётный участник форума
- Сообщения: 1041
- Зарегистрирован: 29 апр 2014, 09:57
- Имя: Рыбкин Владимир Геннадьевич
- Страна: Россия
- город/регион: Тверь
- Благодарил (а): 55 раз
- Поблагодарили: 134 раза
Разложение слова побитно
Бит0 = (Регистр and 1 << 0) > 0; ..... Бит15 = (Регистр and 1 << 15) > 0;
Вообще оптимальный вариант зависит от возможностей неназванного контроллера
Вообще оптимальный вариант зависит от возможностей неназванного контроллера
-
- администратор
- Сообщения: 4727
- Зарегистрирован: 25 июл 2008, 07:12
- Имя: Диев Александр Васильевич
- Страна: Россия
- город/регион: г. Сегежа, Карелия
- Благодарил (а): 225 раз
- Поблагодарили: 392 раза
Разложение слова побитно
Можно нулевой бит выделять по "И" с числом 1 (в двоичной системе получается слово 0000000000000001) - это вместо получения остатка от деления. И делить на 2 сдвигом на 1 разряд.
Повторное использование кода не отменяет повторного использования мозга при его повторном использовании.
-
- эксперт
- Сообщения: 1031
- Зарегистрирован: 25 июл 2008, 10:06
- Имя: Леонид
- Страна: РФ
- Благодарил (а): 34 раза
- Поблагодарили: 110 раз
Разложение слова побитно
Вопрос был про математические функции.
Сдвиг и побитовые И и ИЛИ, я так понял из первого поста, узкоспециализированный контроллер не поддерживает. Иначе вопрос бы не возник :)
Сдвиг и побитовые И и ИЛИ, я так понял из первого поста, узкоспециализированный контроллер не поддерживает. Иначе вопрос бы не возник :)
Хард - это то, что можно швырнуть об стенку, а софт - это то, что можно лишь обматерить.
-
- эксперт
- Сообщения: 1172
- Зарегистрирован: 14 ноя 2013, 20:35
- Имя: Анатолий Сергеевич
- Страна: Россия
- город/регион: Башкортостан
- Благодарил (а): 13 раз
- Поблагодарили: 68 раз
Разложение слова побитно
Интригу создал)))
Базис 100 имя этого плк, операции логические он поддерживает, но во сдвига нет как такового. Язык программирования весьма специфический и потому от некоторых вещей голова кружиться начинает)))
С делением связываться не хотелось, но похоже придется...
Завтра с утра залью, проверю как работает.
Всем огромное спасибо за подсказки
Базис 100 имя этого плк, операции логические он поддерживает, но во сдвига нет как такового. Язык программирования весьма специфический и потому от некоторых вещей голова кружиться начинает)))
С делением связываться не хотелось, но похоже придется...
Завтра с утра залью, проверю как работает.
Всем огромное спасибо за подсказки
-
- эксперт
- Сообщения: 1031
- Зарегистрирован: 25 июл 2008, 10:06
- Имя: Леонид
- Страна: РФ
- Благодарил (а): 34 раза
- Поблагодарили: 110 раз
Разложение слова побитно
Если побитное И поддерживает, то все просто:
бит 0 = (регистр И 1) <> 0
бит 1 = (регистр И 2) <> 0
бит 2 = (регистр И 4) <> 0
и так далее
бит 0 = (регистр И 1) <> 0
бит 1 = (регистр И 2) <> 0
бит 2 = (регистр И 4) <> 0
и так далее
Хард - это то, что можно швырнуть об стенку, а софт - это то, что можно лишь обматерить.
-
- осмотрелся
- Сообщения: 158
- Зарегистрирован: 25 окт 2010, 10:30
- Имя: Капуста Степан Степанович
- Поблагодарили: 7 раз
Разложение слова побитно
Я вот сижу, читаю и со вчера понять задачу никак не могу. Зачем вообще что-то упаковывать?
S7-1500 у меня нет /и надеюсь, не появится/, S7-200 есть, S7-300, есть других ПЛК фирм... Во всех случаях делаю примерно одинаково: битовые флаги складываю по группам рядом. Скажем, m12.0, m12.1..m13.7. Затем беру и загоняю в 16-битный регистр MW12 - все 16 битовых флагов "улетают" в один регистр. На приемной стороне делаю аналогично: 16-битный регистр читаю, скажем, в MW0 и работаю с флагами m0.0, m0.1..m1.7.
Все, что тут надо знать - на S7-200 и S7-300 мотороловский формат данных - первым в слове идет старший байт.
Головняк бывает, если на одном из концов стоит ПК и программа, написанная на языке высокого уровня: тут битовый флаг вполне может оказаться 32-битным... Вот тут надо думать насчет упаковки....
S7-1500 у меня нет /и надеюсь, не появится/, S7-200 есть, S7-300, есть других ПЛК фирм... Во всех случаях делаю примерно одинаково: битовые флаги складываю по группам рядом. Скажем, m12.0, m12.1..m13.7. Затем беру и загоняю в 16-битный регистр MW12 - все 16 битовых флагов "улетают" в один регистр. На приемной стороне делаю аналогично: 16-битный регистр читаю, скажем, в MW0 и работаю с флагами m0.0, m0.1..m1.7.
Все, что тут надо знать - на S7-200 и S7-300 мотороловский формат данных - первым в слове идет старший байт.
Головняк бывает, если на одном из концов стоит ПК и программа, написанная на языке высокого уровня: тут битовый флаг вполне может оказаться 32-битным... Вот тут надо думать насчет упаковки....
-
- администратор
- Сообщения: 4727
- Зарегистрирован: 25 июл 2008, 07:12
- Имя: Диев Александр Васильевич
- Страна: Россия
- город/регион: г. Сегежа, Карелия
- Благодарил (а): 225 раз
- Поблагодарили: 392 раза
Разложение слова побитно
Если не обратили внимания: на другой стороне - "узкоспециализированный ПЛК", в котором так просто не получается. На стороне симатика проблемы нет.
Повторное использование кода не отменяет повторного использования мозга при его повторном использовании.
-
- почётный участник форума
- Сообщения: 1041
- Зарегистрирован: 29 апр 2014, 09:57
- Имя: Рыбкин Владимир Геннадьевич
- Страна: Россия
- город/регион: Тверь
- Благодарил (а): 55 раз
- Поблагодарили: 134 раза
Разложение слова побитно
Любой Инженер или Мастер стремятся решить задачу наилучшим образом. В том числе и этим они отличаются от менеджера, считающего, что качество не имеет значения, главное количество.
-
- осмотрелся
- Сообщения: 158
- Зарегистрирован: 25 окт 2010, 10:30
- Имя: Капуста Степан Степанович
- Поблагодарили: 7 раз
Разложение слова побитно
Обратил... Странный какой-то контроллер: внутри себя позволяет работать, перепахивать данные, но не позволяет переразместить данные иным образом.
Кто бы спорил...
Вопрос-то у меня - не вообще зачем, а конкретно - если есть возможность работать внутри этого узкоспециализированного ПЛК, то сразу так и работать, чтобы ничего паковать не требовалось.
Или сразу сделать вывод, что это нереально.
К примеру, у меня вот рядом стоит узкоспециализированный контроллер, так у него все битовые сигналы надо выпрашивать строго по одному - иначе никак нельзя, не позволяет его протокол.
Ну если все так плохо, то тогда было бы очень интересно узнать, что это за ПЛК такой и какие у него возможности. И уже от этого плясать...