tillmanott
Level-1
- Beiträge
- 7
- Reaktionspunkte
- 0
-> Hier kostenlos registrieren
Hallo,
Ich versuche gerade mich ein wenig in die C-Programmierung in WinCC (Version 7.0.3, ausschließlich mit internen Variablen) einzuarbeiten. Leider klappt das, was ich mir vorgestellt habe, nicht im Ansatz und ich habe mittlerweile keine Ahnung mehr, wo mein(e) Fehler stecken könnte. Vielleicht kann mir hier ja jemand weiterhelfen
Mein Plan:

Ich möchte, dass sich der Kran in Abhängigkeit zu zwei Variablen bewegt. Die Bewegung der Laufkatze in X-Richtung funktioniert problemlos, allerdings währe es ja schön, wenn der Haken der Katze mit dem im Bild zu sehenden Versatz folgt. Benutze ich für den Haken die selbe Variable wie für die Katze, würde dieser sich nicht an der richtigen Position befinden, sondern unmittelbar unter dem Glas, an der linken Kante. Dieses Problem möchte ich gerne durch eine, in ANSI-C geschriebene Aktion lösen. der Code, den ich dafür geschrieben habe, sieht folgendermaßen aus:
Es soll der aktuelle X-Wert abgefragt und anschließend mit 50 addiert werden. Dann soll der Wert in eine neue Variable gespeichert werden, die im Anschluss für die Animation des Hakens genutzt werden kann. Also alles eigentlich ganz einfach, klappt aber nicht... :|
Die Aktion wird zyklisch im 250ms-Takt aufgerufen. An der Variable, die beschreiben werden soll, ändert sich nichts.
Muss der Code als globale oder lokale Aktion angelegt werden? (Ich habe beides probiert, allerdings hat das Programm wohl noch zusätzliche Fehler, weshalb keine der Möglichkeiten funktionierte)
Muss im auskommentierten Teil (Cross Reference) ein #define stehen oder ist dieser Teil optional?
Das Projekt dient nur zum einarbeiten in die Software, ein Workaround, wie das Problem auf eine andere Art und Weise gelöst werden könnte hilft mir deshalb nicht weiter.
Gruß
Tillman
Edit:
Lösung: Nach einem Neustart von WinCC funktioniert alles problemlos... Danke Siemens :?
Ich versuche gerade mich ein wenig in die C-Programmierung in WinCC (Version 7.0.3, ausschließlich mit internen Variablen) einzuarbeiten. Leider klappt das, was ich mir vorgestellt habe, nicht im Ansatz und ich habe mittlerweile keine Ahnung mehr, wo mein(e) Fehler stecken könnte. Vielleicht kann mir hier ja jemand weiterhelfen

Mein Plan:

Ich möchte, dass sich der Kran in Abhängigkeit zu zwei Variablen bewegt. Die Bewegung der Laufkatze in X-Richtung funktioniert problemlos, allerdings währe es ja schön, wenn der Haken der Katze mit dem im Bild zu sehenden Versatz folgt. Benutze ich für den Haken die selbe Variable wie für die Katze, würde dieser sich nicht an der richtigen Position befinden, sondern unmittelbar unter dem Glas, an der linken Kante. Dieses Problem möchte ich gerne durch eine, in ANSI-C geschriebene Aktion lösen. der Code, den ich dafür geschrieben habe, sieht folgendermaßen aus:
Code:
#include "apdefap.h"
int gscAction( void )
{
// WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction "DMTagName"
// next TagID : 1
// WINCC:TAGNAME_SECTION_END
// WINCC:PICNAME_SECTION_START
// syntax: #define PicNameInAction "PictureName"
// next PicID : 1
// WINCC:PICNAME_SECTION_END
WORD alt;
WORD neu;
BOOL a;
alt=GetTagWord("KranpositionX_1"); //Return-Type: WORD
neu=alt+60;
a=SetTagWord("HakenpositionX_1",neu); //Return-Type: BOOL
return 0;
}
Es soll der aktuelle X-Wert abgefragt und anschließend mit 50 addiert werden. Dann soll der Wert in eine neue Variable gespeichert werden, die im Anschluss für die Animation des Hakens genutzt werden kann. Also alles eigentlich ganz einfach, klappt aber nicht... :|
Die Aktion wird zyklisch im 250ms-Takt aufgerufen. An der Variable, die beschreiben werden soll, ändert sich nichts.
Muss der Code als globale oder lokale Aktion angelegt werden? (Ich habe beides probiert, allerdings hat das Programm wohl noch zusätzliche Fehler, weshalb keine der Möglichkeiten funktionierte)
Muss im auskommentierten Teil (Cross Reference) ein #define stehen oder ist dieser Teil optional?
Das Projekt dient nur zum einarbeiten in die Software, ein Workaround, wie das Problem auf eine andere Art und Weise gelöst werden könnte hilft mir deshalb nicht weiter.
Gruß
Tillman
Edit:
Lösung: Nach einem Neustart von WinCC funktioniert alles problemlos... Danke Siemens :?
Zuletzt bearbeitet: