Startseite > Forum > Controller SlimLine e Netsyst (LogicLab) > Erweiterungspakete für die digitale Eingangserfassung
- Dieses Thema hat 4 Antworten, 3 Teilnehmer und wurde zuletzt aktualisiert 9 Jahre, 3 Monate da Sergio Bertana.
-
AutorPost
-
August 8, 2012 bei 8: 58 pm #35265AnonymLeerlauf
Betrachten Sie das Hardwaredatenblatt der Module slimlineSie sehen, dass es Eingänge gibt, die als Hochgeschwindigkeit bezeichnet werden. Was ist der Unterschied zu den anderen verfügbaren Eingängen?
Wenn Sie Inpulsi-Encoder mit der Maximalfrequenz 200Hz lesen möchten, können Sie auch nicht schnelle Eingänge verwenden?
August 9, 2012 bei 6: 40 #37367Sergio BertanaAdministrator des ForumsDie Hochgeschwindigkeitseingänge werden mit sehr schnellen Optokopplern hergestellt und können Eingangssignale mit einer maximalen Frequenz von 50 kHz erfassen. Alle anderen Eingänge haben langsame Optokoppler und können Eingangssignale mit einer maximalen Frequenz von 10 kHz erfassen. Über die elektrische Geschwindigkeitsbegrenzung hinaus ist es jedoch erforderlich, die Betriebslogik des Erfassungsmoduls einzugeben, um seine Möglichkeiten und Grenzen zu verstehen.
An allen Eingängen (auch an den schnellen) ist ein 5-mS-Digitalfilter eingerichtet, der die maximale Erfassungsfrequenz auf 200 Hz begrenzt. Der Filter wurde eingesetzt, um die Rückprallsignale (Entprellen) der elektrischen Kontakte zu unterbrechen, die eine SPS erfassen muss Signale, die von elektromechanischen Wandlern ankommen und deren korrekte Erfassung gewährleisten müssen.
An den schnellen Eingängen befindet sich eine Zählschaltung, die das Signal verwendet vor dem Filter Es ermöglicht die Verwaltung eines Quadraturcodierers mit einer maximalen Frequenz, die der für den Optokoppler typischen Frequenz entspricht.
August 9, 2012 bei 6: 52 #37368Sergio BertanaAdministrator des ForumsUm Ihre Frage zu beantworten, erinnere ich Sie daran, dass der FB in der Funktionsblockbibliothek vorhanden ist IOEncoder, Inkrementalgeber über E / A (Siehe manueller Auszug). Durch Anschließen von zwei Digitaleingängen an diesen Funktionsbaustein kann ein Inkrementalgeber darauf erfasst werden.
Natürlich hängt die maximale Frequenz, die Sie verwalten können, von der Geschwindigkeit ab, mit der der Funktionsblock ausgeführt wird, vorausgesetzt, Sie verwenden die beiden Eingänge des CPU-Moduls für die Erfassung (sie haben keinen Filter), indem Sie ein einfaches Kontaktplanprogramm wie das im Handbuch erstellen Fügen Sie das Programm in die schnelle Aufgabe ein und führen Sie es alle 1 ms aus. Sie können Encoder mit einer maximalen Frequenz von 200 Hz verwalten (Siehe Anwendungshinweis).
Sie können die direkte Eingangserfassung auch über den Funktionsbaustein durchführen SysGetPhrDIHolen Sie sich einen digitalen Peripherieeingang und ordnen Sie die Eingänge dann mehreren Instanzen des Funktionsblocks zu IOEncoder Verwalten mehrerer Encoder.
Januar 11, 2015 bei 9: 45 #38634Maurizio ContiPartecipanteIch erwerbe damit eine DI-Batterie SlimLine ab folgendem Code:
FÜR i: = 0 TO 21 DO
(* FALL die OF
0..5: DIN [i]: = SysCPUDI [i];
6..21: DIN [i]: = SysDI00 [i-6];
END_CASE; *)FALL VON
0: DIN [0]: =% IX255.0;
1: DIN [1]: =% IX255.1;
...
21: DIN [21]: =% IX0.15;
END_CASE;
END_FOR;Während das unkommentierte CASE funktioniert, erhalte ich beim Komprimieren des Codes (kommentierter Code) die folgenden Fehler: SysCPUDI => Komplexe Variablen können kein Prozessabbild haben
SysDI00 => Komplexe Variablen können kein Prozessabbild habenDer Zugriff auf das SysDI00-Array-Element im Überwachungsfenster verursacht jedoch keine Probleme. Was mache ich falsch ?
Ich frage Sie auch, ob Sie die DIs über Modbus erwerben möchten. Ist es ratsam / vorzuziehen, den Read Input Status (FC = 02) zu verwenden oder sie auf eine interne Variable zu setzen und mit der Funktion Read Holding Registers (FC = 03) zu leuchten?
Januar 12, 2015 bei 1: 54 pm #38635Sergio BertanaAdministrator des ForumsDas Problem liegt in der Art und Weise, wie das E / A-Prozessabbild verwaltet wird. Weitere Informationen finden Sie unter dieses Thema. In der Praxis werden die digitalen Eingänge vom Betriebssystem in der Task "Langsam" erfasst und in die Variablen UDINT SysCPUDI und SysDIxx übertragen. Anschließend werden sie in die Variablentabelle BOOL% IXxx übertragen.
Wenn ein Programm auf eine Variable% IXxx verweist, prüft LogicLab, welche Aufgabe das Programm ausführt, und wenn es sich um die langsame Aufgabe handelt, verweist es auf die reale Variable. Wenn es sich um die Back-Aufgabe handelt, führt es eine Kopie der realen Variablen in einer Unterstützungsvariablen aus und erstellt eine weitere Bild verarbeiten.
Das Prozessabbild wird als Kopie bezeichnet. Es wird automatisch nur für% IXxx-Variablen erstellt. Die Lösung für Ihr Problem besteht darin, das Programm in der Aufgabe "Langsam" auszuführen.
In Bezug auf die Erfassung von Modbus ist sowohl der Befehl 16 # 02 Eingabestatus lesen dass 16 # 03 Lese HalteregisterSie haben ungefähr die gleiche Länge in Bytes im Antwortrahmen, so dass sie auf Rahmenebene vergleichbar sind. Dann gibt der erste natürlich ein Array von BOOL zurück, während der zweite ein oder mehrere Wörter zurückgibt, die Sie dann noch entpacken müssen, um die Werte in BOOL-Variablen zu erhalten.
-
AutorPost
- Sie müssen angemeldet sein, um auf dieses Thema antworten zu können.