Composição de modelos que misturam blocos de tempo discreto e contínuo no Simulink (R2016b). (a) Modelo básico. (b) Simulação do modelo básico. Crédito:Benveniste et al.
Os sistemas híbridos são sistemas que exibem comportamento dinâmico contínuo e discreto, permitindo mais flexibilidade na modelagem de fenômenos dinâmicos. Linguagens de modelagem de sistemas híbridos são amplamente utilizadas para o desenvolvimento de sistemas ciber-físicos, em que o software de controle interage com dispositivos físicos.
Pesquisadores da Inria e ANSYS / Esterel Technologies apresentaram recentemente uma nova abordagem para projetar e implementar linguagens de sistemas híbridos. Seu método, delineado em um artigo em Processos do IEEE , é baseado em princípios de linguagem síncrona e técnicas de compilação associadas.
Ferramentas de modelagem de sistema híbrido evoluíram de meras interfaces para solucionadores numéricos, em seguida, tornaram-se linguagens totalmente desenvolvidas para a programação de modelos executáveis de sistemas dinâmicos. Esses modelos são geralmente simulados, testado, depurado e verificado em diferentes estágios de sua cadeia de desenvolvimento.
Em métodos de última geração, compiladores normalmente verificam os modelos de origem, produzir representações intermediárias e gerar código sequencial para simulação eficiente ou execução em plataformas de destino. Contudo, essas etapas de compilação costumam ser difíceis de projetar e implementar.
O estudo recente focou no design, semântica e implementação de linguagens de modelagem de sistemas híbridos. É baseado no pressuposto de que tais linguagens são linguagens de programação com semântica de sistemas híbridos, portanto, apresentando uma série de novos desafios.
"O resultado final é que a complexidade das linguagens de modelagem de sistemas híbridos reais torna a definição de uma semântica estática e dinâmica formal abrangente difícil de alcançar, "os pesquisadores escrevem em seu artigo." Longe de serem preocupações filosóficas abstratas, essas dificuldades têm consequências práticas. "
Para enfrentar esses desafios, os pesquisadores se propuseram a identificar um kernel de linguagem mínimo de construções de programação ortogonal que seja expressivo o suficiente para escrever modelos híbridos realistas. Eles também desejavam definir semânticas estáticas e dinâmicas detalhadas desta linguagem, bem como suas etapas de compilação.
"O resultado é uma linguagem de modelagem de sistemas híbridos em que construções de programação síncrona podem ser misturadas com equações diferenciais ordinárias (ODEs) e eventos de cruzamento zero, e um tempo de execução que delega sua aproximação a um solucionador numérico pronto para uso, "os pesquisadores explicam em seu artigo." Propomos uma semântica ideal baseada em análises não padronizadas, que define a execução de um modelo híbrido como uma sequência infinita de etapas de tempo infinitesimalmente pequenas. "
A estrutura semântica proposta pelos pesquisadores pode ser usada para especificar e provar três etapas essenciais de compilação. Primeiro, isso leva a um sistema de tipo que garante que um sinal de tempo contínuo nunca seja usado em situações onde um sinal de tempo discreto é esperado, e vice versa. Além disso, garante a ausência de loops combinatórios, bem como a geração de código programado estaticamente para execução eficiente.
“Nossa abordagem foi avaliada em duas implementações:a linguagem acadêmica Zélus, que estende uma linguagem que lembra o Lustre com Odes e eventos de cruzamento zero, e o protótipo industrial Scade Hybrid, uma extensão conservadora do Scade 6, "os pesquisadores escrevem em seu artigo.
Comparado a outras ferramentas e linguagens, como Ptolomeu, a abordagem usada pelos pesquisadores favorece a detecção de modelos inseguros em tempo de compilação. A consequência disso é que alguns bons modelos são rejeitados, principalmente porque os sistemas de tipos resultantes não são expressivos o suficiente. Outros estudos experimentais podem ajudar a determinar se esses sistemas de tipo são excessivamente restritivos.
"A descoberta de dificuldades numéricas está relacionada à rigidez permanece em tempo de execução, e descarta a necessidade de disciplinas de programação excessivamente restritivas em contextos industriais, "os pesquisadores escrevem em seu artigo." Realizando análises ricas em tempo de compilação, enquanto restringe os usuários, pode detectar erros nos modelos antecipadamente; também permite remover verificações de tempo de execução e programar estaticamente o cálculo da função de etapa e as ações de redefinição, o que leva a um código mais eficiente. "
© 2018 Science X Network