Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Servus Vokal12,
Wenn die Strukturen gleich sind ist es am einfachsten du kopierst einfach die komplette Struktur, nach der Art:
DB2.Struct:= DB1.Struct;
Auf dynamische ARRAYS kann man finde ich noch einigermaßen gut verzichten, was aber richtig schlecht ist, wenn man das selbe ARRAY
in verschiedenen Bausteinen verwenden möchte und dann in jedem Baustein seine Konstanten anpassen muß. Sowas will ich an einer Stelle
in meinem Programm machen...
Das Beispiel sollte Dir ja nur verdeutlichen wie man digitale Signale Abfragen kann und so nach INT kommen kann. Wie du diese Abfrage später gestaltest ist absolut Dir überlassen.
Denke bevor du dann wirklich mit programmieren loslegst, ist es notwendig das Du Dir noch einige Basics aneignest...
Ein Digitaler Eingang wird automatisch als BOOL deklariert. So könnte dann eine Umwandlung aussehen.
IF #Eingang_1 AND #Eingang_2 THEN
#Meine_Integer_Var:= 1;
ELSIF #Eingang_1 THEN
#Meine_Integer_Var:= 2;
ELSE
#Meine_Integer_Var:= 0;
END_IF;
Du solltest Dir auch überlegen wie Du mit Fehleingaben umgehen möchtest. Folgende Fehleingaben fallen mir so auf die schnelle ein.
2 oder mehr Steine werden in einem Zyklus gleichzeitig eingeworfen. Mehrere falsche Steine werden hintereinander eingeworfen.
Folgende Lösungsansätze sehe ich dazu...
Zuerst einmal musst Du dir über die Funktionen deiner Ein- und Ausgänge Gedanken machen, also wie genau soll das ganze funktionieren. Eine Smboltabelle wäre ein guter Anfang. Ansonsten hilft es ungemein wenn du dir so ein 4Gewinnt Spiel
besorgst und einfach mal so ein Spiel Schritt für Schritt...
4Gewinnt, kam mir bekannt vor, da hattest du kürzlich schon einen Thread offen. Ronin hat da ja schon einige gedanken Anstöße geliefert. Das ganze ist möglich auch eine sehr interessante Aufgabe, aber gewiss nicht so das man das geschwind runter programmiert. Haste schon ne genauere...
Versteh ehrlich gesagt noch nicht wirklich was du machen möchtest, vor allem was du mit Diagonale auswerten meinst.
Wenn du nicht weißt wie man ein 2 Dimensionales Array deklariert das geht so:
VAR
ab2D : ARRAY[1..4, 1..4] OF BOOL;
END_VAR
// Array Einträge kannst du so beschreiben, über den...
Da musste denke ich schon mehr input liefern sonst weiß hier vermutlich niemand was du gerne machen möchtest. Aber wie gesagt bissel basics haste ja jetzt schon bekommen, wie wärs wenn de einfach mal loslegst und wir dann deinen Code optimieren. Zweidimensionale Arrays, da könnte eine...
Immer bissel blöd wenn man zuhause ist und nicht mal geschwind reinschauen kann. In TIA hab ich das erst kürzlich gemacht. Dachte das handling in WinCCFlexible 2008 müsste da gleich sein. Kannste nicht da wo die Variablen deklariert sind, also in der allgemeinen Variablentabelle in der Zeile wo...
SEL wählt einen von zwei Eingangswerten aus, wenn du auf Bit Ebene runter gehst wirst du es vermutlich verstehen. Wenn G=0 ist wird IN0 übergeben , wenn G=1, wird IN1 übergeben. Die Abfrage auf die 240 rührt von den 4 höchstwertigsten Bits in einem Byte. Wenn die Schleife 5 mal durchlaufen ist...
Wenn du die internen Variablen in der Variablentabelle von WinCC Flexible an die entsprechenden Hardwareadressen von deienm GLOBAL DB bindest müsste es das doch gewesen sein. Oder verstehe ich das falsch?
Hallo bkizilkaya,
das ist doch toll, der Ansatz passt. Der Zähler ist in diesem Fall ja nix anderes als eine INT Variable die in der FOR Schleife 0..7 die Bitposition von deinem ARRAY wiederspiegelt. Also die INT Variable wird der Index für Dein ARRAY.
Den Ausgang und Zähler setzt du bevor du...
Da gibts einen Haken in WinCCFlexible den man zumindest beim SmartClient Zugriff gesetzt haben muss (Sonst kein Zugriff möglich). Bin mir jetzt nicht 100% sicher ob man diesen Hacken nur beim Smart Client Zugriff gesetzt haben muss oder ob sich das generell auf den VNC Zugriff bezieht. Einfach...