• Nenhum resultado encontrado

4.4 Arquitectura de um nó (ECU)

4.4.1 Arquitectura do Communication Controller

4.4.1.6 Clock Synchronization

A sincronização de sistemas FlexRay, é um ponto crucial para protocolos indus- triais. Para uma operação correcta no FlexRay, cada nó tem que saber o tempo inicial, o tempo final e o número de slots que compõem as tramas. Desta forma, todos os nós necessitam de uma base temporal.

Diferenças de temperatura, flutuações nas tensões e tolerância nas fontes de sin- cronismo têm uma influência negativa na precisão dos tempos de relógio. A sin- cronização, é particularmente importante para aplicações em tempo-real e tempo- crítico. A taxa de transferência de dados entre os nós da rede depende muito da sincronização. Quanto maior for o desvio dos nós, menor é a janela de tempo em que os dados podem ser enviados e recebidos sem colisões. Além disto, o atraso da propagação do sinal tem também uma influência negativa. Mesmo no pior cenário, em que o relógio do transmissor está com um máximo de atraso, o reló- gio do receptor está com o máximo de avanço e o atraso de propagação do sinal está no seu máximo permitido, cada trama tem de ser reconhecida na trama cor- respondente. Portanto, o segmento network idle time tem que ser dimensionado. Como referido anteriormente, o FlexRay, é um protocolo determinístico baseado em TDMA onde cada nó sabe quando pode e deve enviar as respectivas tramas e símbolos [38] [40] [48].

Unidade de tempo do FlexRay

O FlexRay é um protocolo assente numa base de tempo global e no qual a gestão do tempo é crítica para o acesso ao meio. A hierarquia de temporização utilizada neste protocolo é composta pelos níveis: microtick, macrotick e ciclo de comunica- ção.

• Microtik

Nas redes que empregam como protocolo o FlexRay, a unidade mais básica de tempo é o microtick. Esta unidade deriva do oscilador local de um nó com um opcional prescaler. O comprimento do microtick varia de controlador para contro- lador, fazendo com que os controladores se afastem uns dos outros, no que diz respeito ao início do ciclo de comunicação. Desta forma podem ocorrer erros,

pelo que a existência de formas de sincronização é imperativa. Como exemplo do cálculo da duração de um microtick tem-se que, para um relógio nos 80MHz, sem usar um prescaler, a duração de um microtick (pdMicrotick) é de 12,5ns [38] [47].

• Macrotik

O macrotik nas redes FlexRay é composto por um número fixo de microtiks. O número de microticks que compõem um macrotick pode variar de acordo com as diferentes frequências que os nós podem adquirir. Portanto, numa rede, todos os macroticks têm a mesma duração dentro de uma certa tolerância. Assim, verifica- se que todos os nós da rede vão ter o mesmo número de macroticks durante um ciclo de comunicação [38] [47].

• Ciclo

Um ciclo consiste num determinado número (inteiro) de macroticks. O número de macroticks por ciclo deve ser idêntico em todos os nós da rede e deve permanecer de ciclo para ciclo [38].

A Figura 4.47 permite visualizar a diferença entre os três conceitos de uma forma mais clara.

• Tempo Global e Tempo Local

Nas redes FlexRay estabelecem-se diferentes níveis de representação do tempo para ajudar a rede a tornar-se sincronizada. No entanto, vai continuar a haver desfasamento do tempo local dos nós se não houver uma correcção aplicada aos mesmos. Isto, deve-se ao facto de não existir um ponto de referência global para o tempo. Em vez disso, existe um tempo local para cada nó. Esta é a ideia de tempo global do controlador, baseado em aspectos, tais como: última transição do macrotik e quando deve haver a próxima transição. Todos os nós recorrem a um algoritmo de sincronização para manterem uma visão do tempo global o mais exacto possível [5] [38].

Clock Synchronization Process e Macrotick Generation Process

A sincronização é obrigatória nas redes FlexRay, devido ao time-triggered utilizado pelas mesmas. A fim de prevenir a sobreposição dos tempos de transmissão, cada nó necessita de ter a mesma visão do tempo.

