1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

Подсчет сработанных битов

Ответить

Автор темы
Gienon
здесь недавно
здесь недавно
Сообщения: 27
Зарегистрирован: 10 янв 2019, 17:13
Имя: Алексей
Благодарил (а): 18 раз
Поблагодарили: 4 раза

Подсчет сработанных битов

Сообщение Gienon »

Всем привет! Такой вопрос: как можно посчитать сработанные биты в переменной типа INT. Использую RSLogix5000 v33. Например, имею переменную "MODE" типа INT. Раскрывая переменную, имею вид:
MODE.0 ---------- 0
MODE.1 ---------- 0
MODE.2 ---------- 0
MODE.3 ---------- 1
MODE.4 ---------- 0
MODE.5 ---------- 1
MODE.6 ---------- 0
MODE.7 ---------- 0
MODE.8 ---------- 0
MODE.9 ---------- 0
MODE.10 ---------- 0
MODE.11 ---------- 0
MODE.12 ---------- 0
MODE.13 ---------- 0
MODE.14 ---------- 0
MODE.15 ---------- 1

Сработаны 3 бита (".3", ".5", ".15"). Как их посчитать? Спасибо за ответы.

stesl
эксперт
эксперт
Сообщения: 1011
Зарегистрирован: 31 мар 2018, 12:05
Имя: Вячеслав
Благодарил (а): 94 раза
Поблагодарили: 136 раз

Подсчет сработанных битов

Сообщение stesl »

В цикле посчитать сколько 1-ц. Если есть косвенная адресация...

Михайло
почётный участник форума
почётный участник форума
Сообщения: 3577
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 6 раз
Поблагодарили: 271 раз

Подсчет сработанных битов

Сообщение Михайло »

Цикл из 16 итераций не такой уж и большой, можно использовать инкремент INC 16 раз по условию.

leon78
эксперт
эксперт
Сообщения: 1035
Зарегистрирован: 25 июл 2008, 10:06
Имя: Леонид
Страна: РФ
Благодарил (а): 34 раза
Поблагодарили: 110 раз

Подсчет сработанных битов

Сообщение leon78 »

У меня дежавю, что этот вопрос уже обсуждали недавно?
Хард - это то, что можно швырнуть об стенку, а софт - это то, что можно лишь обматерить.

Автор темы
Gienon
здесь недавно
здесь недавно
Сообщения: 27
Зарегистрирован: 10 янв 2019, 17:13
Имя: Алексей
Благодарил (а): 18 раз
Поблагодарили: 4 раза

Подсчет сработанных битов

Сообщение Gienon »

leon78 писал(а): 27 мар 2024, 09:45 У меня дежавю, что этот вопрос уже обсуждали недавно?
Можно ссылку, не нашел тему, поэтому создал новую

zromz
осмотрелся
осмотрелся
Сообщения: 185
Зарегистрирован: 18 сен 2021, 18:07
Имя: Владимир
Страна: Беларусь
Благодарил (а): 9 раз
Поблагодарили: 30 раз

Подсчет сработанных битов

Сообщение zromz »

Обсуждали недавно да, но для сименса viewtopic.php?t=19231

Автор темы
Gienon
здесь недавно
здесь недавно
Сообщения: 27
Зарегистрирован: 10 янв 2019, 17:13
Имя: Алексей
Благодарил (а): 18 раз
Поблагодарили: 4 раза

Подсчет сработанных битов

Сообщение Gienon »

zromz писал(а): 27 мар 2024, 13:11 Обсуждали недавно да, но для сименса viewtopic.php?t=19231
Благодарю за ответ, но в rslogix нет встроенного bitsum...

Ryzhij
почётный участник форума
почётный участник форума
Сообщения: 5639
Зарегистрирован: 07 окт 2011, 09:12
Имя: Гаско Вячеслав Эриевич
Страна: Россия
город/регион: Рязань
Благодарил (а): 602 раза
Поблагодарили: 760 раз

Подсчет сработанных битов

Сообщение Ryzhij »

stesl писал(а): 26 мар 2024, 14:28 В цикле посчитать сколько 1-ц. Если есть косвенная адресация...
Всё там есть, и даже конструкция FOR ... DO на языке ST, внутрь которой никто не мешает вставить IF... THEN.
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)

automaticj
здесь недавно
здесь недавно
Сообщения: 34
Зарегистрирован: 12 май 2020, 06:21
Имя: Андрей
Страна: Россия
город/регион: Новосибирск
Благодарил (а): 9 раз
Поблагодарили: 26 раз

Подсчет сработанных битов

Сообщение automaticj »

Добрый день! Пример цикла FOR на языке ST для подсчета сработанных битов:

Код: Выделить всё

// Инициализируем переменную счетчика
Bit_Count_Value := 0;

//Создаем  цикл FOR для побитового обхода целочисленного тэга (используем косвенную адресацию)
FOR Index := 0 TO 15 BY 1 DO
	IF Integer.[Index] THEN
	Bit_Count_Value := (Bit_Count_Value + 1);
	END_IF;
END_FOR;	
Где переменная "Integer" является переменной типа INT. В Вашем случае "MODE".

Автор темы
Gienon
здесь недавно
здесь недавно
Сообщения: 27
Зарегистрирован: 10 янв 2019, 17:13
Имя: Алексей
Благодарил (а): 18 раз
Поблагодарили: 4 раза

Подсчет сработанных битов

Сообщение Gienon »

automaticj, благодарю!!!
Ответить

Вернуться в «Общие вопросы»