Цитата Сообщение от Cool-russian Посмотреть сообщение
Позвольте внести свои 5 копеек относительно ФБ упаковки . Если я правильно понял, то уже поднималось в этой теме: пользователь capzap в сообщении № 8 упомянул о биб-ке oscat и функции BYTE_TO_BITS. Однако BYTE_TO_BITS применима к 8-ми булевым переменным (автору темы для решения задачи необходимо минимум 12). Можно по аналогии забацать ФБ WORD_OF_BIT на ST:
Исходник:
Код:
FUNCTION_BLOCK WORD_OF_BIT
VAR_INPUT
    B0: BOOL;     B1: BOOL;
    B2: BOOL;     B3: BOOL;
    B4: BOOL;     B5: BOOL;
    B6: BOOL;     B7: BOOL;
    B8: BOOL;     B9: BOOL;
    B10: BOOL; B11: BOOL;
    B12: BOOL; B13: BOOL;
    B14: BOOL; B15: BOOL;
END_VAR
VAR_OUTPUT
    out: WORD;
END_VAR
VAR
END_VAR

Тело ФБ:
out:=SHL (SHL  (SHL (SHL (SHL (SHL (SHL (SHL (SHL (SHL (SHL (SHL (SHL (SHL (SHL (BOOL_TO_WORD(B15), 1) OR BOOL_TO_WORD(B14), 1) OR BOOL_TO_WORD(B13), 1) OR BOOL_TO_WORD(B12), 1) OR BOOL_TO_WORD(B11), 1) OR BOOL_TO_WORD(B10), 1) OR BOOL_TO_WORD(B9), 1) OR BOOL_TO_WORD(B8), 1) OR BOOL_TO_WORD(B7), 1) OR BOOL_TO_WORD(B6), 1) OR BOOL_TO_WORD(B5), 1) OR BOOL_TO_WORD(B4), 1) OR BOOL_TO_WORD(B3), 1) OR BOOL_TO_WORD(B2), 1) OR BOOL_TO_WORD(B2), 1) OR BOOL_TO_WORD(B0);

Дальше в конфигураторе добавить Modbus-slave и переменную 2byte. Адресу этой переменой присвоить имя выхода ФБ, описанного выше.
Ну либо так же по аналогии для типа DWORD (32 переменных). Использую подобный ФБ в задаче по контролю концевых выключателей задвижек. Если есть неточности, гуру, поправьте.
А зачем так сложно. Ведь можно гораздо проще.
применительно к Вашему варианту:
out.0:=B0;
out.1:=B1;
out.2:=B2;
.............
out.15:=B15;