S5 115u woord 32767+ probleem

Andere onderwerpen dan hierboven vermeld.

Moderator: GJ_

Plaats reactie
denhondt
Berichten: 122
Lid geworden op: 29-07-2007 14:42:44
Locatie: Sint-Niklaas België

S5 115u woord 32767+ probleem

Bericht door denhondt » 08-07-2010 22:55:52

voor een telling word er gebruik gemaakt van 2 datawoorden die samen een dubbelwoord moeten voorstellen het touchsreen kan dit weergeven als dubbelwoord.

Maar in s5 type 115 is geen dubbelwoord beschikbaar



L DW2 //datawoord 1
L AANT // telaantal
+F
T DW2

L KH FFFF // 65535
L AANT //telaantal
-F
T DUMM // DUMMY WORD

L DUMM // DUMMY WORD
L DW2
>+F
SPB M001
SPA END


M001: L DW1
L KF 1
+F
T DW1

L KF 0
T DW2


END: BE
Dit is het stukje dat voor het probleem zorgt, als ik dit verwijder dan telt de telling normaal.

Nu is het zo:

Telling telt normaal tot 65535 en telt dan 1 bij dDW1 op en zet DW2 op 0

maar dit gebeurt niet, de telling telt tot 32767 en voegt dan al 1 bij DW1 to en zet DW2 op 0

Dus hij springt van 32767 naar 65535 , ik denk dat dit komt omdat een vergelijking enkel werkt van -32768 tot +32767

Maar ik vind er maar geen oplossing voor




Volledige code van de FB


db30

u =tel
un =hul2
= =hul1

u =tel
= hul2

u hul1
spb m001

un hul1
spb m002

m001: l dag2
l aant
+f
t dag 2

l tot2
l aant
+f
t tot2

l kh ffff
l aant
-f
t dw106

l dw106
l dag2
>=f
spb m003

m005: l kh ffff
l aant
-f
t dw106

l dw106
l tot2
>=f
spb m004
spa m002

m003: l dag1
l kf1
+f
t dag 1

l kf 0
t dag 2
spa m005

m004 : l tot1
l kf1
+f
t tot 1

l kf0
t tot2

m002: un rese
spb m006
l kf0
t dag1
t dag2
m006:




NETWERK 2



u(
l dag1
l kh 3b9a
!=f
)
u(
l dag2
l kh ca00
>=f
)
o m81.1
spb m001
m004:
u (
l tot1
l kh 3ba9
!=f
)
u(
l tot2
l kh ca00
>=f
)
o m81.1
spb m002
spa m003
m001:
l kf0
t dag 1
t dag 2
spa m004
m002:
l kf 0
t tot 1
t tot 2
m003:
be

GJ_
Moderator
Berichten: 581
Lid geworden op: 19-10-2005 19:19:17
Locatie: Veldhoven
Contacteer:

Bericht door GJ_ » 09-07-2010 07:49:53

Doortellen tot de -1 dan?

Ik zou trouwens wel wat remarks in zo'n programma zetten. Dat maakt het een stuk leesbaarder.

denhondt
Berichten: 122
Lid geworden op: 29-07-2007 14:42:44
Locatie: Sint-Niklaas België

Bericht door denhondt » 09-07-2010 08:29:35

ik heb denk ik een oplossing gevonden als ik een vergelijking doe

groter dan -3 en kleinder dan -1 dan SPB m003


- 3 = 65533
-1 = 65535

ik moet het wel nog testen



wat bedoel je met remarks?

Ik heb het wel maar snel snel overgetypt .

GJ_
Moderator
Berichten: 581
Lid geworden op: 19-10-2005 19:19:17
Locatie: Veldhoven
Contacteer:

Bericht door GJ_ » 09-07-2010 09:12:46

Waarom niet een vergelijking:
!=F -1
oftewel, waarom toch perse groterdan/kleinerdan?

Met remarks bedoel ik opmerkingen. Die kunnen achter of tussen de programmaregels. Daarmee kun je zo'n programma een heel stuk leesbaarder maken.

denhondt
Berichten: 122
Lid geworden op: 29-07-2007 14:42:44
Locatie: Sint-Niklaas België

Bericht door denhondt » 09-07-2010 11:18:11

GJ_ schreef:Waarom niet een vergelijking:
!=F -1
oftewel, waarom toch perse groterdan/kleinerdan?

Met remarks bedoel ik opmerkingen. Die kunnen achter of tussen de programmaregels. Daarmee kun je zo'n programma een heel stuk leesbaarder maken.

!=F -1 waar duid de -1 op?

Groter dan/kleiner dan= het telaantal kan verschillend zijn

daarom dacht ik dat bij "gelijk aan" de waarde misschien kon worden overgeslagen.(hoge nauwkeurigheid van de telling is niet nodig)



Dus zo zou het moeten werken denk ik

L KF -1 //Komt overeen met 65535
L =AANT // Telaantal
-F
T =DUMM //Dummy woord

