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

Тема: Количество бит в состоянии TRUE в слове

  1. #1
    Пользователь
    Регистрация
    28.08.2008
    Адрес
    23..93..123
    Сообщений
    1,656

    По умолчанию Количество бит в состоянии TRUE в слове

    Всем привет, Товарищи.

    Вкратце вводная:
    В проекте формируются флаги аварий и упаковываются в слова (word) для передачи в HMI. Озадачился подсчетом количества активных аварий, на сименсе это легко, структура дата-блока позволяет, да сам формат word в Step7 по факту массив бит. Т.е просто в цикле проверяем состояние бита в слове и если TRUE, инкрементируем счетчик.
    Попробовал по образу сделать то-же в КДС и... дошел только до побитного присвоения массиву бит и уже анализировать массив, т.к динамическая адресация бит в слове не поддерживается, это понятно, в принципе вопрос в чем:- как "закинуть", задвинуть, запихнуть WORD в ARRAY[0..15]OF BOOL, вариант ARRAY[0]:=WORD.0 и сам знаю.

  2. #2
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,066

    По умолчанию

    В библиотеке OSCAT есть функция BIT_COUNT.

    Код:
    FUNCTION BIT_COUNT : INT
    VAR_INPUT
    	IN : DWORD;
    END_VAR
    (*
    version 1.1	10 sep 2007
    programmer 	hugo
    tested by		tobias
    
    BIT_COUNT counts the amount True of bits in a dword.
    for exabple: bit_count(3) returns 2 because two bits (bits 0 and 1) are true and all others are false. 
    *)
    
    
    
    WHILE in > 0 DO
    	IF in.0 THEN Bit_Count := Bit_Count + 1; END_IF;
    	in := SHR(in,1);
    END_WHILE;

  3. #3
    Пользователь
    Регистрация
    28.08.2008
    Адрес
    23..93..123
    Сообщений
    1,656

    По умолчанию

    Ага, такая конструевина годится, спасибо!

Похожие темы

  1. ТРМ151-05 ИР ненулевой выход в состоянии СТОП
    от alek-epapu в разделе Эксплуатация
    Ответов: 5
    Последнее сообщение: 02.11.2016, 08:13
  2. Ответов: 2
    Последнее сообщение: 06.09.2016, 12:36
  3. Отображение состояния бита в слове
    от GSK в разделе Master SCADA 3
    Ответов: 2
    Последнее сообщение: 11.09.2012, 19:52
  4. Ответов: 4
    Последнее сообщение: 28.01.2009, 11:34
  5. Ответов: 4
    Последнее сообщение: 28.01.2009, 11:34

Ваши права

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