Aplicações: Cruise Control – CBDT – QoS em CBabel Alexandre Sztajnberg
description
Transcript of Aplicações: Cruise Control – CBDT – QoS em CBabel Alexandre Sztajnberg
Aplicações:Cruise Control – CBDT – QoS em CBabel
Alexandre Sztajnberg
2o Workshop do Projeto VASPDPG-TI CNPq 552192/02-3
Novembro / 2004IC/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
engineOn
engineOff
accelerator
breack
engine loop getThrottle setThrottle getSpeed
enableControl
disableControl
recordSpeed
clearSpeed
correta
sleep 500 setSpeed
carInput
on
off
resume
cruiseInput
carSimulator
speedController
cruiseController
splitter
speedControlPace
carController
tranco
Configuração proposta originalmente
breack
accelerator
engineOn
engineOff
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
engineOn
engineOff
accelerator
breack
engine loop
throttlespeed setThrottle
enableControl
disableControl
recordSpeed
clearSpeed
correta
sleep 500
setSpeed
on
off
resume
cruiseInput
carSimulator
speedController
cruiseController
splitter
speedControlPace
carController
tranco
Configuração atual...
incompletaincompleta
Conector splitter (/* 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)
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-modmodule 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