2010-08-03, 21:45
  #385
Medlem
IEC standarden säger att om man sätter EN på ett block till FALSE (0) så kommer blocket att behålla sitt tillstånd från senaste exekveringen alltså kommer utgångar att hänga kvar även om du inte gjort en set på variablerna kommer de att stanna vid TRUE om de var de vid senaste exekveringen..

Dock i Siemens kan du ju ha satt temporära variabler på utgångarna på ett block och då kan det bli lustigt.. Slutar du exekvera ett block som har temporärvariabler kopplat till utgångarna så vet du ju inte vad dessa variabler har för värde utan dessa kan hoppa runt hur som hellst.. Kan ju vara tråkigt..

Jag har inte sett så mycket programmering där man släcker EN på ett block men jag ser fördelarna med det.. Programmerar du en tillståndsmaskin med lite "Häftigare" tillstånd kan ju varje tillstånd läggas i ett eget block som sedan slutar exekveras när vi gör en övergång till nästa tillstånd.. Sjukt vad man skulle kunna skala scanvarvs tid på detta sätt men gud vad elektrikerna skulle bli tokiga när blocket de hittat till "plötsligt" slutar exekveras..

Självklart har jag sett att man släcker EN på block såsom Move, Add m.m men det räknas ju inte

Wops såg att du skulle göra en I/O test bara hehe..

Kunde ju gjort en force tabell annars och bara forcat utgångarna till.. Dock inte glömma kvar dessa sen.. Hehe Ett annat alternativ är att som du säger forca bort din vanliga kod då hade du kunnat fippla runt med utgångarna i en vanlig Var tabell..

Förmodligen lite sena svar eftersom att du skulle driftsätta på måndag men det kanske strulat till sig så detta kan hjälpa ändå.. Vet ju själv hur en drifttaggning kan se ut..

Sen det här med hängslen och livrem man kan ju proppa OB100 fullt med grejjer såsom att nollställa alla utgångar, sekvenser m.m vid uppstart..

Nepp nu har jag skrivit för mycket men jag vill ju bara hålla liv i denna tråden hehe
Citera
2010-08-17, 10:07
  #386
Medlem
SchKutts avatar
' Tja!

Skulle beöva lite hjälp här. Förmodligen ett enkelt problem jag har men tycker manualen är dålig och orkar inte simulera skiten då det är en stor typlösning som jag gjort.

Allt är i Step7.

Nätverken är här:
http://h.imagehost.org/download/0495/P_N_flank

Mina funderingar är:
I NW 13 så om #ROT går från 0->1 så är #R_PULS_Q=1 i ett cykelvarv? sedan är den 0 även ifall #ROT fortfarande är 1? För att bli 1 under ett cykelvarv igen så måste #ROT gå ifrån 1->0 och återigen 0->1?

Samma sak fast från 1->0 på NW14?
Citera
2010-08-17, 17:24
  #387
Bannlyst
Citat:
Ursprungligen postat av SchKutt
' Tja!

Skulle beöva lite hjälp här. Förmodligen ett enkelt problem jag har men tycker manualen är dålig och orkar inte simulera skiten då det är en stor typlösning som jag gjort.

Allt är i Step7.

Nätverken är här:
http://h.imagehost.org/download/0495/P_N_flank

Mina funderingar är:
I NW 13 så om #ROT går från 0->1 så är #R_PULS_Q=1 i ett cykelvarv? sedan är den 0 även ifall #ROT fortfarande är 1? För att bli 1 under ett cykelvarv igen så måste #ROT gå ifrån 1->0 och återigen 0->1?

Samma sak fast från 1->0 på NW14?


Tips! Du behöver inte simulera hela din typlösning, gör ett projekt med bara de nätverken du har redovisat i den bifogade bilden
Citera
2010-08-17, 18:15
  #388
Medlem
Citat:
Ursprungligen postat av SchKutt
' Tja!

...
Mina funderingar är:
I NW 13 så om #ROT går från 0->1 så är #R_PULS_Q=1 i ett cykelvarv? sedan är den 0 även ifall #ROT fortfarande är 1? För att bli 1 under ett cykelvarv igen så måste #ROT gå ifrån 1->0 och återigen 0->1?

Samma sak fast från 1->0 på NW14?

Njae... Det där är lite lurigt, om koden verkligen ser ut så där.

Så som du har gjort koden så har du alltså bara använt TEMP-variabler (5 stycken).
Problemet som dessa har är att vid nästa anrop av blocket så är de nollställda, vilket betyder att dina (P) och (N) kommer att bete sig som flipperspel.
Även din variabel #ROT kommer att nollas nästa gång blocket anropas och trigga om (P), förutsatt att du i något nätverk ovanför sätter #ROT till ett.
Flaggorna som används till (P) och (N) instruktionerna måste behålla status mellan blockanropen.
Citera
2010-08-18, 22:15
  #389
Medlem
SchKutts avatar
Citat:
Ursprungligen postat av STX
Tips! Du behöver inte simulera hela din typlösning, gör ett projekt med bara de nätverken du har redovisat i den bifogade bilden

Kom på det med när jag cyklade hem