A(
L KF -1 // Laad 65535
L =DAG2 // Laad dagtelling woord 2
<=F
)
A(
L =DUMM //Dummy woord = 65535 - Telaantal
L =DAG2 //Dagtelling woord 2
>=F
)
SPB =M003


...........................



M003:
L =DAG1 //Laad Dagtelling woord1
L KF +1 // Laad 1
+F
T =DAG1 // Transfer dagtelling woord 1

L KF 0 // Laad 0
T =DAG2 // Zet dagtelling woord2 op 0

SPA =M005 // Sprong naar M005

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

Bericht door JoopB » 09-07-2010 16:04:32

Waarom laat je het touchscren de telling niet uitvoeren?
Je maakt een triger variabele aan die je in je PLC hoogmaakt. In je HMI vraag je deze variabele constant af, zodra deze van 0 naar 1 veranderd verhoog je je teler met een en je zet de trigger variabele weer op 0.
Als je HMI dubbelwoorden ondersteunt kun je gewoon hier ge woon 2 datawoorden aan hangen. Ik heb dit ook al zo gemaakt bij een paar 115U plc's (Nog met ProtoolPro runtime op een PC)

denhondt
Berichten: 122
Lid geworden op: 29-07-2007 14:42:44
Locatie: Sint-Niklaas België

Bericht door denhondt » 09-07-2010 23:09:42

JoopB schreef:Waarom laat je het touchscren de telling niet uitvoeren?
Je maakt een triger variabele aan die je in je PLC hoogmaakt. In je HMI vraag je deze variabele constant af, zodra deze van 0 naar 1 veranderd verhoog je je teler met een en je zet de trigger variabele weer op 0.
Als je HMI dubbelwoorden ondersteunt kun je gewoon hier ge woon 2 datawoorden aan hangen. Ik heb dit ook al zo gemaakt bij een paar 115U plc's (Nog met ProtoolPro runtime op een PC)

Er wordt op verschillende punten tegen 80 stuks per minuut geteld , geeft dit dan geen problemen, door de vertraging PLC <> HMI

GJ_
Moderator
Berichten: 581
Lid geworden op: 19-10-2005 19:19:17
Locatie: Veldhoven
Contacteer:

Bericht door GJ_ » 10-07-2010 10:45:01

Volgens mij worden de tags standaard iedere seconde bemonsterd. Dit is instelbaar, bij 80 per minuut zou je het denk ik minimaal 160 keer per minuut moeten bemonsteren, bijvoorbeeld iedere 350ms.

(hou er rekening mee dat ik de laatste jaren nauwelijks nog Siemens HMI gebruik maar voornamelijk ESA: prijs/kwaliteit, mogelijkheden ect)

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

Bericht door JoopB » 10-07-2010 12:00:36

Om met 80 impulsen per minuut te tellen weet ik niet of dit bij een S5 lukt je kunt het eens proberen, zet de trigger op een zo klein mogelijke afvraag tijd.Met 100ms kun je toch minstens 2 pulsen per sec tellen.

Hieronder een stukje code dat je in je S5 kunt zetten om met een dubbelwoord te tellen.

Code: Selecteer alles


      AUF DB3                     //DB van teller
      L     DW    3                //LW teller
      L     0
      <F    
      =    M255.0                 //LW is negatief

      L     DW    0                //teller aantal
      L     DW    3                //LW teller
      +F   
      T     DW    3                //LW teller
      UN    M255.0
      SPB   OK                     //LW was positief ->klaar
      L     DW    3
      L     0
      <F    
      SPB   OK                     //LW is nog negatief ->klaar
      L     DW    2                // HW teller
      L     1
      +F                             //HW met 1 verhogen
      T     DW    2
OK  :NOP 0
In dit voorbeeld word DW0 als teller aantal gebruikt, DW 3 is het LW van
het teller DWord DD2 .
Als voor de telling DW3 negtief is (dus > 32767) dan wordt M255.0 hooggemaakt. Als deze merker niet hoog is is de telling na het optellen klaar. Is deze hoog dan wordt er weer een vergelijking gemaakt is DW3 nog negatief is de telling klaar, als DW3 niet meer negatief an wordt DW2 met 1 verhoogt. M255.0 is een smeermerker.

denhondt
Berichten: 122
Lid geworden op: 29-07-2007 14:42:44
Locatie: Sint-Niklaas België

Bericht door denhondt » 17-07-2010 21:55:16

Wat bedoel je met Smeermerker?

Is dit hetzelfde als Dummie merker

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

Bericht door JoopB » 18-07-2010 09:49:27

Een smeermerker in een merker die je in je programma meerdere malen kunt gebruiken. Bij de S5 zijn dit in principe de merkers vanaf MB200 t/m MB255.
Als je een standaard functie bouwsteen van Siemens gebruikt die niet in je PLC vast ingebakken zit zul je ook zien dat daar merkers uit dit bereik in gebruikt worden. (die kun je alleen in je cross ref lijst zien want de FB kun je normaal niet openen)

Joop

Plaats reactie

Terug naar “Anders”