vicara schrieb:
> xEnable wird nur einmal auf True ..
..in dem Quellcode gesetzt, den du nicht gepostet hast.
Wenn xEnable an einer Stelle im Programm gesetzt wird bedeutet nicht
zwangsweise, dass es nur einmal gesetzt wird. SPS arbeitet zyklisch, die
Variable wird in jedem Zyklus gesetzt, in dem die Zuweisung abgearbeitet
wird. So wie ich das sehe, wird xEnable an zwei Stellen auf FALSE
gesetzt: im IF und im ELSIF Block.
Mach dir ein Zeitdiagramm mit allen beteiligten Signalen Ablauf. Damit
sollte ersichtlich sein, wann und für wie lange xEnable auf TRUE gesetzt
wird und wann die beiden geposteten Bedingungen zum Zurücksetzen von
xEnable erfüllt sind
SDOWrite.CONFIRM
und
SDOWrite.ERROR <> CiA405.CANOPEN_KERNEL_ERROR.CANOPEN_KERNEL_NO_ERROR
Wenn in der Zeitspanne in der xEnable auf TRUE gesetzt wird eine der
Bedingungen auch nur für einen SPS Zyklus erfüllt ist, dann geht xEnable
kurz auf FALSE. Der SDOWrite erkennt mehrere Triggerflanken auf Enable
und sendet die Daten mehrfach.
Eigentlich wäre das eine Frage für sps-forum.de
Gruß