160 likes | 281 Views
Aplicações: Cruise Control – CBDT – QoS em CBabel Alexandre Sztajnberg. 2 o Workshop do Projeto VAS PDPG-TI CNPq 552192/02-3 Novembro / 2004 IC/UFF, Niterói. Agenda. Estado da aplicação do cruise control Adaptações para o CBabel Tools interação paralela guardas com portas assíncronas
E N D
Aplicações:Cruise Control – CBDT – QoS em CBabelAlexandre Sztajnberg 2o Workshop do Projeto VAS PDPG-TI CNPq 552192/02-3 Novembro / 2004 IC/UFF, Niterói
Agenda • Estado da aplicação do cruise control • Adaptações para o CBabel Tools • interação paralela • guardas com portas assíncronas • do/done com restrições de tempo • CBDT • Estado atual • QoS em CBabel • Objetivos • Estado atual
carInput splitter carController engineOn engineOff accelerator breack carSimulator engine loop getThrottle setThrottle getSpeed cruiseController enableControl disableControl recordSpeed clearSpeed correta cruiseInput on off resume tranco speedController setSpeed speedControlPace sleep 500 Configuração proposta originalmente
Mutex para 4 portas de saída possibilidades Rademaker: macro (escala bem?) Usar guardas uma variável “turn” um guarda por porta a ser mutex breack accelerator engineOn engineOff
Configuração atual... carController splitter carSimulator engine loop throttle speed setThrottle engineOn engineOff accelerator breack cruiseController enableControl disableControl recordSpeed clearSpeed correta cruiseInput on off resume incompleta speedController tranco speedControlPace sleep 500 setSpeed
( /* Sends the signal to the car engine and to the cruise control */ connector splitter-engineOff { // controles normais de um carro padrao in port oneway engineOff-in; out port oneway engineOff-out1; out port oneway engineOff-out2; interaction { engineOff-in > (engineOff-out1 || engineOff-out2); } } // splitter ) Conector splitter
cruiseControl-con ( connector Controller-br_disa { var int INACTIVE = int(0); var int ACTIVE = int(1); var int CRUISING = int(2); var int STANDBY = int(3); var int controlState = INACTIVE; // controles normais de um carro padrao in port oneway brake; // efeito produzido no cruise control out port oneway disableControl; interaction { brake > guard (controlState==CRUISING) { alternative (ground); before {controlState=STANDBY;} } > disableControl; } } // end Control )
carSimulator-mod module CarSimulator { var float throttle = float (0.0); //throttle setting 0.10 var int speed = int(0); //speed 0 .. 120 mph! var int distance = int(0); //miles*10 var int brakepedal = int(0); // brake setting 0..10 var int maxSpeed = int(120); var float maxThrottle = float(10.0); var int maxBrake = int(10); var float airResistance = maxSpeed/maxThrottle; //inverse air resistance factor var int ticksPerSecond = int(5); in port oneway setThrottle; } ) /** do { throttle=t; brakepedal=b; if (throttle<0.0) throttle=0.0; if (throttle>10.0) throttle=10.0; } **/
speedControl-con ( connector SpeedControl-setSp_setThrot { staterequired int DISABLED; //speed control states staterequired int ENABLED; staterequired int state; //initial state staterequired int setSpeed; //target cruise control speed staterequired int speed; // vem do modulo engine in port oneway setSpeed; out port oneway setThrottle; // !!!!! jogada com statereq interaction { setSpeed > guard (state==ENABLED) { before { error = setSpeed - speed / 6.0; steady = setSpeed / 12.0; speed = steady+error; // ja jogo o valor no modulo... } alternative (ground); } > setThrottle; //simplified feed back control } } )
Próximos passos • Terminar o modelo • Simular • Verificar o zoom...
CBDT • Eclipse 3.11 • Mais estável e flexível no gerenciamento de vários workspaces • Não usa EMF • Problemas reportados pelo André na 2.X persistem na 3.X • Estado • Editor (AntLR) • Árvore (com painéis de edição) • Verificação sintática e semântica (alguma) • Modelo em objetos e Persistência em XML • Perspectivas e Wizards
Perspectivas • Término do Editor… • Editor Gráfico • Gerente de Aplicações • ambiente de execução ? (JMX) • Integração com CBabel Tool • pelo XML? • Direto, gerando Maude?
QoS • Utilizar a sintaxe atual de QoS • Estender o parser atual em AntLR contemplando as construções de QoS • Criar a o modelo interno • Para permitir as traduções e verificações • Reproduzir os componentes de suporte a QoS (em Maude ?) • Para permitir verificações em um nível mais amplo • Uma aplicação de Vídeo-Conferência usando JMF
Estado • Leitura de artigos sobre CR-RIO, QoS, JMF e Vídeo Conferência • Estudo do Eclipse • BNF levantada (segundo os últimos artigos de CR-RIO) • Algum esforço (?) para inserir no AntLR do CBDT
Perspectivas • Semântica para os contratos de QoS • Semântica para o padrão de infra-estrutura • Ainda não temos fechado • o que exatamente verificar (que respostas queremos obter) • Absoluto (dá/não-dá), percentagens ? • Recursos mínimos para implantar um serviço (por exemplo minimizando o custo total? • Estabilidade? • o que podemos prever em termos de QoS para a operação ainda durante a especificação da arquitetura