Hallo schreatza,
ich bin zwar auch nicht so fit in ST, aber mir ist was aufgefallen - und hoffe, es hat was mit Deinem Problem zu tun:
Du übergibst Deinem UF vier digitale Informationen (I1-4) und erwartest eine digitale Information zurück (Q1).
Im UF schreibst Du hinter Deinem Returnbefehl als Kommentar, dass Du die Werte von M2 und M3 zurückgibst.
Wohin gibst Du sie denn? Meines Wissens sind alle M, MB, MW, die in einem UF genutzt werden lokale Variablen und für das den UF aufrufende Programm nicht sichtbar. Die globalen M2 und M3 können also völlig andere Zustände haben.
Meines Erachtens musst Du Deinem UF noch so viele digitale Ausgänge spendieren, wie Du Informationen von ihm haben möchtest. Ggf. könnte man die Zustände von einigen der lokalen Merkern als Bitfolge in ein MB oder MW bündeln und entsprechend aus dem UF ins aufrufende Programm geben (und dann wieder extrahieren). Aber wenn es nur ein paar Zustände sind, dann geht das sicher einfacher mit eigenen UF-Ausgängen.
Wie gesagt - ich kenne mich in ST nicht aus, aber wenn ich die Abarbeitung in anderen Darstellungsarten (FUP, KOP) vergleiche, dann könnte das vielleicht die Ursache für Deine Fragestellung sein...
Viele Grüße,
Wolfgang