Citat:
Ursprungligen postat av dubbeltommy
Njae... Det där är lite lurigt, om koden verkligen ser ut så där.

Så som du har gjort koden så har du alltså bara använt TEMP-variabler (5 stycken).
Problemet som dessa har är att vid nästa anrop av blocket så är de nollställda, vilket betyder att dina (P) och (N) kommer att bete sig som flipperspel.
Även din variabel #ROT kommer att nollas nästa gång blocket anropas och trigga om (P), förutsatt att du i något nätverk ovanför sätter #ROT till ett.
Flaggorna som används till (P) och (N) instruktionerna måste behålla status mellan blockanropen.

Blocket kommer att anropas i FC1 som i sin tur hela tiden anropas i OB1. #ROT är en IN variabel i funktionsblocket. De minnena som är (P) och (N) är däremot Temp variabler. Spelar det någon roll?
Visa gärna hur du skulle ha gjort? Kommer att användas till en rotationsvakt på ett transportband.
Citera
2010-08-18, 22:39
  #390
Medlem
JohnMiltons avatar
Hej! Jag kommer börja läsa mekatronik på universitetet i höst och där ska ingå PLC-programmering.
Är det nån som har tips på en introduktion/allmänt bra sida i ämnet som man kan läsa igenom för att få lite överblick över konceptet för att jämna ut inlärningskurvan?

Jag har märkt i andra ämnen att det är enormt mycket lättare att ta till sig saker om man har skummat igenom en grund om vad det kommer handla om innan så att man kan relatera minnena till nåt.
Citera
2010-08-19, 12:14
  #391
Bannlyst
Citat:
Ursprungligen postat av SchKutt
Kom på det med när jag cyklade hem



Blocket kommer att anropas i FC1 som i sin tur hela tiden anropas i OB1. #ROT är en IN variabel i funktionsblocket. De minnena som är (P) och (N) är däremot Temp variabler. Spelar det någon roll?
Visa gärna hur du skulle ha gjort? Kommer att användas till en rotationsvakt på ett transportband.


Om det är en rotationsvakt som ger pulser hela tiden, alltså typ en induktiv givare som läser kuggar eller liknande brukar jag göra på följnade sätt:

Pseudo:

Timer_IN:= Driftsvar från motor OCH INTE Puls från rotvakt.
Larm:=Timer_OUT
Citera
2010-08-19, 22:44
  #392
Medlem
(P) eller (N) kan absolut inte vara tempvariabler..

Måste vara STAT/Global DB variabel/M-minne då dessa kan hålla sitt värde till nästa scanvarv..

Enkelt kan man säga att tempvariabler har man i ett särskilt minne som alla block använder och man kan därför inte garantera deras värde från scan till scan.

Hur implementationen av en flank kan se ut:

A AND NOT B = C
A = B

Som du ser måste B som är flankminnet komma ihåg sin status (A är ditt villkor för att skapa flanken C är flanken)
Citera
2010-08-21, 15:10
  #393
Medlem
Ganymedes avatar
Citat:
Ursprungligen postat av STX
Om det är en rotationsvakt som ger pulser hela tiden, alltså typ en induktiv givare som läser kuggar eller liknande brukar jag göra på följnade sätt:

Pseudo:

Timer_IN:= Driftsvar från motor OCH INTE Puls från rotvakt.
Larm:=Timer_OUT

Får man fråga varför du vänder (INTE alltså) på pulståget vid avläsning ?
Citera
2010-08-21, 15:40
  #394
Bannlyst
Citat:
Ursprungligen postat av Ganymede
Får man fråga varför du vänder (INTE alltså) på pulståget vid avläsning ?

Nja jag tog för givet att signalen är normalt låg och blir hög. Det beror ju på hur signalen ser ut
Citera
2010-08-21, 18:30
  #395
Medlem
Ganymedes avatar
Citat:
Ursprungligen postat av STX
Nja jag tog för givet att signalen är normalt låg och blir hög. Det beror ju på hur signalen ser ut

Aha, på så sätt

Men förresten, kom på en sak...ska vakten funka så är det väl omslagen på givarsignalen man vill detektera ?
Signalen kan ju fastna antingen hög eller låg, det kan ju inte timern veta eller..?
Remmen går av, givaren stannar på ett kugg -> insignalen är hög, då förblir ju timern 0 -> inget larm.
Eller har jag missat något - vilket iofs inte är helt ovanligt ^^ ?
__________________
Senast redigerad av Ganymede 2010-08-21 kl. 18:34.
Citera
2010-08-21, 20:00
  #396
Bannlyst
Citat:
Ursprungligen postat av Ganymede
Aha, på så sätt

Men förresten, kom på en sak...ska vakten funka så är det väl omslagen på givarsignalen man vill detektera ?
Signalen kan ju fastna antingen hög eller låg, det kan ju inte timern veta eller..?
Remmen går av, givaren stannar på ett kugg -> insignalen är hög, då förblir ju timern 0 -> inget larm.
Eller har jag missat något - vilket iofs inte är helt ovanligt ^^ ?

Ja just det, det tänkte jag inte på
Har varit lite bortskämd med rotationsvakter som ger en fast signal så länge de roterar.
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in