# TwidoSuite



## shakesbier (21 Oktober 2010)

Hallo zusammen,

ich bin gerade daran über TwidoSuite eine Steuerung zu programmieren und komm einfach nicht voran:
Hat villeicht jemand ein Beispielprogramm das man sich ansehn könnte ( bevorzugte Programmiersprache KOP)?
Eines meiner Probleme liegt darin, dass ich nichteinmal einer Float-Variable einen Wert von 0.5 zuweisen kann. Wär cool, wenn mir jemand helfen könnte. 

Shakesbier


----------



## PID (21 Oktober 2010)

Ich kenne nur die alte TwidoSoft.
Da mußte man einen Block einfügen, in diesen einen Doppelklick und die Zuweisung eingeben.
z.B.

```
%MF1620 := %MF1600 * 10000.0
```


----------



## shakesbier (21 Oktober 2010)

ja, das ist schon ziemlich das was ich machen will, aber ich muss leider eine kompliziertere rechnung durchführen in der art von:

%MF0:= COS(%MF2)*SIN(%MF100)/20.0

und das lässt das programm mich nicht machen.
wenn ich jede aufgabe einzeln auf bausteine verteil kann ich es zwar auf die Steuerung laden, aber in den Variablen wird steht dann nur "#QNAN".... weisst du vllt. wie ich das umghen kann?


----------



## PID (21 Oktober 2010)

Das Problem hatte ich damals auch, ich glaube es geht nur eine Operation pro Zeile.
Ich habe mir ein paar Variablen angelegt die nur temporär zum berechen  benutzt werden.

```
%MF200:=COS(%MF2)
%MF201:=SIN(%MF100)
%MF202:=%MF200*%MF201
%MF0   :=%MF202/20.0
```


----------



## shakesbier (22 Oktober 2010)

hab ich mir leider schon fast gedacht...  das wird ein ein größeres Programm ... naja....
aber ich hätte da noch ein paar Fragen:
Ich will ein Programm schreiben, welches dann wie im C-Stil zwei Funktionen aufruft, in denen diese Berechnungen dann durchgeführt werden. Hast du sowas schonmal gemacht? Wie ruf ich denn eine Funktion ( oder wie bei Siemens auch ein Funktionsblock) auf?
Außerdem muss in dieser Funktion eine schleife laufen: Ich hätte die jetzt einfach mit einem Zähler realisiert, die dann aus der Funktion springt, wenn die gewünschte Anzahl an durchläufen vollbracht ist. Oder kennst du einen besseren Weg eine WHILE-Schleife zu realisieren?
hast du vllt. irgendwo ein Programm das ich mir als beispielprogramm mal ansehn kann.... KOP ist eigentlich nicht soooo meine Welt, aber Twido hat leider nur KOP und AWL. Das Problem ist eben auch, das ich von Schneider da nirgends ein Beispielprogramm oder so finde.

Vielen Dank schonmal.... hilft mir echt grade, dass mir da jemand helfen kann.


----------



## shakesbier (22 Oktober 2010)

jetzt hab ich noch eine Frage:

kannst du mir erklären warum es nicht möglich ist zu schreiben


```
%MF0:=0.5
%MF1:=0.5
```

wenn ich das mach bringt er mir immer dieses #QNAN, aber wenn ich nicht %MF1 sondern %MF2 nehme, funktioniert es ( auch weiterhin muss ich zwischen jeder Float, der ich einen wert zuweise einen Speicherplatz auf den nächsten frei lassen, damit dieser Wert übernommen wird)?


----------



## PID (22 Oktober 2010)

War mein Fehler, hatte ich vergessen
(hab nur vor vier Jahren für einen Kunden einmal eine Twido geändert, sonst nie mehr mas damit gemacht)

Bei MF überschneiden sich die Speicherbereiche, due must immer jede zweite nehmen, also %MF0, %MF2...oder %MF1,%MF3...

Siehe Tiwdo Handbuch Software :


> Die Wörter einfacher, doppelter und gleitender Länge werden im Innern des
> Datenraumes in der selben Speicherzone eingeordnet. So entsprechen das
> Gleitkommawort %MFi und das Doppelwort %MDi den Wörtern einfacher Länge
> %MWi und %MWi+1 (das Wort %MWi schließt die niederwertigen Bytes und das
> Wort %MWi+1 die höherwertigen Bytes des Wortes %MFi ein)


----------



## shakesbier (22 Oktober 2010)

ahhhhhhhh.... glaub ich hab 2stunden lang alles versucht... danke dir

wo hast du dieses handbuch gefunden? das einzige was ich hab ist auf englisch und ich hab fast das komplette netz abgesucht.
und nochmal die frage: hast du irgendwo eine Quello wo ich ein beispielprogramm herbekommen könnte?


----------



## Verpolt (22 Oktober 2010)

Hier


http://www.global-download.schneider-electric.com/85257578007E5C8A/all/0A594AE7667A6682882575780048EBE6/$File/35013825k02000.pf

und hier

http://www.global-download.schneider-electric.com/85257578007E5C8A/all/51E5D122EC3E73C588257577001FA424/$File/35013226k01000.pdf

von hier http://www.sps-forum.de/showthread.php?t=36089    #7


LG


----------



## shakesbier (27 Oktober 2010)

weiss jemand zufällig, ob man auf dieser TWIDO Variablen vom Datentyp  "String" oder "Array" oder "Char" definieren kann? Sieht nicht so aus,  oder täusch ich mich da?


----------



## Verpolt (27 Oktober 2010)

