Automatische Adressierung

Zuviel Werbung?
-> Hier kostenlos registrieren
Cool, dass das gerade hier diskutiert wird. Ich habe gerade auch so gemacht.
Code:
Var_Global
     b_out           AT %Q* : BOOL;        
end_var
Allerdings meckert der Compiler:

Code:
Warnung 1990: Kein VAR_CONFIG für 'b_out'
In einem anderen Projekt wurde die Liste als ein readonly-file (TwinCat_Configuration (VAR_CONFIG) <R>) erzeugt
Bsp:
Code:
Var_Config
       .Ix_B_AbsaugungOK AT %IX126.4 : BOOL;
end_var
Welche Einstellung muss ich n da noch vornehmen? Ich habe beide Projekte miteinander verglichen, aber konnte nix feststellen.
Das ist nur eine Warnung. Wenn das .tpy-File erstmalig im System Manager eingebunden und die Konfiguration aktiviert wurde, findest du danach automatisch die VAR_CONFIG im PLC-Projekt. Das macht TwinCAT von sich aus.
Ist ja logisch, da er ohne die Verknüpfungen keine Zuordnung im Prozessabbild (mit Adressierungen) erstellen kann.
 
Habe das gleiche Problem. Finde einfach nicht heraus welche nummer ich für die ein und ausgänge verwenden muss. (%IX???.1 und %QX???.1) wo finde ich die Lösung für dieses Problem?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Habe das gleiche Problem. Finde einfach nicht heraus welche nummer ich für die ein und ausgänge verwenden muss. (%IX???.1 und %QX???.1) wo finde ich die Lösung für dieses Problem?

Willst du unbedingt spezielle Adressen?? Ansonsten empfehle ich dir wie oben bereits gezeigt %I* bzw. %Q* zu verwenden. Dann wird die Adressvergabe intern geregelt.
 
Wie sieht den der "Beckhoff'sche Königsweg" aus um eine große Anzahl IOs von der PLC aus zu adressieren? Hab nämlich ein ähnlich gelagertes Problem wie der Threadstarter: Es gilt eine sehr große Anzahl IOs (Größenordung mehrere hundert) anzusteuern. Direkt adresseiren kann ich die also offenbar nicht. Mehrere hundert IOs per Hand im System-Manager zu Verknüpfen ist ein "tödlicher" Aufwand, mal ganz abgesehen von der schlechten Fehlerqoute die man bei solchen manuellen Arbeiten hat.

Jemand hat hier bereits auf Multiverknüpfungen hingewiesen. Das würde insoweit helfen, dass die IOs auf den Klemmen direkt hintereinander liegen und ich zumindest recht große Blöcke verknüpfen könnte. Problem bei der Sache ist: Multiverknüpfungen werden mir nur bei der Mehrfachauswahl von BOOL Variablen angeboten. Bei einem ARRAY OF BOOL sehe ich im linken Fensters des System Managers zwar in der Baumansicht alle Arrayelemente als BOOL-Werte, aber im rechten Fenster in dem man ja die Multiverknüpfung macht, kann ich nur noch das Array an sich und nicht mehr die Elemente sehen.
Weiteres Problem mit dem ARRAY OF BOOL ist, dass, soweit ich verstanden hab, die Elemente intern als Bytes gespeichert werden und somit eine Arraydeklaration wie die folgende

VAR_GLOBAL
i AT %I*: ARRAY [0..1023] OF BOOL;
END_VAR

VAR_CONFIG
.i AT %IB0 : ARRAY [0..1023] OF BOOL;
END_VAR

gleich mal 8kB statt 1kB Speicher verbraucht. Deshalb also: Wie sieht den der "Beckhoff'sche Königsweg" aus um eine große Anzahl IOs von der PLC aus zu adressieren?
 
Zuletzt bearbeitet:
Fakt bleibt: Bei Twincat musst du verknüpfen, direkt adressieren geht nicht, da das Programm hardwareneutral ist.

...

Da fällt mir ein, du kannst bei EtherCAt auch über einen Umweg absolut adressieren. Es gibt die Ethercat-Adresse für jeden Slave. Die kannst du im Programm mit entsprechenden Bibliotheken direkt ansprechen. Inwieweit das auch für Prozessdaten gilt, kann ich leider nicht sagen. Hab's noch nicht ausprobiert.

Ich habe mal ein Programm geschrieben für eine "beliebige" Anzahl von SoftMotion EtherCat Antrieben (Lenze 9400 State/High Line). Das Ganze wurde über Pointer gelöst.

Vorraussetzung ist, dass das Mapping aller Antriebe im Prinzip gleich sein muss, d.h. gleich grosser Speicherbereich im Konfigurator und gleiche Bedeutung der gemappten Parameter.

Hinweis: Lenze verwendet den ACONTIS EtherCAT Stack, der etwas anders (effektiver) mappt als Beckhoff, aber es müsste auch da gehen.

ggf PN an mich.
 
Zurück
Oben