Acasă > forum > Terminale de operare (Weintek) > Controlul cuptorului pentru tratamente termice
- Acest subiect are 6 răspunsuri, 2 participanți și a fost actualizat ultima dată de ani în urmă 6 da Stefano.
-
AutorPost
-
Februarie 10, 2016 la 3: 32 pm #35937Stefanoparticipant
Caut câteva sugestii pentru a verifica dacă am fost comandat. Aș dori să înțeleg dacă este fezabil doar cu un panou de operator (mă gândeam la un MT6050iP) și la un posibil „truc” utilizabil.
Am instalat două cuptoare cu controler de temperatură PID care poate fi interfațat prin MODBUS RTU pe 485. Prin modbus, pot citi temperatura instantanee și pot seta diverși parametri, cum ar fi valoarea de referință, PID, puterea maximă. Am nevoie să automatizez programe de încălzire configurabile. Programele sunt practic două tipuri:
Primul:
1) Se încălzește până la temperatura A cu puterea maximă X
2) a atins temperatura timp de C minute
3) Se încălzește până la temperatura D cu puterea maximă Y
4) îmbinare la temperatura D mențineți E minute
5) Se încălzește până la temperatura F cu puterea maximă Z
6) Împletirea la temperatura F menține G timp de G
7) FinalAl doilea (care nu este altceva decât o parte din prima):
1) Se încălzește până la temperatura A cu puterea maximă X
2) a atins temperatura timp de C minute
3) FinalIdeea mea a fost să folosesc un singur panou și să conectez cele două controlere de temperatură pe un autobuz 485. Apoi, gestionați parametrii cu rețetele și treceți între pași cu macro-uri și planificator. Cele două cuptoare trebuie să poată funcționa independent și cu pornire manuală sau preprogramată la o anumită oră.
Februarie 10, 2016 la 5: 23 pm #39359Sergio BertanaAdministrator al forumuluiDa, desigur, este posibil să puteți gestiona o macro timp ciclic care efectuează toate operațiunile pentru dvs., poate folosind o mașină de stare cu operatorul Selectați cazul.
Select Case [variable]
Case [value]
[Statements]
breakend Select
Să-ți faci ciclul mi se pare cea mai bună soluție. Desigur, veți avea două macro-uri distincte, dar perfect identice, care se vor referi la variabilele modbus citite de cele două controlere PID. Pentru a citi registrele folosiți operandul Obțineți date să scrie operandul SetData.
Noiembrie 7, 2017 la 3: 50 pm #40009StefanoparticipantReiau această postare veche. Proiectul funcționează bine de ceva timp pe un MT6070iP (EB8000). Cu toate acestea, operatorii tocmai mi-au raportat câteva anomalii. Prima anomalie se referă la următoarea piesă de macro:
sub CalcTimer(unsigned int time)
unsigned int minutes, seconds
minutes = time / 600
seconds = (time % 600) / 10
SetData(minutes, "Local HMI", "F2_MINREM", 1)
SetData(seconds, "Local HMI", "F2_SECREM", 1)
end subO valoare în zecimi de secundă este transmisă sub și această procedură o scrie în două registre reprezentând minute și secunde. Supravegherea mea a fost să folosesc „unsigned int” pentru „minute” și „secunde”, așa că „SetData” scrie două registre adiacente și nu cel la care mă așteptam. Acest lucru mă face să fac registre murdare folosite pentru alte lucruri, din fericire doar în afișaj. Ideea mea este să declar pur și simplu nesemnate minute scurte, secunde, dar aș dori să înțeleg dacă există posibile probleme de trunchiere. Adică, macro-ul ar efectua calculul într-o variabilă de 32 de biți și apoi l-ar trunchia la 16 (ceea ce ar fi bine pentru mine) sau ar trunchia variabila de 32 de biți pentru a efectua calculul în cea de 16?
O altă întrebare foarte ciudată este legată de această bucată de cod:
unsigned int tick, prevtick, interval, elapsed, remaining
GetData(prevtick, "Local HMI", LW, 9030, 1)
interval = record[hold] * 600<
elapsed = 0while elapsed <= interval
GetData(tick, "Local HMI", LW, 9030, 1)
elapsed = tick - prevtickif elapsed > interval then<
remaining = 0
else
remaining = interval - elapsed
end ifCalcTimer(remaining)
DELAY(250)
wendOperatorul apasă o tastă care activează macrocomanda care conține acest cod. Macrocomanda trece un anumit timp și actualizează două registre care afișează o numărătoare inversă. Această bucată de cod funcționează perfect. Cu toate acestea, dacă las panoul pornit mai mult de o lună, atunci când operatorul activează macro-ul, se întâmplă ca bucla while să iasă imediat (cu siguranță se face o buclă, deoarece este afișată valoarea inițială corectă a numărătoare inversă). Intervalul se inițializează de obicei la 30 de minute (30 * 600). Acest lucru se întâmplă până când opresc și pornesc din nou panoul. În acel moment, totul revine la funcționarea corectă. Nu pot să înțeleg ce ar putea afecta. Există erori cunoscute pe panou în gestionarea LW-9030 (unitate de timp a sistemului pe 32 de biți: 0.1 secunde)?
Noiembrie 23, 2017 la 10: 12 am #40010Sergio BertanaAdministrator al forumuluiPrimul punct
Ar fi corect să folosiți unele scurte, dar aveți grijă ca toate operațiunile să fie efectuate apoi la 16bit.Al doilea punct
Pentru o verificare exactă ar fi nevoie de toate macro-urile, dar ca o sugestie de verificare, LW9030 poate trece peste numărat revenind la 0.Noiembrie 23, 2017 la 10: 30 am #40012Stefanoparticipant1 - Aș putea face calculele pe variabile la 32 și apoi să le trunchiez la 16. Există o comandă specifică pentru trunchiere sau pot doar să atribui valoarea unei variabile de 32 de biți unui 16?
2 - Pot posta și restul macro-ului, dar nu sunt atinse valori de sincronizare sau LW9030, totul se face în bucla pe care am postat-o. Întreb dacă există bug-uri cunoscute în firmware, deoarece este destul de anormal. În manualul LW9030 este denumit timp de sistem pe 32 de biți în zecimi de secundă. Prin urmare, ar trebui să ajungă la zero după 4294967295 zecimi de secundă, aproximativ 13 ani, nu după câteva luni. Mai mult, chiar și LW9030 a depășit numărul revenind la 0, comportamentul ar indica faptul că, după depășire, LW9030 rămâne la zero fără a crește mai mult, deoarece chiar dacă întrerup macro-ul și îl rulez din nou, aceeași problemă rămâne atâta timp cât nu opresc și nu pornesc din nou panoul.
Noiembrie 24, 2017 la 8: 50 am #40013Sergio BertanaAdministrator al forumuluiPentru punctul 1 este posibil să se efectueze toate calculele la 32bit, la final este posibil să se treacă rezultatul în variabilă la bitul 16 care trunchie restul.
Pentru punctul 2, de îndată ce găsesc un moment, verific comportamentul LW9030.Aprilie 11, 2018 la 10: 33 am #40075StefanoparticipantAm contactat Weintek care, după luni de verificări, a confirmat că există o eroare în firmware-ul legat de LW9030.
-
AutorPost
- Trebuie să fiți autentificat pentru a răspunde la acest subiect.