Shift

De Modulaire PLC die vrijwel alles kan.

Moderator: GJ_

Plaats reactie
JImmy
Berichten: 138
Lid geworden op: 02-10-2009 14:30:42
Locatie: herzele

Shift

Bericht door JImmy » 08-10-2015 14:08:34

Wie kan volgende eens wat uitleg geven :

L 13
L "DB28_TP177A".Speed.Choise_Mo_Zone_2
>I
JCN ST_1

L 4
-I
SLW 5 // = 2^5 = 32bit.
L P#10.0
+D
T #DBW_nr

OPN "Monitoren Freq.Sturingen"
L DBW [#DBW_nr]
JU ST_3


Ik zou, als ik bv. 7 ingeef in de db28 motorkeuze, moeten uitkomen op de DBW22 (DBW nr). Werkt wel, maar ik zou de berekening eens willen volgen/begrijpen.

JoopB
Berichten: 964
Lid geworden op: 30-11-2006 20:42:15
Locatie: Weert

Re: Shift

Bericht door JoopB » 13-10-2015 11:36:42

Volgens mij ontbreek er nog wat code die voor de bovenste vergelijking staat want de uitkomst van :
L 4
-I
mag nooit negatie worden want dan krijg je na het schuiven en het bijtellen van de pointer een veel te grote waarde.
Als er in "DB28_TP177A".Speed.Choise_Mo_Zone_2 een waarde staat tussen 4 en 13 dus in jou geval b.v. 7 dan werkt het als volg:

L "DB28_TP177A".Speed.Choise_Mo_Zone_2 //7
L 4 // accu 1 =4 ,accu 2 = 7
-I //Accu 1 = 3 accu 2 = 7
SLW 5 // = *32 Accu 1 = 96 (96bit = 3 Dubbelwoorden als bit = 12 byte)
L P#10.0 //Accu 1 = 80 (80 bit = 10 byte) Accu 2 = 96
+D // Accu 1 = 176 (176bit = 22byte)
T #DBW_nr (hier staat nu het adres in als pointer = 176 bit = Adres 22.0)

Als je de inhoud van je accu's als Decimaal in je online beeld laat zien zul je de bovenstaande waardes daar in zien staan.
Als je normaal een pointer moet maken als je bv een byte of een woord of een DW wilt adresseren die je als int ingeeft bv 20 dan reken je de INT om naar een pointer met SLW3 of met L 8 en *I of *D de vaiabele voor de Pointer moet altijd een DWord zijn.

Ik hoop dat je deze uitleg een beetje begrijp.

Groeten Joop.

JImmy
Berichten: 138
Lid geworden op: 02-10-2009 14:30:42
Locatie: herzele

Re: Shift

Bericht door JImmy » 13-10-2015 17:40:40

Jawel Joop, bedankt.

Inderdaad boven de geplaatste code staat er nog een vergelijking (ingave kan nooit kleiner zijn dan 5).

Plaats reactie

Terug naar “S7-300”