Лично я всегда думал, что изобилие в коде приведений к типу - есть признак не совсем корректного использования возможностей языка...
Нет сомнений в том, что это работает, однако же не исключено, что смена дизайна позволит существенно упростить какие-то вещи.
Мне сложно предложить что-то конкретное, т.к. я не вижу картину целиком, но мне точно не очень нравится видеть такое
Код
*(u32*)(MB_Addr_BB_Coils + NumberOfFlag*4) = 1;
Ну точно же можно заставить компилятор всё это сделать автоматически. Например, если у вас в массиве структуры с полем флаг, то почему бы не писать
Код
MB_Coils[номер структуры].флаг = 1;
строкой выше вычислить номер структуры, если требуется получить её из общего номера флага, например..
Это всего-лишь догадка, т.к. я пока не совсем понял, что конкретно должен сделать Ваш код. Просто идея в том, чтобы использовать возможности языка, а не просто манипулировать указателями, на всю катушку пользуясь тем, что язык и это позволяет.
Как-то так, в общем ))
P.S. Очень жаль, что не удастся следить за дискуссией дальше

Ближайшие пару дней буду трястись в поезде....
The truth is out there...