Ну хотя бы тем, что вместо чтения/записи четырёх регистров (2х32Bit) надо будет читать/писать 24 регистра. И вместо булевых функций оперировать числовыми. А суть останется та же, мониторим обратную связь выхода по регистру и по обратной связи конкретного регистра задаём новую уставку исходя из реальной на данный момент. Режим работы выходов надо будет перевести в ШИМ, и с другого мастера также писать числовые уставки и там также придётся поменять булевую логику на числовую.
В следствие чего такая простая конструкция типа: dword1.0:=(dword1.1 or dword2.2) and not(dword3.3); превращается в полноценное "трёхэтажное" условие.