Besonderheiten der Parametrierung

Bei der Parametrierung sind einige Besonderheiten zu beachten:

Arrays

Mehrere Datenpunkte können über eine gemeinsame Peripherieadresse verfügen. Die einzelnen Elemente werden dabei über einen Subindex unterschieden. Die Subindizes müssen dabei nicht kontinuierlich sein. Beispielsweise kann ein Datenwort als ein Array von 16 Bit aufgefasst werden. Die Peripherieadresse kodiert dann die Hardwareadresse dieses Datenwortes und der Subindex bezeichnet die Position der Bits innerhalb des Wortes. Es ist aber zu beachten, dass beim Treiber für alle Elemente eines Arrays die gleiche Umrechnung angegeben werden muss.

bitstring

Bits können nicht einzeln geschrieben oder gelesen werden, da der Zugriff auf den SPS-Speicher nur wortweise oder byteweise erfolgen kann. Anstelle eines einzelnen Bits werden daher immer alle zu einer Peripherieadresse gehörigen gelesen bzw. geschrieben. Für die Parametrierung bedeutet dies, dass ein solcher Datenpunkt nicht als Ausgang mit Einzelanmeldung parametriert werden kann.

Spontanes Senden der SPS

Der Treiber unterstützt spontanes Senden der SPS, das heißt er erhält die Daten, nicht auf einen FETCH-Befehl des Treibers hin sondern in einem spontanen SEND-Befehl der SPS. Die Zieladresse in diesem Telegramm ist dabei frei wählbar. Da aber der Treiber nur anhand dieser Adresse den Datenpunkt identifizieren kann, sollte in dem Adressfeld des Telegramms die Quelladresse der Daten stehen. Um anhand der Hardwareadresse den zugehörigen Datenpunkt identifizieren zu können, muss dieser die entsprechende Peripherieadresse und den Subindex '0' aufweisen.

Pollen der SPS

Eingänge können auch periodisch ausgelesen werden. Dabei ist zu beachten, dass eine Kommunikation über eine serielle Schnittstelle recht langsam ist. Eine Baudrate von 9600 Baud bedeutet zum Beispiel eine Datenübertragungsrate von < 1 kByte. Die verfügbare Nutzdatenübertragungsrate ist noch geringer. Daher sollten die Pollingzeiten nicht zu kurz gewählt werden. Um einen Überlauf interner Puffer zu vermeiden, führt der Treiber ein Polling eines Datenpunktes nur dann aus, wenn kein identischer Auftrag ansteht. Dies bedeutet, dass auch bei einer Pollingzeit von 0.1 Sekunden ein Datenpunkt nicht notwendigerweise 10 mal die Sekunde gepollt wird. Einzelabfragen dagegen werden immer ausgeführt, unabhängig davon, ob bereits eine weitere identische Abfrage ansteht.