A sincronização do relógio no FlexRay consiste em dois processos, o clock synchro- nization process (CSP) e o macrotick generation process (MTG).

O clock synchronization process realiza o início do ciclo, a medição e armazena- mento dos valores de desvio e o cálculo dos valores do offset correction e rate cor- rection. Por sua vez, o macrotick generation process controla o ciclo e o contador de macroticks e é responsável pela aplicação dos valores de offset correction e rate correction.

Estes dois processos estão interligados entre si. Em simultâneo com o processo MTG, novos valores de medições são tomados pelo CSP, e estes valores, por sua vez, são utilizados para calcular novos valores de correcções. Por último, estes novos valores são aplicados e utilizados pelo MTG. Os dois diferentes tipos de correcção existentes na sincronização do relógio para este protocolo são:

• Offset correction (fase); • Rate correction (frequência);

O offset correction é o método mais intuitivo para corrigir o tempo local. É cal- culado o valor de correcção para o offset correction depois do segmento estático

no final de cada ciclo de comunicação. Cada valor de rate correction depende do tempo drift de dois ciclos de comunicação consecutivos. O valor de correcção para o rate correction só é calculado no final dos ciclos ímpares mas é sempre apli- cado, ou seja, calculado num ciclo ímpar, o valor é usado para o próximo ciclo par e ímpar.

O offset correction é executado no final dos ciclos ímpares dentro do segmento NIT mas calcula-se em todos os ciclos. Ajusta o comprimento de um macrotick dentro do NIT em conformidade com o novo valor de correcção, adicionando ou subtraindo microticks. O rate correction ajusta a duração média de um macrotick dentro de um ciclo de comunicação.

A relação entre MAC, MTG e CSP, bem como a relação do offset correction e rate correction é ilustrada na Figura 4.48 [38] [40] [42].

Figura 4.48: Relação entre MAC, MTG e CSP [38]. Cálculo do termo de correcção

A sincronização, tanto do offset correction como do rate correction, utiliza os micro- tiks como a mais pequena unidade de tempo.

Para o caso em que a trama de sincronização seja transmitida em ambos os canais, o algoritmo determina o valor de desvio mais baixo dos dois que será utilizado pelo algoritmo.

Para calcular os termos de correcção (em microticks), durante o Network Idle Time (NIT), o algoritmo utilizado é o fault-tolerant midpoint (FTM). Este algoritmo de-

termina o valor do parâmetro ’k’ com base nos valores de desvio medidos, Tabela 4.5. O ’k’ representa o número de valores que serão eliminados como mostra a Figura 4.49.

Tabela 4.5: Termos eliminados usando o algoritmo FTM [38]. Número de valores ’k’

1 – 2 0

3 – 7 1

>7 2

A partir da tabela anterior, com o valor de ’k’ já definido, resta efectuar o cálculo do valor de correcção do relógio. Assim, todos os valores de desvio devem ser ordenados para que depois sejam eliminados os valores mais altos e mais baixos da lista, como mostra a Figura 4.49. Como o valor de ’k=2’, os dois valores mais altos e mais baixos da lista são eliminados. Através dos valores seguintes (mais alto e mais baixo, depois dos eliminados) é calculada a média desses valores, o que representa o desvio dos nós no tempo global e serve como factor de correcção.

Figura 4.49: Algoritmo para o cálculo do valor de correcção (k=2) [38].

Os valores calculados serão depois comparados com os limites pré-definidos. Se cada um dos valores está dentro dos seus limites então diz-se que o nó está sincro- nizado. Caso contrário, uma condição de erro é detectada e as flags apropriadas são sinalizadas ou um procedimento pode ser posto em prática para mudar o va- lor da correcção para o seu limite ou predefinir outro valor. A Figura 4.50 mostra a correcção do relógio antes e depois de ser aplicado o algoritmo FTM [38] [47].

Figura 4.50: Correcção do desvio do relógio antes e depois de aplicar o algoritmo [50].