Machtsverheffen of sin & cos in codesys

High met Henk

Special Member

zoals in het topic staat:

ik wil een wijzer laten bewegen en moet alle rekenwerk in de PLC stoppen.
in de HMI kan ik X Y coordinaten opgeven.

Heb 3 opties:
lookup tabel maken (hoop werk!)
heb een wiskundige formule voor X en Y gemaakt die prima werkt, maar met machten
of gewoon de sinus en cosinus berekenen om de X en Y waarden te krijgen.

optie 1 lukt wel, maar liever niet
optie 2 of 3 is veel mooier, maar ik kom in codesys niet verder dan optellen, aftrekken, vermenigvuldigen en delen.

Worteltrekken of machtsverheffen in een rare macht (1.5 ofzo) kan ik niet vinden!

Is er iemand die me beetje onderweg kan helpen met een library?

E = MC^2, dus de magnetische compatibiliteit doet kwadratisch mee???
High met Henk

Special Member

EDIT:
laat maar heb een Functieblock die gewoon een curve kan integreren!
moet dat nog wel aan de praat krijgen, maar moet goed gaan komen!

E = MC^2, dus de magnetische compatibiliteit doet kwadratisch mee???

Je hebt nog een 4-de optie: Een benaderingsfunctie gebruiken.

Ik heb zoiets ook eens nodig gehad in een S7-200, ik had geen ARCSIN functie. De benaderingsfunctie was redelijk simpel te maken en voor mijn doel nauwkeurig genoeg.

Benaderingsfuncties zijn op het internet genoeg te vinden. En de cos kun je afleiden van de sin.

Wel gek dat het in codesys niet zit. Is er niet een library beschikbaar met dat soort functies?

[Bericht gewijzigd door henri62 op zondag 7 mei 2017 01:31:48 (13%)

1-st law of Henri: De wet van behoud van ellende. 2-nd law of Henri: Ellende komt nooit alleen.
High met Henk

Special Member

Nou toeval dat je reageert.

Ik heb het functie blok aan de praat, maar nog een klein probleempje
ik doe dit:

code:


FLOW_CURVE(IN:=X_FLOW,N:=10,P:=FLOW_POINTS);				(* CONVERT TO Y VAL *)
Y_FLOW := FLOW_CURVE.OUT;

ik converteer de X waarde naar een Y waarde volgens een aantal punten (N) in point array FLOW points

Dat klopt, want in
FLOW_CURVE.OUT komt mijn waarde te staan, maar die schrijft hij niet naar Y_FLOW....

ik snap waarom het niet werkt, want ik zou zoiets verwachten:

code:


Y_FLOW := FLOW_CURVE.OUT(IN:=X_FLOW,N:=10,P:=FLOW_POINTS);				(* CONVERT TO Y VAL *)

Dar valt hij echter over met builden...
Hoe krijg ik die uitgangs waarde van dat FB nu in mijn Y_FLOW?

EDIT:
Het werkt wel: verderop had ik Y_FLOW nog een vaste waarde meegegeven.... DUH... denk dat ik naar bed moet...

E = MC^2, dus de magnetische compatibiliteit doet kwadratisch mee???

Hallo Henk,

Om welke PLC gaat het? Je verwijst ook naar een topic, welk topic is dat?

Oeps, het staat in de titel!

[Bericht gewijzigd door necessaryevil op zondag 7 mei 2017 10:43:10 (21%)

GJ_

Moderator

Op 7 mei 2017 01:36:17 schreef High met Henk:
EDIT:
Het werkt wel: verderop had ik Y_FLOW nog een vaste waarde meegegeven.... DUH... denk dat ik naar bed moet...

Ik snap werkelijk niet dat je nog geen badeendje hebt. Ik kan niet zonder.

Shiptronic

Overleden

Wie de vraag stelt, zal met het antwoord moeten leren leven.
Lambiek

Special Member

Alleen als het SMURFIN is. :)

Als je haar maar goed zit, GROETEN LAMBIEK.
GJ_

Moderator

...met een zuignap. Die wil ik!

Shiptronic

Overleden

Voor € 15,-- boodschappen doen bij de Plus, dan krijg je er 1 gratis ;)

Of even aan de buur kids vragen

