Wenn du wirklich sicherere "Blackboxen" verkaufen willst - sprich die selbe Software in immer identischen Rackaufbauten und du nicht willst daß mit einem AG-Abzug die Station von jedem Azubi nachgebaut werden kann -> darauf läuft es ja hinaus denke ich, dann gibt es folgende Möglichkeit:
Du koppelst (verdongelst) dein Programm an die Hardware, sprich du baust in deinen Code je einen Soll-/Ist Vergleich zwischen CPU Seriennummer und MMC Seriennummer ein (ab FW 2.6 möglich).
Das einzige was du dann noch machen musst ist vor Auslieferung der CPU schnell die Nummern anpassen.
Da du ja mit deinem Ansinnen sowieso nicht vorhast den Quellcode mitzuliefern bist du damit genau richtig!
Der Kunde kann dann Signalmodule bei defekt selber tauschen aber wenn die CPU was haben sollte (was ja sehr selten vorkommt) muss er dich anfragen - das willst du doch, oder?
Ist meines erachtens sogar eine legitime Vorgehensweise wenn deine Mitbewerber des selben Produkts/Anwendungfalls z.B. Microcontroller einsetzen (womöglich mit eigener Hardware) die den Kunden genauso an sich binden da es ja auch keine Wald-und-Wiesen-S7 ist.
Somit hast du die Möglichkeit mit S7-Standardkomponenten in diesem Markt mitzumischen (wo es ja nie anders war)...
Es kommt also immer auf den einzelnen Fall an.
Natürlich solltest du deinen Kunden im Vorfeld darüber informieren - nicht dass er anschließend beleidigt ist doch keinen Dummen gefunden zu haben
(...der ihm eine Musteranlage gebaut hat um sie dann selbst beliebig oft zu kopieren)
Wie gesagt, wenn das vertraglich so vereinbart ist sehe ich da kein Problem.