Grundsätzlich sehe ich das genauso wie
@PN/DP in #3.
Es gibt ja auch Konzepte, wo eben Funktionsbausteine eine direkte Hmi Schnittstelle haben, welche abgegriffen wird.
Wir haben betriebsintern noch die Konvention eines HMI-UDTs mit fest definierten Namen in den Static-Variablen von FBs.
Der heißt immer gleich & damit ist immer klar, dass hier Daten mit dem HMI ausgetauscht werden & entsprechende Absicherungen bei Verwendung der dort enthaltenen Variablen angewendet werden müssen.
Das finde ich für klein Anlagen mit max. einem HMI noch ok.
Bei mehreren HMIs, die auf die gleiche Instanz zugreifen, kann das Debugging lustig werden.
Ansonsten gilt grundsätzlich:
Haken für hmi-zugriff der Variablen immer aus & nur bei explizit gewünschten Zugriffen diese setzen.
Das vermeidet schon die meisten Fehler, auf die DA006 des Siemens-Styleguides Bezug nimmt.
1.) Wie soll ich durch Umkopieren eine E/A-Variable korrekt mit Daten versorgen?
Beispiel: Sollwerte werden durch einen Rezept-Transfer geladen. Später soll der Bediener die Sollwerte aber überschreiben können.
Ich glaube, ich weiß worauf du hinaus willst, das Beispiel hinkt aber etwas.
Speziell Rezepte würde ich immer über separate DBs austauschen.
Das Runterschreiben der Rezeptdaten kannst du über den Synchronisierungszeitpunkt der Rezepturvariablen handeln & das manuelle ändern über einen parallelen Zugriff per HMI-Variable auf die SPS-Seite der Rezepturvariablen.
2.) Das Umkopieren der Daten (künstlich geschaffene Arbeit) entfällt.
Ich würde das nicht als künstlich geschaffenen Arbeit betiteln.
Eine sauber organisierte Schnittstelle ist beim Erstellen immer etwas mehr Aufwand als die Quick&Dirty-Variablenverdrahtung direkt ins HMI.
Gibt genug Möglichkeiten den Datenfluss klar strukturiert zu organisieren.
Bei kleineren Projekten mag das praktikabel sein direkt in die Instanz-DBs zu gehen, und ggf. tatsächlich Aufwand einsparen, aber spätestens bei mehr als einem HMI an einer SPS fällst du mit den Direktzugriffen schnell auf die Schnauze (Thema "wer hat jetzt die Wertänderung ausgelöst?").