[Bericht gewijzigd door Shiptronic op zondag 7 mei 2017 12:29:39 (20%)

Wie de vraag stelt, zal met het antwoord moeten leren leven.
GJ_

Moderator

Geen plus hier :-(
Die moppersmurf is wel geknipt voor HmH >:-)

voor machtsverheffen gebruik je expt ipv exp functie

laatste pagina van de PDF:
http://www402.abbext.com/downloadfile.aspx?file=userfiles/answers20130…

sinusfuncties vind je ook op de paginas ervoor.

p.s. niet iedere PLC is even snel met reals, ook al hebben ze de zelfde codesys versie is er zeker wel verschil.

[Bericht gewijzigd door Progger op zondag 7 mei 2017 14:06:53 (20%)

GMT+1
GJ_

Moderator

De snelheid heeft natuurlijk ook helemaal niks met de programmeeromgeving te maken, zeker niet in het geval van Codesys. Codesys word trouwens maar zelden op PLC's gebruikt, meestal zijn het gewoon Windows PC's. En die kunnen met allerlei processoren uitgerust zijn, vaak met opzet niet echt snel. En alle soorten Windows worden gebruikt, meest WINCE, WINXP en WIN7. Met dus ook grote verschillen onderling.

Je link werkt niet.

[Bericht gewijzigd door GJ_ op zondag 7 mei 2017 14:43:15 (30%)

..en het is een eenmalige actie.
Bovendien bespaar je driekwart van de tijd als je je realiseert dat de drie overige delen spiegelkopieen zijn van de eerste kwart van de sinus. ;-)

raar, de link werkt bij mij wel.
overigens opent ie geen pagina, maar download hij de PDF direct.

Codesys is niet alleen de programmeeromgeving, maar ook compiler en runtime.

die runtime kan de PLC fabrikant aanpassen (board support package) en kan dus ook op dezelfde processorfamilie verschil geven tussen fabrikanten.

uiteraard heb je gelijk dat de processor zelf veel meer invloed heeft.

(ik heb overigens controllers gezien van EPEC, Wago en IFM die de runtime zonder windows OS draaien, dus ze zijn er wel)

GMT+1
GJ_

Moderator

Op 7 mei 2017 16:41:46 schreef Progger:...dus ze zijn er wel)

Natuurlijk zijn ze er wel. Als PLC, maar vooral in apparaten met PLC functionaliteit als "extra", zoals frequentieregelaars en servodrives.
In de PLC waar het hier om gaat, een Wago, draait inderdaad ook geen windows.

High met Henk

Special Member

Op 7 mei 2017 13:21:51 schreef GJ_:
Geen plus hier :-(
Die moppersmurf is wel geknipt voor HmH >:-)

Volgens mij hebben wij hier ook een overvloed aan die blauwe beesten sinds mijn kids sparen... Ik roggel er wel 1 voor je die ze dubbel hebben. Vond bakker smurf wel bij je passen omdat ik weet dat GJ de gevaarlijke keukenprins thuis is.

maar moppersmurf? Valt toch nog wel mee, eerder drukke smurf en de pest die je dan krijgt is dat je geent ijd meer hebt voor deze puzzeltjes als je ineens 3 dagen die je ingepland had voor deze puzzels wegvalt.....

Maar als ik nu de mod bus nog fix is het klaar... alles doet het op de communicatie na.

E = MC^2, dus de magnetische compatibiliteit doet kwadratisch mee???
joopv

Golden Member

De heren Milton Abramowitz en Irene A. Stegun hebben ooit een Handbook of Mathematical functions gemaakt. Interessant leesvoer voor dit soort zaken.
En niet copyrighted, vrij te downloaden.
http://people.math.sfu.ca/~cbm/aands/page_74.htm en verder...

[Bericht gewijzigd door joopv op maandag 8 mei 2017 09:16:45 (14%)

HmH, master of slaven?

Master kan met FB, slaven via web interface

GMT+1
GJ_

Moderator

HMI, die zijn altijd master.

Als je PLC dus slave is, data zetten op %mw12288 (uit mijn hoofd, moet overeenkomen met hex 3000)

Dan met read holding register lezen. Wel poort 502 activeren onder Ports of services, afhankelijk van type.

GMT+1
GJ_

Moderator

De HMI haalt data op van tags die je aanmaakt. Dat is natuurlijk nooit van een enkel adres. Vaak zit er nog een stiekeme +1 of -1 in het adres omdat amerikanen beginnen te tellen bij 1 in plaats van bij 0. Dat is een eeuwige instinkert bij modbus. Een modbus kan in principe ook nooit lezen van een adres eindigend op een 0.

Op 8 mei 2017 19:05:43 schreef Progger: Wel poort 502 activeren onder Ports of services, afhankelijk van type.

ahh, daar ben ik ook al een keer naar op zoek geweest.

[Bericht gewijzigd door GJ_ op maandag 8 mei 2017 20:09:41 (25%)

voor de PFC200 http://www.wago.com/wagoweb/documentation/750/eng_manu/coupler_control…

pagina 146: modbus aanzetten
pagina 275: modbus registers

de modbus registers worden gemapt naar een IW en QW gebied (vanaf 1000)

dus modbus register 1 is %IW1000 voor de PLC als je schrijft, %QW1000 als je leest.
2 is %IW1001 en verder...

als je modbus adres 12288 leest/schrijft wordt dat vertaald naar %MW0/%MX0.0

als je dus een toggle button wil (lezen en schrijven) kun je die dus beter aan een merker word/bit hangen.

@HmH, welke HMI en PLC heb je?
je kan webvisu in CodeSys gebruiken, die gebruikt geen modbus, maar een symbol database. voor modbus zijn er kleine verschillen, maar meeste komt overeen.

@GJ_,

ik zie dus dat ik het verkeerd had, MB register 12288 is MW0, en zo voort.
modbus werkt niet met tags, maar met registers. het stomme is dat het protocol -1 is, dus register 30001 --> functie code 3, adres 0.
als je dus in een manual een modbus adres leest kan het een registernummer zijn (1 en verder) of een adres (vanaf 0)

GMT+1
High met Henk

Special Member

Ding draait al

Hakko op port 502 idd.
En je kunt alle adressen benaderen, dus niet vanaf 1000 zoals ik idd ook ergens gevonden had...

Zoek morgen op maritime industry de kruismeter :)

Kwam er ook achter dat codesys gewoon std sin en cos kent..

E = MC^2, dus de magnetische compatibiliteit doet kwadratisch mee???