![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
RET15-01
Dependencies: BSP_DISCO_F429ZI LCD_DISCO_F429ZI TS_DISCO_F429ZI eprom mbed
Fork of DISCO-F429ZI_LCDTS_demo by
main.cpp
00001 #include "mbed.h" 00002 #include "TS_DISCO_F429ZI.h" 00003 #include "LCD_DISCO_F429ZI.h" 00004 #include "eeprom.h" 00005 00006 #define PPV_BOB 1720 // (40/15)*800 00007 #define PPV_AMA 880 // ( 00008 #define PPMM_AVA 7.8 // 800/103 00009 00010 LCD_DISCO_F429ZI lcd; 00011 TS_DISCO_F429ZI ts; 00012 00013 void proc_motores(void); 00014 void proc_ts(void); 00015 void tela_principal(void); 00016 00017 DigitalOut led(PG_14); 00018 DigitalOut pulso_cabo(PE_2); 00019 DigitalOut pulso_ama(PE_3); 00020 DigitalOut pulso_fit(PE_4); 00021 DigitalOut dir_ama(PE_5); 00022 DigitalOut lp_vermelha(PE_6); 00023 DigitalOut vl_pesca(PB_4); 00024 DigitalOut vl_corta(PB_7); 00025 DigitalOut ena_cabo(PF_6); 00026 00027 DigitalIn bt_emerg(PC_3); 00028 DigitalIn bt_pausa(PC_11); 00029 DigitalIn bt_reset(PC_12); 00030 DigitalIn bt_posic(PC_13); 00031 DigitalIn alarm_cabo(PA_5); 00032 DigitalIn sn_cabo(PA_9); 00033 DigitalIn sn_ama(PA_10); 00034 DigitalIn sn_porta(PG_3); 00035 00036 Ticker int_ts; 00037 TS_StateTypeDef TS_State; 00038 00039 volatile uint16_t x, y; 00040 uint8_t PARADA_SERVO = 0; 00041 uint8_t POSICIONADO = 0; 00042 uint8_t CONDICAO = 0; 00043 uint8_t COND_ANT = 0; 00044 00045 uint16_t VOLTAS_CABO = 10; 00046 uint16_t VOLTAS_FIT = 2; 00047 uint16_t COMP_FIT = 100; 00048 uint16_t VELO_CABO = 8000; 00049 uint16_t PRODUCAO = 0; 00050 float DESLOC = 0; 00051 char text[10]; 00052 uint16_t VirtAddVarTab[NB_OF_VAR] = {0x0011, 0x0022, 0x0033, 0x0044, 0x0055, 0x0066}; 00053 00054 void proc_ts(void) 00055 { 00056 ts.GetState(&TS_State); 00057 if (TS_State.TouchDetected) 00058 { 00059 x = TS_State.X; 00060 y = TS_State.Y; 00061 00062 //sprintf((char*)text, " %d ", y); 00063 //lcd.DisplayStringAt(0, 0, (uint8_t *)&text, CENTER_MODE); 00064 } 00065 } 00066 00067 void RODA_SERVO(uint16_t VL_INICIAL, uint16_t VL_FINAL, uint32_t PASSOS, uint8_t MOTOR) 00068 { 00069 PARADA_SERVO = 0; 00070 uint16_t VELOCIDADE = VL_INICIAL; 00071 uint32_t PULSOS = 0; 00072 00073 POSICIONADO = 0; 00074 00075 while (PARADA_SERVO < 1) 00076 { 00077 if (VELOCIDADE < VL_FINAL) { if (VELOCIDADE < 8000) { VELOCIDADE+= 2000; } else { VELOCIDADE+= 5; } } 00078 switch(MOTOR) 00079 { 00080 case 0: 00081 pulso_cabo=1; 00082 wait_us(30+(10000-VELOCIDADE)); 00083 pulso_cabo=0; 00084 break; 00085 case 1: 00086 pulso_fit=1; 00087 wait_us(30+(10000-VELOCIDADE)); 00088 pulso_fit=0; 00089 break; 00090 case 2: 00091 pulso_ama=1; 00092 wait_us(30+(10000-VELOCIDADE)); 00093 pulso_ama=0; 00094 break; 00095 case 3: 00096 pulso_cabo=1; 00097 wait_us(30+(10000-VELOCIDADE)); 00098 pulso_cabo=0; 00099 break; 00100 case 4: 00101 pulso_ama=1; 00102 wait_us(30+(10000-VELOCIDADE)); 00103 pulso_ama=0; 00104 break; 00105 } 00106 wait_us(40); 00107 00108 PULSOS++; 00109 00110 if (PULSOS>PASSOS) { PARADA_SERVO = 1; } 00111 if (!bt_emerg) { PARADA_SERVO = 2; } 00112 if (bt_pausa) { PARADA_SERVO = 3; } 00113 if (!sn_porta) { PARADA_SERVO = 4; } 00114 00115 if (MOTOR == 0) // BOBINA 00116 { 00117 if ( PULSOS > PASSOS-200) { if (sn_cabo) { PARADA_SERVO = 5; POSICIONADO = 1; } } 00118 } 00119 00120 if (MOTOR == 1) // AVANÇO FITILHO 00121 { 00122 // 00123 } 00124 00125 if (MOTOR == 2) // AMARRA FITILHO 00126 { 00127 if ( PULSOS > PASSOS-200) { if (sn_ama) { PARADA_SERVO = 5; POSICIONADO = 1; } } 00128 } 00129 00130 if (MOTOR == 3) // REPOSICIONAR BOBINA 00131 { 00132 if (sn_cabo) { PARADA_SERVO = 5; } 00133 } 00134 00135 if (MOTOR == 4) // REPOSICIONAR AMARRA 00136 { 00137 if (sn_ama) { PARADA_SERVO = 5; } 00138 } 00139 00140 } 00141 00142 while (bt_pausa || bt_posic) {} 00143 } 00144 00145 void tela_principal(void) 00146 { 00147 //TITULO 00148 BSP_LCD_SetFont(&Font24); 00149 lcd.Clear(LCD_COLOR_BLUE); 00150 lcd.SetTextColor(LCD_COLOR_WHITE); 00151 lcd.DrawRect(10, 4, 220, 30); 00152 lcd.SetBackColor(LCD_COLOR_BLUE); 00153 lcd.SetTextColor(LCD_COLOR_WHITE); 00154 lcd.DisplayStringAt(0, 9, (uint8_t *)"RTE15-01", CENTER_MODE); 00155 00156 //LABEL PRODUÇÃO 00157 BSP_LCD_SetFont(&Font20); 00158 lcd.SetTextColor(LCD_COLOR_WHITE); 00159 lcd.DisplayStringAt(0, 60, (uint8_t *)"PRODUCAO", CENTER_MODE); 00160 BSP_LCD_SetFont(&Font24); 00161 00162 //QUANTIDADE PRODUZIDA 00163 lcd.SetTextColor(LCD_COLOR_WHITE); 00164 lcd.FillRect(10, 80, 220, 50); 00165 lcd.SetTextColor(LCD_COLOR_DARKGRAY); 00166 lcd.DrawRect(10, 80, 220, 50); 00167 lcd.SetBackColor(LCD_COLOR_WHITE); 00168 lcd.SetTextColor(LCD_COLOR_BLUE); 00169 lcd.DisplayStringAt(0, 95, (uint8_t *)" 0 ", CENTER_MODE); 00170 00171 //BOTÃO ZERAR 00172 lcd.SetTextColor(LCD_COLOR_LIGHTGRAY); 00173 lcd.FillRect(10, 140, 220, 40); 00174 lcd.SetTextColor(LCD_COLOR_DARKGRAY); 00175 lcd.DrawRect(10, 140, 220, 40); 00176 lcd.SetBackColor(LCD_COLOR_LIGHTGRAY); 00177 lcd.SetTextColor(LCD_COLOR_DARKGRAY); 00178 lcd.DisplayStringAt(0, 150, (uint8_t *)"ZERAR", CENTER_MODE); 00179 00180 //STATUS 00181 lcd.SetTextColor(LCD_COLOR_WHITE); 00182 lcd.FillRect(10, 210, 220, 50); 00183 lcd.SetTextColor(LCD_COLOR_DARKGRAY); 00184 lcd.DrawRect(10, 210, 220, 50); 00185 lcd.SetBackColor(LCD_COLOR_WHITE); 00186 lcd.SetTextColor(LCD_COLOR_BLUE); 00187 lcd.DisplayStringAt(0, 225, (uint8_t *)" PRONTO ", CENTER_MODE); 00188 00189 //BOTÃO CONFIG 00190 lcd.SetTextColor(LCD_COLOR_LIGHTGRAY); 00191 lcd.FillRect(10, 270, 220, 40); 00192 lcd.SetTextColor(LCD_COLOR_DARKGRAY); 00193 lcd.DrawRect(10, 270, 220, 40); 00194 lcd.SetBackColor(LCD_COLOR_LIGHTGRAY); 00195 lcd.SetTextColor(LCD_COLOR_DARKGRAY); 00196 lcd.DisplayStringAt(0, 280, (uint8_t *)"CONFIG.", CENTER_MODE); 00197 00198 } 00199 00200 void tela_config(void) 00201 { 00202 uint8_t sair=0; 00203 uint16_t _y1 = 38; 00204 uint16_t _dy = 56; 00205 00206 //TÍTULO 00207 lcd.Clear(LCD_COLOR_GREEN); 00208 lcd.SetTextColor(LCD_COLOR_BLACK); 00209 lcd.DrawRect(10, 4, 220, 30); 00210 lcd.SetBackColor(LCD_COLOR_GREEN); 00211 lcd.SetTextColor(LCD_COLOR_BLACK); 00212 lcd.DisplayStringAt(0, 9, (uint8_t *)"CONFIG.", CENTER_MODE); 00213 00214 //LABEL VOLTAS CABO 00215 BSP_LCD_SetFont(&Font20); 00216 lcd.SetTextColor(LCD_COLOR_BLACK); 00217 lcd.DisplayStringAt(0, _y1+(_dy*0), (uint8_t *)"VOLTAS CABO", CENTER_MODE); 00218 BSP_LCD_SetFont(&Font24); 00219 00220 //VOLTAS CABO 00221 lcd.SetTextColor(LCD_COLOR_WHITE); 00222 lcd.FillRect(40, _y1+(_dy*0)+20, 160, 34); 00223 lcd.SetTextColor(LCD_COLOR_DARKGRAY); 00224 lcd.DrawRect(40, _y1+(_dy*0)+20, 160, 34); 00225 lcd.SetBackColor(LCD_COLOR_WHITE); 00226 lcd.SetTextColor(LCD_COLOR_BLACK); 00227 sprintf((char*)text, " %d ", VOLTAS_CABO); 00228 lcd.DisplayStringAt(0, _y1+(_dy*0)+28, (uint8_t *)&text, CENTER_MODE); 00229 lcd.FillTriangle(210, 220, 230, _y1+(_dy*0)+34, _y1+(_dy*0)+14, _y1+(_dy*0)+34); 00230 lcd.FillTriangle(210, 220, 230, _y1+(_dy*0)+40, _y1+(_dy*0)+60, _y1+(_dy*0)+40); 00231 00232 //LABEL VOLTAS FITILHO 00233 BSP_LCD_SetFont(&Font20); 00234 lcd.SetTextColor(LCD_COLOR_BLACK); 00235 lcd.SetBackColor(LCD_COLOR_GREEN); 00236 lcd.DisplayStringAt(0, _y1+(_dy*1), (uint8_t *)"VOLTAS FIT.", CENTER_MODE); 00237 BSP_LCD_SetFont(&Font24); 00238 00239 //VOLTAS FITILHO 00240 lcd.SetTextColor(LCD_COLOR_WHITE); 00241 lcd.FillRect(40, _y1+(_dy*1)+20, 160, 34); 00242 lcd.SetTextColor(LCD_COLOR_DARKGRAY); 00243 lcd.DrawRect(40, _y1+(_dy*1)+20, 160, 34); 00244 lcd.SetBackColor(LCD_COLOR_WHITE); 00245 lcd.SetTextColor(LCD_COLOR_BLACK); 00246 sprintf((char*)text, " %d ", VOLTAS_FIT); 00247 lcd.DisplayStringAt(0, _y1+(_dy*1)+28, (uint8_t *)&text, CENTER_MODE); 00248 lcd.FillTriangle(210, 220, 230, _y1+(_dy*1)+34, _y1+(_dy*1)+14, _y1+(_dy*1)+34); 00249 lcd.FillTriangle(210, 220, 230, _y1+(_dy*1)+40, _y1+(_dy*1)+60, _y1+(_dy*1)+40); 00250 00251 //LABEL COMP FITILHO 00252 BSP_LCD_SetFont(&Font20); 00253 lcd.SetTextColor(LCD_COLOR_BLACK); 00254 lcd.SetBackColor(LCD_COLOR_GREEN); 00255 lcd.DisplayStringAt(0, _y1+(_dy*2), (uint8_t *)"COMP FIT.", CENTER_MODE); 00256 BSP_LCD_SetFont(&Font24); 00257 00258 //COMP FITILHO 00259 lcd.SetTextColor(LCD_COLOR_WHITE); 00260 lcd.FillRect(40, _y1+(_dy*2)+20, 160, 34); 00261 lcd.SetTextColor(LCD_COLOR_DARKGRAY); 00262 lcd.DrawRect(40, _y1+(_dy*2)+20, 160, 34); 00263 lcd.SetBackColor(LCD_COLOR_WHITE); 00264 lcd.SetTextColor(LCD_COLOR_BLACK); 00265 sprintf((char*)text, " %d ", COMP_FIT); 00266 lcd.DisplayStringAt(0, _y1+(_dy*2)+28, (uint8_t *)&text, CENTER_MODE); 00267 lcd.FillTriangle(210, 220, 230, _y1+(_dy*2)+34, _y1+(_dy*2)+14, _y1+(_dy*2)+34); 00268 lcd.FillTriangle(210, 220, 230, _y1+(_dy*2)+40, _y1+(_dy*2)+60, _y1+(_dy*2)+40); 00269 00270 //LABEL VELOCIDADE CABO 00271 BSP_LCD_SetFont(&Font20); 00272 lcd.SetTextColor(LCD_COLOR_BLACK); 00273 lcd.SetBackColor(LCD_COLOR_GREEN); 00274 lcd.DisplayStringAt(0, _y1+(_dy*3), (uint8_t *)"VELOC. CABO", CENTER_MODE); 00275 BSP_LCD_SetFont(&Font24); 00276 00277 //COMP FITILHO 00278 lcd.SetTextColor(LCD_COLOR_WHITE); 00279 lcd.FillRect(40, _y1+(_dy*3)+20, 160, 34); 00280 lcd.SetTextColor(LCD_COLOR_DARKGRAY); 00281 lcd.DrawRect(40, _y1+(_dy*3)+20, 160, 34); 00282 lcd.SetBackColor(LCD_COLOR_WHITE); 00283 lcd.SetTextColor(LCD_COLOR_BLACK); 00284 sprintf((char*)text, " %d ", VELO_CABO); 00285 lcd.DisplayStringAt(0, _y1+(_dy*3)+28, (uint8_t *)&text, CENTER_MODE); 00286 lcd.FillTriangle(210, 220, 230, _y1+(_dy*3)+34, _y1+(_dy*3)+14, _y1+(_dy*3)+34); 00287 lcd.FillTriangle(210, 220, 230, _y1+(_dy*3)+40, _y1+(_dy*3)+60, _y1+(_dy*3)+40); 00288 00289 00290 //BOTÃO SAIR 00291 lcd.SetTextColor(LCD_COLOR_LIGHTGRAY); 00292 lcd.FillRect(10, 270, 220, 40); 00293 lcd.SetTextColor(LCD_COLOR_DARKGRAY); 00294 lcd.DrawRect(10, 270, 220, 40); 00295 lcd.SetBackColor(LCD_COLOR_LIGHTGRAY); 00296 lcd.SetTextColor(LCD_COLOR_DARKGRAY); 00297 lcd.DisplayStringAt(0, 280, (uint8_t *)"SAIR", CENTER_MODE); 00298 00299 while(sair<1) 00300 { 00301 00302 if(y>(_y1+(_dy*0)+14) && y<(_y1+(_dy*0)+34) && x>200) // + VOLTAS CABO 00303 { 00304 y=0; x=0; 00305 if (VOLTAS_CABO<60) 00306 { 00307 VOLTAS_CABO+=5; 00308 lcd.SetBackColor(LCD_COLOR_WHITE); 00309 lcd.SetTextColor(LCD_COLOR_BLACK); 00310 sprintf((char*)text, " %d ", VOLTAS_CABO); 00311 lcd.DisplayStringAt(0, _y1+(_dy*0)+28, (uint8_t *)&text, CENTER_MODE); 00312 } 00313 wait(0.3); 00314 } 00315 00316 if(y>(_y1+(_dy*0)+40) && y<(_y1+(_dy*0)+60) && x>200) // - VOLTAS CABO 00317 { 00318 y=0; x=0; 00319 if (VOLTAS_CABO>10) 00320 { 00321 VOLTAS_CABO-=5; 00322 lcd.SetBackColor(LCD_COLOR_WHITE); 00323 lcd.SetTextColor(LCD_COLOR_BLACK); 00324 sprintf((char*)text, " %d ", VOLTAS_CABO); 00325 lcd.DisplayStringAt(0, _y1+(_dy*0)+28, (uint8_t *)&text, CENTER_MODE); 00326 } 00327 wait(0.3); 00328 } 00329 00330 if(y>(_y1+(_dy*1)+14) && y<(_y1+(_dy*1)+34) && x>200) // + VOLTAS FITILHO 00331 { 00332 y=0; x=0; 00333 if (VOLTAS_FIT<8) 00334 { 00335 VOLTAS_FIT+=1; 00336 lcd.SetBackColor(LCD_COLOR_WHITE); 00337 lcd.SetTextColor(LCD_COLOR_BLACK); 00338 sprintf((char*)text, " %d ", VOLTAS_FIT); 00339 lcd.DisplayStringAt(0, _y1+(_dy*1)+28, (uint8_t *)&text, CENTER_MODE); 00340 } 00341 wait(0.3); 00342 } 00343 00344 if(y>(_y1+(_dy*1)+40) && y<(_y1+(_dy*1)+60) && x>200) // - VOLTAS FITILHO 00345 { 00346 y=0; x=0; 00347 if (VOLTAS_FIT>2) 00348 { 00349 VOLTAS_FIT-=1; 00350 lcd.SetBackColor(LCD_COLOR_WHITE); 00351 lcd.SetTextColor(LCD_COLOR_BLACK); 00352 sprintf((char*)text, " %d ", VOLTAS_FIT); 00353 lcd.DisplayStringAt(0, _y1+(_dy*1)+28, (uint8_t *)&text, CENTER_MODE); 00354 } 00355 wait(0.3); 00356 } 00357 00358 if(y>(_y1+(_dy*2)+14) && y<(_y1+(_dy*2)+34) && x>200) // + COMPRIMENTO FITILHO 00359 { 00360 y=0; x=0; 00361 if (COMP_FIT<250) 00362 { 00363 COMP_FIT+=1; 00364 lcd.SetBackColor(LCD_COLOR_WHITE); 00365 lcd.SetTextColor(LCD_COLOR_BLACK); 00366 sprintf((char*)text, " %d ", COMP_FIT); 00367 lcd.DisplayStringAt(0, _y1+(_dy*2)+28, (uint8_t *)&text, CENTER_MODE); 00368 } 00369 wait(0.1); 00370 } 00371 00372 if(y>(_y1+(_dy*2)+40) && y<(_y1+(_dy*2)+60) && x>200) // - COMPRIMENTO FITILHO 00373 { 00374 y=0; x=0; 00375 if (COMP_FIT>100) 00376 { 00377 COMP_FIT-=1; 00378 lcd.SetBackColor(LCD_COLOR_WHITE); 00379 lcd.SetTextColor(LCD_COLOR_BLACK); 00380 sprintf((char*)text, " %d ", COMP_FIT); 00381 lcd.DisplayStringAt(0, _y1+(_dy*2)+28, (uint8_t *)&text, CENTER_MODE); 00382 } 00383 wait(0.1); 00384 } 00385 00386 if(y>(_y1+(_dy*3)+14) && y<(_y1+(_dy*3)+34) && x>200) // + VELOCIDADE CABO 00387 { 00388 y=0; x=0; 00389 if (VELO_CABO<9900) 00390 { 00391 VELO_CABO+=100; 00392 lcd.SetBackColor(LCD_COLOR_WHITE); 00393 lcd.SetTextColor(LCD_COLOR_BLACK); 00394 sprintf((char*)text, " %d ", VELO_CABO); 00395 lcd.DisplayStringAt(0, _y1+(_dy*3)+28, (uint8_t *)&text, CENTER_MODE); 00396 } 00397 wait(0.1); 00398 } 00399 00400 if(y>(_y1+(_dy*3)+40) && y<(_y1+(_dy*3)+60) && x>200) // - VELOCIDADE CABO 00401 { 00402 y=0; x=0; 00403 if (VELO_CABO>4000) 00404 { 00405 VELO_CABO-=100; 00406 lcd.SetBackColor(LCD_COLOR_WHITE); 00407 lcd.SetTextColor(LCD_COLOR_BLACK); 00408 sprintf((char*)text, " %d ", VELO_CABO); 00409 lcd.DisplayStringAt(0, _y1+(_dy*3)+28, (uint8_t *)&text, CENTER_MODE); 00410 } 00411 wait(0.1); 00412 } 00413 00414 if(y>270) // sair 00415 { 00416 y=0; x=0; 00417 EE_WriteVariable(VirtAddVarTab[0], VOLTAS_CABO); 00418 EE_WriteVariable(VirtAddVarTab[1], VOLTAS_FIT); 00419 EE_WriteVariable(VirtAddVarTab[2], COMP_FIT); 00420 EE_WriteVariable(VirtAddVarTab[3], VELO_CABO); 00421 sair=1; 00422 } 00423 } 00424 } 00425 00426 void status(void) 00427 { 00428 COND_ANT = CONDICAO; 00429 00430 lcd.SetBackColor(LCD_COLOR_WHITE); 00431 lcd.SetTextColor(LCD_COLOR_BLUE); 00432 00433 if (!sn_porta) { CONDICAO = 7; } 00434 if (!bt_emerg) { CONDICAO = 8; } 00435 00436 //CONDICAO = 0; 00437 00438 switch (CONDICAO) 00439 { 00440 case 0: 00441 lcd.DisplayStringAt(0, 225, (uint8_t *)" POSICIONAR ", CENTER_MODE); 00442 lp_vermelha = 0; 00443 break; 00444 case 1: 00445 lcd.DisplayStringAt(0, 225, (uint8_t *)" PRONTO ", CENTER_MODE); 00446 lp_vermelha = 0; 00447 break; 00448 case 6: 00449 lcd.DisplayStringAt(0, 225, (uint8_t *)" FIM ", CENTER_MODE); 00450 lp_vermelha = 0; 00451 break; 00452 case 7: 00453 lcd.DisplayStringAt(0, 225, (uint8_t *)"PORTA ABERTA", CENTER_MODE); 00454 break; 00455 case 8: 00456 lcd.DisplayStringAt(0, 225, (uint8_t *)" EMERGENCIA ", CENTER_MODE); 00457 break; 00458 default: 00459 lcd.DisplayStringAt(0, 225, (uint8_t *)"EM TRABALHO ", CENTER_MODE); 00460 lp_vermelha = 1; 00461 break; 00462 } 00463 00464 while (CONDICAO == 8) 00465 { 00466 lp_vermelha = 1; 00467 wait(0.4); 00468 lp_vermelha = 0; 00469 wait(0.4); 00470 if (!bt_emerg) { CONDICAO = 8; } else { CONDICAO = 0; } 00471 } 00472 00473 CONDICAO = COND_ANT; 00474 00475 if(y>140 && y<180) // ZERAR PRODUÇÃO 00476 { 00477 x=0; y=0; 00478 PRODUCAO = 0; 00479 EE_WriteVariable(VirtAddVarTab[4], 0); 00480 } 00481 sprintf((char*)text, " %d ", PRODUCAO); 00482 lcd.DisplayStringAt(0, 95, (uint8_t *)&text, CENTER_MODE); 00483 00484 if (y>270) // CONFIGURAÇÕES 00485 { 00486 x=0; y=0; 00487 tela_config(); 00488 tela_principal(); 00489 wait(1); 00490 } 00491 } 00492 00493 00494 int main() 00495 { 00496 int_ts.attach(&proc_ts, 0.05); 00497 ts.Init(lcd.GetXSize(), lcd.GetYSize()); 00498 00499 HAL_FLASH_Unlock(); 00500 EE_Init(); 00501 EE_ReadVariable(VirtAddVarTab[0], &VOLTAS_CABO); 00502 EE_ReadVariable(VirtAddVarTab[1], &VOLTAS_FIT); 00503 EE_ReadVariable(VirtAddVarTab[2], &COMP_FIT); 00504 EE_ReadVariable(VirtAddVarTab[3], &VELO_CABO); 00505 EE_ReadVariable(VirtAddVarTab[4], &PRODUCAO); 00506 00507 tela_principal(); 00508 00509 dir_ama=1; 00510 00511 while(true) 00512 { 00513 status(); 00514 while (POSICIONADO < 1) 00515 { 00516 CONDICAO = 0; status(); 00517 00518 if ( bt_posic && sn_porta && bt_emerg ) 00519 { 00520 while (bt_posic) {} 00521 00522 ena_cabo=1; 00523 RODA_SERVO(2000, 9000, PPV_BOB, 3); // REPOSICIONA BOBINA 00524 00525 RODA_SERVO(2000, 9000, PPV_AMA, 4); // REPOSICIONA AMARRA 00526 00527 if ( sn_cabo && sn_ama ) { POSICIONADO = 1; CONDICAO = 1; status(); } 00528 } 00529 } 00530 00531 if (!sn_ama) { POSICIONADO = 0; } 00532 00533 if ( bt_pausa && sn_porta && bt_emerg ) 00534 { 00535 while (bt_pausa) {} 00536 00537 CONDICAO = 2; status(); 00538 ena_cabo=1; 00539 wait(0.1); 00540 00541 DESLOC = ((float)PPV_BOB*((float)VOLTAS_CABO/10))+200; 00542 RODA_SERVO(2000, VELO_CABO, (int)DESLOC, 0); // Processa cabo 00543 if ( PARADA_SERVO == 5 ) // Se parada correta no cabo, continua ciclo 00544 { 00545 CONDICAO = 3; 00546 vl_pesca=1; // Aciona PESCA 00547 RODA_SERVO(4000, 9000, PPMM_AVA*COMP_FIT, 1); // Processa avanço 00548 vl_pesca=0; // Recua PESCA 00549 wait(0.2); 00550 if ( PARADA_SERVO == 1 ) // Se parada correta do avanço, continua ciclo 00551 { 00552 CONDICAO = 4; 00553 DESLOC = (float)PPV_AMA/2; 00554 RODA_SERVO(5000, 9900, (int)DESLOC, 1); // Processa pré amarra 00555 if ( PARADA_SERVO == 1 ) // Se parada correta da pre amarra, continua ciclo 00556 { 00557 CONDICAO = 5; 00558 vl_corta=1; // Aciona FACA 00559 DESLOC = ((PPV_AMA*VOLTAS_FIT)-(float)PPV_AMA/2)+200; 00560 RODA_SERVO(5000, 9900, (int)DESLOC, 2); // Processa restante da amarra 00561 vl_corta=0; 00562 if ( PARADA_SERVO == 5 ) { CONDICAO = 6; PRODUCAO++; EE_WriteVariable(VirtAddVarTab[4], PRODUCAO); status(); } // Se parada correta da amarra, indica FIM (Condição 6) 00563 while (sn_porta){} // Espera abrir a porta 00564 CONDICAO = 1; status(); 00565 } 00566 } 00567 } 00568 vl_corta=0; // Recua FACA 00569 vl_pesca=0; // Recua PESCA 00570 } 00571 00572 } 00573 }
Generated on Tue Jul 19 2022 14:09:58 by
![doxygen](doxygen.png)