You could try using the attached modified version of the MessageListByBit control.
It allows to read 1, 2, 3 or 4 consecutive 16-bit registers for the total of up to 16, 32, 48 or 63 bits and messages respectively (bit count starts at 0 and bit 63 is not observed).
It also allows to read consecutive boolean values (any number from 1 to 63 as set in the new property BoolNumberOfElements).
You need to make sure to set messages for all the bits you will be using or the "UNDEFINED MESSAGE for Bit xx" will show.
You also need to make sure that your messages are not subset of each other, like: "Motor 1" and "Motor 11" which should be changed to "Motor 1 is ON" and "Motor 11 is ON" (this is important so the messages can be cleared properly).
A new property KeepMessageHistory determines if the messages are cleared or not.
It is set to False by default, in which case the messages will be cleared as follows:
Received Value of 0 will clear all messages, otherwise each bit that changed from 1 to 0 will clear its own message (including "UNDEFINED").
PLCAddressValues property is set to accept an address without modifiers only (ex. 40001 or 00001).
PLCElementBitWidth property has 5 options: BooleanWidth, Integer_16bit, Integer_32bit, Integer_48bit and Integer_64bit
PLCNumberOfElements property was changed to read-only and is set by the PLCElementBitWidth property
If the PLCElementBitWidth property is set to BooleanWidth then the new property BoolNumberOfElements will need to be set with the correct number of elements to be used.
There might be bugs.