Позвольте внести свои 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 переменных). Использую подобный ФБ в задаче по контролю концевых выключателей задвижек. Если есть неточности, гуру, поправьте.