• Nenhum resultado encontrado

5.2 Modelos formais de NCSs CAN com offset dinâmico, relógios e barramento

5.2.1 Modelagem da arquitetura SC-A

O modelo do NCS CAN com arquitetura SC-A (Figura 5.3(a)) é constituído pelos autômatos: tarefa aquisição e controle; tarefa atuação; controlador CAN e arbitragem. Cada malha de con- trole j possui os autômatos tarefa de aquisição e controle, tarefa de atuação e controlador CAN.

Esses autômatos são gerados automaticamente pela ferramenta UPPAAL. O código UPPAAL do modelo é apresentado na seção D.1 do Apêndice D.

(a) Tarefa aquisição e controle. (b) Controlador CAN.

(c) Arbitragem. (d) Tarefa atuação.

Figura 5.3: Conjunto de Autômatos Temporizados para o modelo de NCS CAN na arquitetura SC-A.

O ciclo de operação de uma malha j é iniciado no autômato tarefa de aquisição e controle (Figura 5.3)(a). Esse autômato possui dois relógios locais: Resp_F - usado para marcar o período (h - período de amostragem da saída do processo) e o offset da malha, e para contar o tempo de resposta fim a fim do ciclo de operação da malha, e Resp_CA - usado para marcar o tempo de computação da tarefa de aquisição Cs e contar o tempo de resposta da mensagem controlador-atuador (mcaj).

O primeiro ciclo de operação é liberado no lugar Inicio com um offset variando de 0 a h. Os próximos ciclos são iniciados periodicamente no lugar EsperAtivTarefa. Após iniciado, a tarefa de aquisição é executada (lugar Exec_Tarefa_S_C) e, em seguida, a tarefa de controle. O autômato permanece nesse lugar durante Cs+Cc unidades de tempo e requisita a transmissão da

mensagem controlador-atuador (mcaj) com identificador i, modelada pelo canal ReqTxMsg[i]!.

A finalização da transmissão dessa mensagem é indicada por um sinal via o canal broadcast RxMsg[i]?. Após receber esse sinal, ocorrerá uma transição para o lugar commited Tx_Fim e, imediatamente, uma transição para o lugar Esper_Fim. Nessa transição, o relógio Resp_CA é zerado. O autômato permanece no lugar Esper_Fim até receber um sinal por meio do canal Fim[j]? enviado pelo autômato tarefa de atuação (Figura 5.3(d)) indicando o fim do ciclo de operação da malha j. Nesse caso, ocorrerá uma transição para o lugar commited Fim_Ciclo e, imediatamente, uma transição para o lugar EsperAtivTarefa, onde permanecerá até que um novo ciclo de operação da malha seja iniciado, ou seja, quando o relógio Resp_F for igual a h. Se a condição Resp_F > DM for satisfeita durante o ciclo de operação da malha, o autômato alcançará o lugar N_Escalon indicando que o deadline fim a fim da malha não foi cumprido. A transição para o lugar N_Escalon poderá ocorrer em duas situações: quando o autômato estiver no lugar Tx_Msg_CA (significa que a mensagem está pronta para ser transmitida ou em transmissão) ou no lugar Esper_Fim (Esperando o fim da tarefa de atuação, ou seja, o fim do atual ciclo de operação da malha). Em ambos os casos, ocorrerá uma transição para o lugar commited P_Deadlinee, imediatamente uma transição para o lugar N_Escalon. Nessa última transição, os relógios Resp_F e Resp_CA são zerados.

O autômato tarefa de atuação (Figura 5.3(d)) possui o relógio local Comp_A, que é usado para marcar o tempo de computação da tarefa de atuação (Ca). Esse autômato espera no seu lugar inicial a recepção da mensagem controlador-atuador com identificador f, que é modelada pelo canal RxMsg[f]?. Após receber a mensagem, a tarefa de atuação é executada durante Ca unidades de tempo. Em seguida, envia um sinal via o canal Fim[j]! para o autômato tarefa de aquisição e controle indicando que o ciclo de operação da malha j foi finalizado.

