Kan man tidsmäta i PLC kod?
Kan man tidsmäta i PLC kod?
Hej.
Jag har en sr04 distansmätare som är digital. Det första man gör är att ge den spänning och ström. Sedan finns det två pinnar.
In: Trig - den ska få en hög kort puls.
Ut: Echo - den ger en lång puls och längden puls ska föreställa avståndet mellan sensorn och objektet. Kort avstånd = kort puls. Långt avstånd = lång puls.
Då måste man mäta i koden när Echo blir hög tills den blir låg. Och här är snack om mikrosekunder och inte millisekunder. Kanske nanosekund förekommer också?
Då undrar jag hur man skulle göra det i PLC? Finns det tic och toc kommandon som räknar processorns tid?
Det kanske inte går i PLC?
Om ni undrar vad jag håller på med så är det learning by doing. Jag har igår byggt egen SPI algoritm som fungerar och nu tänker jag ge mig på något annat.
Jag har en sr04 distansmätare som är digital. Det första man gör är att ge den spänning och ström. Sedan finns det två pinnar.
In: Trig - den ska få en hög kort puls.
Ut: Echo - den ger en lång puls och längden puls ska föreställa avståndet mellan sensorn och objektet. Kort avstånd = kort puls. Långt avstånd = lång puls.
Då måste man mäta i koden när Echo blir hög tills den blir låg. Och här är snack om mikrosekunder och inte millisekunder. Kanske nanosekund förekommer också?
Då undrar jag hur man skulle göra det i PLC? Finns det tic och toc kommandon som räknar processorns tid?
Det kanske inte går i PLC?
Om ni undrar vad jag håller på med så är det learning by doing. Jag har igår byggt egen SPI algoritm som fungerar och nu tänker jag ge mig på något annat.
- Klas-Kenny
- Inlägg: 11840
- Blev medlem: 17 maj 2010, 19:06:14
- Ort: Växjö/Alvesta
Re: Kan man tidsmäta i PLC kod?
Det beror väl helt på PLC'n.
Jag vet i alla fall att de Siemens S7 jag använt har hårdvarutimrar som fungerar fint. Osäker på upplösningen där dock, kolla dokumentationen i ditt fall..
Jag vet i alla fall att de Siemens S7 jag använt har hårdvarutimrar som fungerar fint. Osäker på upplösningen där dock, kolla dokumentationen i ditt fall..
Re: Kan man tidsmäta i PLC kod?
Du kan använda timers för generella fall. Det finns modeller med
"external gate" som kan räkna snabbare än processorn själv.
Man kan använda programvara för att räkna.
Man kan använd externa räknare som man sedan läser av från processorn.
> Kanske nanosekund förekommer också?
Varför fråga? Databladet är ju kanske inte väldigt tydligt (dåligt översatt),
men uppgifterna finns ju där i alla fall.
Om jag ser och räknar rätt så har du 34 cm per 1 ms pulsbredd. Så du har
relativt gott om tid att räkna ut pulsbredden, om du inte har väldigt korta avstånd.
"external gate" som kan räkna snabbare än processorn själv.
Man kan använda programvara för att räkna.
Man kan använd externa räknare som man sedan läser av från processorn.
> Kanske nanosekund förekommer också?
Varför fråga? Databladet är ju kanske inte väldigt tydligt (dåligt översatt),
men uppgifterna finns ju där i alla fall.
Om jag ser och räknar rätt så har du 34 cm per 1 ms pulsbredd. Så du har
relativt gott om tid att räkna ut pulsbredden, om du inte har väldigt korta avstånd.
Re: Kan man tidsmäta i PLC kod?
Vilka timers menar du då? Som jag vet så har bara structure text TON, TOM och TP.sodjan skrev:Du kan använda timers för generella fall. Det finns modeller med
"external gate" som kan räkna snabbare än processorn själv.
Man kan använda programvara för att räkna.
Man kan använd externa räknare som man sedan läser av från processorn.
> Kanske nanosekund förekommer också?
Varför fråga? Databladet är ju kanske inte väldigt tydligt (dåligt översatt),
men uppgifterna finns ju där i alla fall.
Om jag ser och räknar rätt så har du 34 cm per 1 ms pulsbredd. Så du har
relativt gott om tid att räkna ut pulsbredden, om du inte har väldigt korta avstånd.
Externa räknare som vadå? DS1307? Fast det är en RTC.
Re: Kan man tidsmäta i PLC kod?
Sorry, jag läste "PIC", inte "PLC"... 
Och jo, jag såg Klas-Kenny's inlägg och undrade lite vad han yrande om...

Och jo, jag såg Klas-Kenny's inlägg och undrade lite vad han yrande om...

