# Controle deslizante de setpoint

> Um cursor entre dois extremos: arrastar prepara o valor, a tecla o escreve, e no resto do tempo o cursor acompanha a planta.

**Controle deslizante de setpoint** move um setpoint por gesto em vez de digitação. A
proteção dele contra o único acidente que um controle deslizante pode ter é a regra de dois
passos: **arrastar prepara, a tecla escreve**. Mover o cursor não muda nada fora da tela, ele
só declara o valor que está sendo pedido, e a planta é tocada quando o operador pressiona a
tecla de envio ao lado. Uma manga cruzando uma tela de toque termina numa soltura como
qualquer outro arrasto, então escrever ao soltar enviaria exatamente o gesto que ninguém
quis. É um componente de *Controle*; um novo ocupa 6 × 1 células.

O controle não desenha leitura nenhuma; componha um [Valor](component-value) ao lado do
percurso se o número tiver de estar na tela.

## Dados {#data}

| Campo | O que ele faz | Valores | Padrão |
|---|---|---|---|
| Endereço | O endereço com raiz, na Logic, em que o setpoint cai e de onde ele é lido de volta: uma variável de memória ou uma tag escrevível. A lista é estreitada para pontos escrevíveis. | Texto livre; sugestões de pontos escrevíveis | vazio |

## Formato {#format}

| Campo | O que ele faz | Valores | Padrão |
|---|---|---|---|
| Decimais | Casas decimais com que o valor preparado e a linha de resposta são escritos, os dois lugares em que este controle escreve um número. Em branco segue a preferência decimal da estação. Contagens fora da faixa são tomadas na borda e o painel diz isso. | de 0 a 15, ou em branco | em branco |

## Percurso {#travel}

Onde o cursor pode ir e onde ele pode parar. Os extremos são declaração do próprio controle,
não uma leitura, e é por isso que o cursor continua percorrendo enquanto o ponto não diz nada.

| Campo | O que ele faz | Valores | Padrão |
|---|---|---|---|
| Mínimo | Onde o percurso começa. | Qualquer número finito | 0 |
| Máximo | Onde o percurso termina. Igual ou abaixo do mínimo não há o que percorrer: o painel avisa, e o controle fica desabilitado porque não enviaria nada. | Qualquer número finito | 100 |
| Passo | O menor movimento que o cursor faz. Toda posição em que ele para é um número inteiro de passos a partir do mínimo, então o valor enviado é sempre uma das paradas declaradas. Um passo que não divide o percurso é permitido, e o painel diz onde cai a última parada: o máximo então não é um valor que este controle envia. | Qualquer número finito positivo | 1 |

Sobre uma tag com o estágio **Limites** habilitado, o painel também avisa quando as paradas
do percurso passam desses limites, e diz quais são: um valor preparado fora deles é recusado
na tecla de envio em vez de ser tomado na borda.

## Como ele se comporta {#how-it-behaves}

- **Acompanhando a planta.** Sem nada preparado, o cursor fica na própria leitura do ponto.
  Uma leitura *fora* do percurso declarado, ou nenhuma leitura boa, não desenha **cursor
  nenhum**: um cursor estacionado no mínimo seria um setpoint que a tela inventou.
- **Preparar.** O primeiro toque congela o cursor onde o ponto o relatou por último e tinge o
  controle, que é o operador sendo avisado de que agora ele o está segurando. Arrastar prende
  às paradas e limita ao percurso. O valor preparado é só desta tela: ele não chega a nenhum
  outro circuito e nada o desenha como leitura.
- **A tecla de envio** nomeia a consequência dela antes de o dedo chegar: ela diz
  "Aplicar 42,5" enquanto um valor está preparado. Um valor enviado devolve o cursor ao
  ponto; um que o funil recusou continua preparado, para que a correção seja um empurrãozinho
  e não o gesto inteiro de novo. A largura dela nunca muda: desde o início ela guarda lugar para
  o valor mais largo que o percurso pode colocar nela, então preparar um valor ou soltar o cursor
  não move a tecla ✕ nem o percurso ao lado.
- **A tecla ✕** solta o cursor de volta para o ponto, a saída de uma preparação que ninguém
  quis. Ela está sempre na fileira (desabilitada enquanto nada está preparado), para que as
  teclas nunca se movam sob o dedo.
- Para um leitor de tela o controle diz o valor preparado ("42,5, ainda não enviado"), a
  leitura do próprio ponto, ou "Sem leitura", nunca um número que o ponto não relatou.

## Semântica da escrita {#write-semantics}

A tecla de envio escreve o valor preparado pelo funil único da lógica da estação. Um ponto que
não pode guardar um número responde com a recusa na linha do controle; um envio bem-sucedido
responde "42,5 escrito". Os valores obtidos por passos são limpos do resíduo binário antes do
envio, então um setpoint nunca chega à planta como `0.30000000000000004`. A autorização é
reconferida no toque, e a linha de resposta expira depois de alguns segundos. Um novo ocupa
uma linha de altura e, sob um título de canto, essa linha raramente deixa lugar para a
resposta: a resposta então toma o lugar do título enquanto aparece. Onde nenhum título fica
sobre o controle (nenhum foi escrito, ou ele cedeu a linha) e a célula continua sem linha para a
resposta, ela toma a legenda da tecla de envio; a tecla guarda a largura, então nem a tecla ✕
nem o percurso se movem (veja a
[página de dashboards](home#commands-permissions-and-the-lock-mark)).

Sobre uma tag com o estágio **Limites** habilitado, um valor preparado fora desses limites é
recusado do mesmo jeito, com uma razão que nomeia esses limites, e continua
preparado: do contrário a tag o tomaria na borda, e a linha anunciaria um valor que a planta
nunca recebeu.

Sobre um ponto que guarda inteiros (uma tag de tipo inteiro cuja Escala e Calibração deixam o valor como está, ou uma variável de memória que guarda inteiros), um valor preparado com fração é recusado do mesmo jeito em vez de arredondado ("Este ponto aceita um inteiro, então 2.5 não é escrito nele."), e continua preparado: sobre esse ponto, um passo com fração faz dessas paradas valores que nunca são enviados.

## Permissões e a trava {#permissions-and-the-lock}

Enviar exige a permissão do papel para operar dashboards. Travado, o percurso e a tecla de
envio ficam desabilitados e o componente ganha a marca de trava compartilhada com a razão na
dica dele (veja a [página de dashboards](home)). Um ponto vinculado que não consegue ler ganha
a marca compartilhada de leitura ruim; o controle em si continua usável, já que um setpoint é
um valor absoluto e não pede leitura nenhuma antes.

As seções compartilhadas Aparência, Identificação, Posição e camada e Ações estão descritas na
[página de componentes](components#the-shared-property-sections).