Hallo,

anbei mal der Befehlsvorrat



Grüße


----------



## vierlagig (27 Oktober 2010)

Verpolt schrieb:


> Hallo,
> 
> anbei mal der Befehlsvorrat
> 
> ...



naja, das programmierhandbuch wäre an der stelle aussagekräftiger gewesen.
soweit ich das jetzt überblicken konnte unterstützt die kiste keine strings und chars. LKUP arbeitet mit einer abart eines arrays ... aber ob man das wie man es wie gewohnt einsetzen kann möchte ich an dieser stelle bezweifeln


----------



## shakesbier (27 Oktober 2010)

vierlagig schrieb:


> soweit ich das jetzt überblicken konnte unterstützt die kiste keine strings und chars.



des hätte ich nämlich auch so gesehn, war mir aber nicht sicher, ob das überhaupt sinn macht, eine steuerung so auszustatten, dass sie keine Strings oder ARRAY´s verwenden kann, besonders daher, da diese Steuerung auch mit Bedienpanels kommuniziert, aber dann werden da wohl keine Strings verarbeitet....


----------



## shakesbier (28 Oktober 2010)

weiss eigentlich einer von euch, nach welchem Standard die Twido programmiert werden kann? ist das die IEC 61131?


----------



## shakesbier (29 Oktober 2010)

ich hab noch eine Frage: was für CANopen-Devices kann man eigentlich an die Steuerung anschließen? Ich find da eben nur diejenigen, welche in der Datenbank schon vorhanden sind, aber wie schaff ich das, dass ich ein Gerät anhängen kann, welches nicht in der Datei enthalten ist?


----------



## Verpolt (29 Oktober 2010)

Hallo,

Normalerweise werden die mit einem EDS-file eingebunden.


----------



## shakesbier (29 Oktober 2010)

o.k.. des hat geklappt, jetzt stellt sich mir die nächste Frage:

es wird mir gesagt, ich soll den Slaves ihre PDO zuweisen...
was heißt das für mich?


----------



## shakesbier (5 November 2010)

hallo.. ich bins mal wieder...

meine frage diesesmal ist: 
hat jemand hier schonmal einen PWM-Ausgang an einer Twido oder einen PID-Regler laufen lassen? weiss jemand, wie das geht?


Grüße


----------



## shakesbier (12 November 2010)

hallo liebe leute....

hab da mal wieder ne frage zu TwidoSuite:

was bedeutet diese Anweisung:

%MW2[%MW3]:=%KW4[%MW5]


kann mir da jemand weiter helfen?

Danke schonmal


----------



## PID (13 November 2010)

Das ist eine indirekte Adressierung.


```
%MW2[%MW3]:=%KW4[%MW5]
```
Wenn in MW3 z.b. eine 17 steht und in MW5 eine 3
so ensteht folgender "Zwischencode"
Aber Achtung anders wie z.B. Siemens wird die Startadresse mitaddiert


```
%MW2[17]:=%KW4[3]
```


```
%MW(2+17):=%KW(4+3)
```


```
%MW19:=%KW7
```





> Eine indexierte Adresse eines Objekts bietet eine Methode zum Ändern der Adresse
> eines Objekts, indem ein Index zur direkten Adresse eines Objekts hinzugefügt wird.
> Der Inhalt des Index wird zur direkten Adresse des Objekts hinzugefügt. Der Index
> wird durch ein internes Wort %Mwi definiert. Die Anzahl der "Indexwörter" ist
> ...


----------



## shakesbier (13 November 2010)

o.k.. ein bißchen kompliziert 

und kannst du mir vllt. auch sagen, ob ich auch array´s deklarieren?
ich brauch z.B ein Array mit 400 DWORD Zahlen? und wie kann ich an die fünfte stelle des array´s einen neuen Wert schreiben?
ich kenn halt nur das beipsiel in ST bei Siemens oder CoDeSys:

in der variablen-deklaration:
VAR
zahlen:                  ARRAY [0..400] OF DWORD
END_VAR

im Programm:

zahlen[5]:=7;

jetzt weiss ich aber nicht, wie ich das in dieser Programmiersprache machen soll


----------



## PID (14 November 2010)

Steht doch alles in der Software-Referenz drin, hast du die noch nicht geladen ?

Du hast ja maximal 3000 %MW also must du einen Bereich reservieren
z.B. legst du dein "Array" auf die Startadresse 2000


```
%MW10:=5  // Adresse im Array
%MW11:=%MW2000[%MW10] // Wert aus dem Array 
// Direktzugriff
%MW11:=%MW2000[5]
```

Also ich bin mir nicht sicher ob du da die richtige SPS genommen hast. Die Twido ist eine Kleinstsps, ähnlich einer S7-200 mit besseren und auch schlechteren Funktionen. Aber nicht mit einer S7-300 oder Beckhoff zu vergleichen.


----------



## PID (14 November 2010)

*Hinweis*

Du willst ja ein Dopplelwort bearbeiten, dann mußt du wie von mir schon vorher beschrieben die Speicherverwaltung beachten, ein Doppelwort wird in zwei Merkerwörtern abgelegt, die Adresse ist aber die des merkerwortes.
Beim indexierten Zugriff musst du immer zwei Stellen weiterspringen.


```
%MW10:=3  // Adresse im Array 3.Stelle (2*3)
%MW10:=%MW10*2
%MF12:=%MF2000[%MW10] // Wert aus dem Array 
// Direktzugriff
%MF12:=%MF2000[6]
```


----------