A comunicação via rede CAN é modelada por dois autômatos: controlador CAN (Figura 5.3(b)) e arbitragem (Figura 5.3(c)). Para cada mensagem no sistema, a ferramenta UPPAAL gera um autômato controlador CAN. Enquanto que, existe apenas um autômato arbitragem no sistema.

O autômato controlador CAN (Figura 5.3(b)) modela o comportamento temporal da mensa- gem de dados de acordo com a especificação do protocolo CAN. O autômato possui um relógio local Com usado para marcar o tempo de transmissão da mensagem de dados e o intervalo entre mensagens. Inicialmente, o autômato controlador CAN está no lugar inicial N_Req. Esse lugar representa o estado em que o controlador CAN do nó não recebeu uma requisição de transmis- são de mensagem. Quando o autômato receber uma requisição de transmissão de mensagem via o canal ReqTxMsg[i]? enviado pelo autômato tarefa, uma transição do lugar N_Req para o lugar committed C1 e, imediatamente, uma transição para o lugar BufferTx será liberada, o sinal TxMsg! será enviado para o autômato arbitragem (Figura 4.1(c)) e o array Arb[i], inde- xado com o valor do identificador da mensagem mi, será ajustado para ’1’, indicando que a

mensagem está pronta para entrar no processo de arbitragem. Assim que a mensagem vencer o processo de arbitragem, o autômato arbitragem sincronizará com o autômato controlador CAN via o canal Sucess_Arb[i]?, a transição para o lugar Tx_Msg será liberada e o relógio Com será zerado. O autômato permanecerá nesse lugar até o relógio Com marcar Cm unidades de tempo (modelado pela invariante de estado Com <= Cm e o guarda Com == Cm), indicando que a mensagem foi transmitida com sucesso. Então, a transição para o lugar IFS será liberada, o sinal RxMsg! será enviado para o autômato tarefa e o relógio Com e a variável Arb[i] serão zerados. O lugar IFS representa o intervalo entre mensagens com duração de três tempos de bit (T IF S = 3 ∗ τbit). Assim que o relógio Com marcar três tempos de bit, a transição para o lugar

committed N_Req será liberada e a informação de que o barramento está livre será enviada para o autômato arbitragem por meio do canal Ack[i]!.

O controle de acesso ao meio é modelado pelo autômato arbitragem (Figura 5.3(c)). O lugar inicial N_Req_Tx_Msg representa o estado onde não existe nenhuma mensagem pronta para ser transmitida. Assim que pelo menos um controlador CAN tiver alguma mensagem pronta para ser transmitida, o autômato receberá um sinal via o canal TxMsg? emitido pelo respectivo autômato controlador CAN. Então, a transição para o lugar committed Arbit será liberada e a variável ID será zerada. A variável ID, assim como as variáveis i e f (usadas nos autômatos ta- refa de aquisição e controle, tarefa de atuação e controlador CAN) representam o identificador da mensagem mi. No lugar Arbit, a mensagem com maior prioridade que requisitou uma trans-

missão será escolhida para ser transmitida. Para isso, o array Arb[ID] será verificado item por item, com o índice ID variando de 0 à n-1, onde n equivale ao número de identificadores (men- sagens) do sistema. Os identificadores das mensagens são ordenados de forma crescente. A mensagem com maior prioridade possui ID = 0, e a mensagem com menor prioridade ID = n-1. Então, o primeiro elemento do array Arb[ID] com valor maior que 0 vencerá o processo de arbitragem, e um sinal via o canal Sucess_Arb[ID]! será enviado para o autômato controlador CAN que transmitirá a mensagem com identificador ID. O autômato permanecerá no lugar Tx_Msgaté receber o sinal de reconhecimento via Ack[ID]?, indicando que a mensagem foi transmitida com sucesso e que o barramento já está livre novamente para iniciar um novo pro- cesso de arbitragem. Então, a variável ID será zerada e o autômato retornará para o lugar Arbit, onde verificará se existe alguma mensagem pendente para ser transmitida. Caso não exista, o autômato retornará para o seu lugar inicial N_Req_Tx_Msg.