Re: Kan man tidsmäta i PLC kod?
Okej. Om det beror på PLCn så kanske man ska ha en extern räknare ?Klas-Kenny skrev:Det beror väl helt på PLC'n.
Jag vet i alla fall att de Siemens S7 jag använt har hårdvarutimrar som fungerar fint. Osäker på upplösningen där dock, kolla dokumentationen i ditt fall..
Jag kör Codesys.
Re: Kan man tidsmäta i PLC kod?
Codesys är ju ingen PLC utan programvara, en PLC är kombinationen av hårdvara och mjukvara.
Huruvida olika funktioner stöds beror på både hårdvaran och mjukvaran, så du får studera hur olika saker är implementerade in hårdvaru/mjukvaru kombination.
Huruvida olika funktioner stöds beror på både hårdvaran och mjukvaran, så du får studera hur olika saker är implementerade in hårdvaru/mjukvaru kombination.
Re: Kan man tidsmäta i PLC kod?
Du borde säga att du kör codesys runtime för raspberry pi. Tänk på att det är en runtime som körs ovanpå linux och INTE är något RT-system.
Re: Kan man tidsmäta i PLC kod?
Just det ja, då är det ju ingen PLC (så som de flesta känner till det) alls...
- lillahuset
- Gått bort
- Inlägg: 13969
- Blev medlem: 3 juli 2008, 08:13:14
- Ort: Norrköping
Re: Kan man tidsmäta i PLC kod?
Du skriver ditt program i codesys språk, det kompileras till byte-kod.
I din Raspi har du någon linuxversion installerad, Codesys runtime körs i dit Linux-system som vilket annat program som helst.
Dvs anropar Linux-kärnan för att till exempel komma åt hårdvara osv.
När du laddar in din Capplikation så läser codesys-runtime filen och tolkar bytekoden och kör din applikation, som om det vore ett helt normalt program.
Dock eftersom du kör i ett Linux-system så kan du inte få RT-egenskaper, då linuxkärnan inte är konstruerad för detta.
Linuxkärnan kör flera processer samtidigt, vilket inte är möjligt i ett RT system (i princip), eftersom RT per definition kräver hårdvaru åtkomst utan fördröjning.
Nu vet jag inte hur ofta linuxkärnan växlar men det är så pass långsamt så du kan förvänta dig en hel del fördröjningar.
I din Raspi har du någon linuxversion installerad, Codesys runtime körs i dit Linux-system som vilket annat program som helst.
Dvs anropar Linux-kärnan för att till exempel komma åt hårdvara osv.
När du laddar in din Capplikation så läser codesys-runtime filen och tolkar bytekoden och kör din applikation, som om det vore ett helt normalt program.
Dock eftersom du kör i ett Linux-system så kan du inte få RT-egenskaper, då linuxkärnan inte är konstruerad för detta.
Linuxkärnan kör flera processer samtidigt, vilket inte är möjligt i ett RT system (i princip), eftersom RT per definition kräver hårdvaru åtkomst utan fördröjning.
Nu vet jag inte hur ofta linuxkärnan växlar men det är så pass långsamt så du kan förvänta dig en hel del fördröjningar.
Re: Kan man tidsmäta i PLC kod?
Jag har inte labbat med Raspberry över huvud taget men jag har sneglat på den ihop med Codesys. De anger 50-400us jitter men jag har inte hittat något om upplösning på timers eller vad cykeltiden är (om den är statisk) etc. Men jag har inte letat mer än ett par minuter just nu. 400us jitter på en 1ms mjukvarutimer känns ju inte så himla kul - och mindre än 1ms undrar jag om det finns utan specifikt hårdvarustöd (och det kansks finns i hallonpajjen, jag vet inte).
Det verkar finnas en del RT-kärnor till Raspberry, det kanske kan vara värt att kolla upp.
Det verkar finnas en del RT-kärnor till Raspberry, det kanske kan vara värt att kolla upp.
- lillahuset
- Gått bort
- Inlägg: 13969
- Blev medlem: 3 juli 2008, 08:13:14
- Ort: Norrköping
Re: Kan man tidsmäta i PLC kod?
För många år sedan gjorde jag något liknande som jag kopplade till en printerport på en PC. Ett par räknare och lite strölogik var allt som behövdes.
Re: Kan man tidsmäta i PLC kod?
Okej. Tackar. Då har jag verkligen fått en djup förklaring varför jag inte kan mäta tid i kodenTomasL skrev:Du skriver ditt program i codesys språk, det kompileras till byte-kod.
I din Raspi har du någon linuxversion installerad, Codesys runtime körs i dit Linux-system som vilket annat program som helst.
Dvs anropar Linux-kärnan för att till exempel komma åt hårdvara osv.
När du laddar in din Capplikation så läser codesys-runtime filen och tolkar bytekoden och kör din applikation, som om det vore ett helt normalt program.
Dock eftersom du kör i ett Linux-system så kan du inte få RT-egenskaper, då linuxkärnan inte är konstruerad för detta.
Linuxkärnan kör flera processer samtidigt, vilket inte är möjligt i ett RT system (i princip), eftersom RT per definition kräver hårdvaru åtkomst utan fördröjning.
Nu vet jag inte hur ofta linuxkärnan växlar men det är så pass långsamt så du kan förvänta dig en hel del fördröjningar.
