# Calibração

> O estágio de Calibração de uma tag, o assistente de dois pontos passo a passo, o que o Aplicar faz e recusa, e o que a permissão Calibrar tags libera sozinha.

**Calibração** é o segundo estágio linear da [cadeia de valor](connector-value-pipeline) de uma tag numérica: `calibrado = escalado × Angular + Linear`, aplicado depois da Escala e antes de Leitura inválida, Limites e Decimais. Ele existe para que uma correção de como encontrado e como deixado, feita contra uma referência, seja registrada sem mexer na matemática de faixa da Escala, e é o único estágio que um papel com **Calibrar tags** pode editar sem **Configurar Connector**. Tanto a Escala quanto a Calibração carregam um assistente **Dois pontos**, que calcula o par a partir de dois pontos de referência.

## O estágio {#the-stage}

No cartão Conversão da página [Tags](connector-tags#the-conversion-card), o estágio mostra **Calibração** com a sua caixa de seleção (desligada por padrão), **Coeficiente angular (×)** (padrão 1), **Coeficiente linear (+)** (padrão 0), o botão **Dois pontos** no cabeçalho e o resultado corrente à direita: `= valor` enquanto o estágio se aplica, `→ valor` enquanto ele é ignorado. A grade do dispositivo mostra o mesmo par como **Calib. ×** e **Calib. +** e o resultado como **Calibrado**, editáveis só com Configurar Connector.

Um Angular igual a 0 é recusado onde é digitado: "Um fator de calibração 0 zeraria toda leitura. Digite o fator pelo qual multiplicar (1 mantém o valor)."

### Como uma edição de estágio é salva {#how-a-stage-edit-is-saved}

Edições de Escala e de Calibração não pegam carona no salvamento automático agrupado do dispositivo. Cada confirmação (a caixa de seleção, qualquer um dos campos) é gravada na hora e limitada ao estágio: só aquele estágio daquela tag é copiado para o dispositivo guardado, então uma edição de quem só calibra nunca leva junto um rascunho pendente de quem configura, e um salvamento automático do dispositivo inteiro rodando ao mesmo tempo nunca sobrescreve a correção. Uma confirmação recusada ou que falha recarrega aquele estágio do banco, então um valor rejeitado nunca fica na página; o motivo cai no feed de ações ("A edição do estágio não foi salva: …").

### Quem pode editar cada estágio {#who-may-edit-which-stage}

| Estágio | Campos manuais e caixa de seleção | Aplicar dos dois pontos | Mensagem quando é recusado |
| --- | --- | --- | --- |
| **Escala** | Configurar Connector | Configurar Connector | "A permissão “Configurar Connector” é necessária para editar o estágio de Escala." / "A permissão “Configurar Connector” é necessária para aplicar um ajuste de Escala." |
| **Calibração** | Calibrar tags ou Configurar Connector | Calibrar tags ou Configurar Connector | "A permissão “Calibrar tags” ou “Configurar Connector” é necessária para editar o estágio de Calibração." / "A permissão “Calibrar tags” ou “Configurar Connector” é necessária para aplicar um ajuste de Calibração." |

Acima da permissão, os dois estágios recusam enquanto uma execução segura a estação ("Termine a operação de Process ativa antes de editar este estágio." / "Termine a operação de Process ativa antes de aplicar este ajuste.") e enquanto o runtime está parado ("Runtime parado"). A permissão é lida de novo quando a edição é confirmada, e não apenas quando o campo foi desenhado.

## O assistente de dois pontos {#the-two-point-assistant}

Pressione **Dois pontos** no cabeçalho de um estágio e o assistente se abre sob o estágio como **Ajuste de dois pontos**. Ele nunca edita a tag enquanto está aberto; nada muda até você pressionar Aplicar ajuste. A primeira frase diz o que uma captura lê: "A captura usa a saída atual da Escala, antes da Calibração, dos Limites e das Decimais." ou "A captura usa a saída atual da Calibração, antes dos Limites e das Decimais." O botão não é desenhado para um papel que nunca poderá aplicar o estágio.

### Passo 1: dois pontos de referência {#step-1-two-reference-points}

Dois grupos de campos, **Ponto 1** e **Ponto 2**, cada um com **Esperado** (o valor que o estágio deveria produzir nesta referência) e **Lido** (o que o estágio produz ali hoje). Digite os dois como números finitos; qualquer outra coisa é marcada com "Digite um número finito." Em branco é permitido enquanto você trabalha. A ordem não importa, mas os dois valores esperados precisam ser diferentes e os dois valores lidos precisam ser distinguíveis.

### Passo 2: capturar ou digitar a leitura {#step-2-capture-or-type-the-reading}

**Capturar** preenche o Lido do ponto com a saída ao vivo do estágio neste instante e carimba a hora ("Capturado 14:02:33"); depois disso ele mostra **Capturar de novo**. Uma captura é recusada quando a leitura mais recente não tem comunicação boa ("É preciso uma leitura ao vivo com comunicação boa.") ou quando o estágio não tem valor finito ("O estágio selecionado não tem um valor ao vivo finito."). Digitar um Lido à mão limpa o carimbo de captura daquele ponto.

As duas leituras ficam presas aos coeficientes do estágio no momento em que foram tomadas. Se esses coeficientes mudarem debaixo de você (alguém edita o campo, outra janela aplica um ajuste), a próxima captura ou leitura digitada começa um par novo: o Lido do outro ponto e os dois carimbos são limpos, e o rascunho diz "Os ajustes do estágio mudaram depois da primeira leitura. Capture ou digite os dois valores lidos de novo."

### Passo 3: ler o veredito e a prévia {#step-3-read-the-verdict-and-the-preview}

Com os quatro valores presentes, o assistente avalia o rascunho numa cópia descartável da tag, então a prévia roda a matemática de produção. Um rascunho que não pode virar uma correção segura diz por quê, ao lado dos pontos:

| Mensagem | Causa |
| --- | --- |
| Digite os valores esperado e lido dos dois pontos. | Um campo está em branco. |
| A correção de dois pontos exige uma tag numérica. | A tag não é numérica. |
| Todos os valores dos pontos precisam ser números finitos. | Um valor é infinito ou não é um número. |
| Os valores esperados precisam ser diferentes. | Valores esperados iguais não definem reta. |
| Os valores lidos são iguais ou próximos demais para distinguir com segurança. | As leituras diferem por no máximo oito passos de ponto flutuante. |
| A diferença entre os pontos é grande demais para calcular com segurança. | Subtrair os pontos estourou a faixa. |
| O estágio selecionado tem coeficientes atuais inválidos. | O Angular ou o Linear atual do estágio não é finito. |
| A correção dos pontos produz coeficientes fora da faixa suportada. | A própria correção não é finita. |
| Compor a correção com o estágio atual passa da faixa suportada. | O par composto não é finito. |
| O estágio resultante não pode ser invertido com segurança. | O Angular composto é 0 ou pequeno demais para dividir, o que tornaria as escritas impossíveis. |
| Não foi possível avaliar o candidato pela cadeia da tag. | A prévia não conseguiu produzir valores finitos. |

Um rascunho válido mostra a tabela **Prévia do ajuste**: uma linha por ponto de referência e uma para a leitura **Ao vivo**, com a saída do estágio **Antes** do ajuste, **Depois** dele, o valor **Esperado** e, só na Escala, **Valor final**, o valor depois de todos os estágios seguintes. A linha Ao vivo mostra traços enquanto a tag não tem leitura. A tabela escreve cada número como o cartão Conversão escreve um estágio, no formato de número da estação ([Idioma e formatos](settings-localization)): as casas que o valor tem, até seis, e numa tag Float o valor que o float guarda (239,05, e não 239,050003). Uma leitura capturada entra na caixa Lido com os mesmos dígitos e sem a marca de agrupamento, para que a caixa leia de volta o número que mostra.

O que o assistente calcula: uma correção com inclinação `(Expected2 − Expected1) ÷ (Read2 − Read1)` e deslocamento `Expected1 − slope × Read1`, aplicada sobre a saída atual do estágio e depois composta com o par atual do estágio no Angular e no Linear candidatos que o substituem. Um estágio desligado conta como o par identidade (1, 0) para esse fim, e o Aplicar liga o estágio.

### Passo 4: aplicar ou cancelar {#step-4-apply-or-cancel}

**Aplicar o ajuste** só fica habilitado quando todo campo é válido, não há erro de captura, a prévia é válida e o papel e a estação permitem; caso contrário, o motivo é impresso acima dos botões. Pressioná-lo grava o par candidato só naquele estágio, liga o estágio, relata "Ajuste de dois pontos de Calibração aplicado a 'Temperature'." (ou "da Escala …") e fecha o assistente. Ele recusa, deixando o rascunho aberto para nova tentativa, quando o estágio mudou desde a prévia ("Os ajustes do estágio mudaram depois da prévia. Revise os pontos e tente de novo; nada foi aplicado."), quando o dispositivo guardado mudou fora deste rascunho ("Os ajustes gravados do estágio mudaram fora deste rascunho. Recarregue e tente de novo; nada foi aplicado."), quando a tag ou o dispositivo dela não existe mais, ou quando a estação recusa mudanças. "Aplicando…" aparece enquanto isso roda; toda recusa diz "nada foi aplicado" e os coeficientes anteriores ficam.

**Cancelar** fecha o assistente e descarta o rascunho. Selecionar outra tag também o fecha; um rascunho vive só enquanto o assistente dele está aberto.

## O que a permissão Calibrar tags libera sozinha {#what-calibrate-tags-allows-on-its-own}

Um papel com Calibrar tags e sem Configurar Connector vê o Connector inteiro em somente leitura, com um furo aberto para a calibração:

- Na página de uma tag, a caixa de seleção do estágio de Calibração, o Angular e o Linear dele e o assistente de dois pontos com o Aplicar estão vivos. Todo outro campo fica inerte, com a nota "Mudar o Connector exige a permissão “Configurar Connector”." acima do cartão Geral, e os campos de Escala levam a mensagem da Escala como dica.
- As células Cal × e Cal + da grade do dispositivo não são editáveis por este papel; a calibração passa pela página da tag.
- Nenhum verbo de criar, habilitar, desabilitar, excluir, escrever, descobrir ou substituir é desenhado.

Calibrar tags é um subconjunto de Configurar Connector: um papel que tem o Configurar tem tudo isto. O catálogo de permissões está em [Permissões](users-permissions).
