# Canais

> Os canais abstratos pelos quais um modelo é definido (número, nome, apelido, escopo do apelido, função, tipo, unidade de engenharia, cor e grupo do gráfico) e a origem, o apelido e o valor ao vivo que cada unidade vincula por trás deles.

Um **canal** é um ponto abstrato do modelo. Datalogs, receitas, avaliações, ocorrências, painéis, dashboards e relatórios referenciam apenas canais, nunca tags, e é isso que mantém toda unidade do modelo compatível por construção. A tela **Canais** (Process > modelo > Definição > Canais) carrega as duas metades do assunto: em cima os canais pelos quais o modelo é definido, embaixo as unidades e, ao lado delas, as configurações da linha escolhida, seja a declaração de um canal, seja a tabela de vínculos de uma unidade. O cabeçalho diz "O que este modelo mede e comanda, e de onde cada unidade lê isso." e conta os canais e as unidades.

Ler exige Ver modelos; toda edição exige Gerenciar o Process e uma estação destravada. A tela veste a forma que toda tela de Definição compartilha (veja [Definição](process-definition#the-one-shape-of-the-five-screens)).

## Definição do modelo: a tabela de canais {#model-definition-the-channel-table}

O cabeçalho diz "Ela vale para todas as unidades: um canal acrescentado ou removido aqui muda a tabela de todas elas." e carrega **Canal**, que acrescenta uma linha.

| Comando | O que faz | Fica cinza quando | Não é desenhado quando |
| --- | --- | --- | --- |
| **Canal** | Acrescenta um canal nomeado com o primeiro "Canal N" livre e numerado com o menor número livre, no fim da lista; a linha nova fica escolhida, com as configurações dela ao lado, e rolada até ficar à vista. | A estação está travada. | O papel não tem Gerenciar o Process (a tela inteira fica então somente para leitura). |
| **Mover o canal para cima** / **Mover o canal para baixo** (linha) | Move a linha uma posição; todo canal mantém o seu número. | A linha já é a primeira ou a última. | |
| **Remover** (linha, tinta de perigo) | Remove o canal do modelo e de toda unidade (abaixo). | | |

Toda linha carrega a declaração inteira. Os mesmos campos abrem por inteiro na coluna de configurações quando a linha é escolhida, cada um sobre a frase que diz o que ele decide; os dois lugares editam o mesmo canal, então uma mudança num deles aparece no outro.

| Campo | O que é | Valores / padrão | Efeito |
| --- | --- | --- | --- |
| **Nº** | O número de canal fixo, atribuído por você: a referência humana estável que sobrevive a renomeações e reordenações, mostrada como `Ch<n>` onde quer que canais sejam listados ("Ch1 · Setpoint"). | Um inteiro de 1 para cima, único no modelo; o menor número livre na criação. | As execuções gravadas o mantêm, e mover a linha nunca o muda. Um número que outro canal já tem é recusado no campo e dito sob a tabela: "O nº 3 já pertence a 'Flow'. Um número nomeia um canal só, então 'Valor de setpoint' fica no nº 1."; um número abaixo de 1 responde "Um número de canal começa em 1, então 'Valor de setpoint' fica no nº 1." |
| **Nome** | A referência fixa que todo artefato do modelo usa: "Os datalogs, as receitas, as avaliações e toda execução registrada nomeiam o canal por este nome." Também o ponto de endereço de cada unidade `Process.<Model>.<Unit>.Channels.<Name>` e a propriedade `Channels.<name>` que uma condição de ocorrência lê. | Texto livre; "Canal N" na criação. | Uma renomeação segura: a frase sob o campo prevê as referências, e a confirmação reescreve os endereços, as colunas de datalog, os valores de receita, os critérios e as entradas de apelido que apontam para o canal, além das referências `Channels.*` daquele canal nas condições de ocorrência do modelo. Dois nomes que se higienizam no mesmo identificador (letras e dígitos mantidos, o resto `_`, um dígito inicial com `_` na frente) são recusados: "O nome 'X' mapeia para a referência de ocorrência 'Channels.Y', já usada por 'Z'." Desabilitado sem Gerenciar o Process e enquanto travado. |
| **Apelido** | "O nome que o operador lê. Em branco, mostra o nome do canal. Nada referencia o apelido, então mudá-lo não reescreve nada." O nome de exibição válido no modelo inteiro. | Texto livre; em branco (o texto de exemplo mostra o nome). | A coluna acrescenta "Mostrado ao operador como X." Toda superfície ao vivo, toda reprodução e todo relatório leem o apelido em vigor; endereços nunca. |
| **Escopo do apelido** | Se uma unidade pode nomear este canal do jeito dela. A célula oferece **Modelo inteiro** ou **Cada unidade**; a coluna escreve as duas respostas por extenso: "Um para o modelo inteiro" e "Cada unidade define o seu". | As duas respostas; "Um para o modelo inteiro". | "Uma unidade que pode nomeá-lo faz isso ao lado dos vínculos dela ou por um conjunto de apelidos." Com a resposta do modelo inteiro, a célula Apelido da unidade recusa a edição, um conjunto de apelidos não oferece nem escreve entrada para o canal, e nada é lido sob um nome por unidade, mesmo onde um vínculo ainda guarde um; voltar atrás restaura o que estava lá. |
| **Função** | "O que o modelo pode fazer com este canal: ler, escrever ou os dois." | **Somente leitura** ("Amostrado, desenhado e avaliado. Nenhuma receita o escreve."), **Somente escrita** ("Alvo de receita. Nada o amostra de volta."), **Leitura e escrita** ("Escrito pelas receitas e amostrado de volta: o setpoint de sempre."); Somente leitura. | A função decide quais origens uma unidade pode vincular (um canal amostrado precisa de uma origem legível; um só de comando, de uma origem gravável), se receitas podem mirar o canal, e se os gráficos o desenham. |
| **Tipo** | A categoria grossa do valor: "Uma unidade só pode vincular uma tag cujo valor caiba nesta categoria." | **Booleano**, **Inteiro**, **Número decimal**, **Texto**, **Data e hora**; Número decimal. | Booleano aceita uma tag booleana, Inteiro qualquer família de inteiro, Número decimal qualquer número, Data e hora um DateTime, Texto qualquer origem. Uma origem vinculada que não caiba, tag ou variável, é sinalizada na linha da unidade. |
| **Unidade de engenharia** | "Em que toda leitura deste canal é escrita. Deixada vazia, a leitura sai sem unidade." | Texto livre; em branco (texto de exemplo "nenhuma"). | Impressa depois de toda leitura, nas réguas do gráfico e nas exportações. Sob o campo, a coluna mostra uma leitura de amostra do tipo do canal com essa unidade de engenharia, escrita como a leitura ao vivo do canal numa unidade ("Lê-se como 24,53 bar"). |
| **Cor** | A tinta com que todo gráfico do modelo desenha este canal: uma amostra de cor para escolher e o hexadecimal para ler, digitar, colar ou limpar. | Uma cor em hexadecimal, como `#D62728`, ou em branco (texto de exemplo "paleta"). | Em branco, a linha vai para a paleta, que dá uma cor estável a partir do lugar do canal entre os canais desenhados; a amostra sempre mostra a tinta em vigor, e é emoldurada de outro jeito enquanto ela é dada pela paleta ("Nenhuma cor declarada: a paleta distribui esta. Escolha uma para torná-la a cor do canal." contra "A cor que este canal declara. Limpe o hex para devolver a linha à paleta."). A tinta resolvida é congelada em toda execução, então uma curva gravada a mantém depois de o modelo ser repintado ou excluído. Um gráfico que você mesmo compôs mantém a cor dele. |
| **Grupo** | A faixa do gráfico empilhado em que este canal é lido; o campo oferece os grupos que o modelo já nomeia e aceita um novo. | Texto livre; em branco (texto de exemplo "sem grupo"). | Canais que nomeiam o mesmo grupo compartilham uma faixa e um eixo de valores, todas as faixas ao longo do eixo de tempo único, e a régua da faixa carrega o nome do grupo e a unidade de engenharia em que os canais dela concordam. Em branco, o canal entra na faixa que os canais sem grupo compartilham. |

A ordem das linhas é só ordem de exibição: um canal carrega o número dele onde quer que caia, então a coluna do número pode honestamente ler 1, 5, 2. Toda lista do modelo que mostre canais segue esta ordem, e escreve esse número na etiqueta do canal como Ch1, Ch5, Ch2 antes do nome.

A gravação é a última linha de defesa das duas regras: um número repetido que tenha chegado até ela por outro caminho é recusado com "O número de canal *N* está em mais de um canal. No modelo, cada número é de um canal só.", e dois nomes que se juntam numa referência só, com "Mais de um canal mapeia para a referência de ocorrência 'Channels.*canal*'."

### A coluna de configurações de um canal {#the-settings-column-for-a-channel}

Sob os campos, a coluna desenha o gráfico que toda unidade deste modelo vai pôr na tela: todo canal legível em força total sobre um traçado de amostra, feito pelo mesmo construtor com que o cartão Canais de um painel é desenhado. Sob ele, "A cor e o grupo decidem como este canal é desenhado em todo gráfico do modelo." e onde o canal escolhido cai: "Lido na faixa Pressão, numa escala própria.", "Lido na faixa de cima, com os canais que não nomeiam grupo.", "Lido junto com todos os outros canais, numa escala só.", ou "Um alvo de receita não é amostrado, então nenhum gráfico o desenha." para um canal Somente escrita.

### Remover um canal {#removing-a-channel}

**Remover** confirma com o alcance contado antes de qualquer coisa se mover: "Remover o canal 'Flow' (nº 3) de todas as unidades deste modelo? Isso também remove 2 colunas de datalog, 1 setpoint de receita e 3 vínculos de unidade. Isso não pode ser desfeito." (ou "Nada mais o referencia. Isso não pode ser desfeito."). Os botões dizem **Remover** e **Manter o canal**. A remoção varre colunas de datalog, setpoints de receita, alvos de segmento, vínculos de unidade, critérios de avaliação (um critério que referenciava o canal como canal de referência perde essa referência) e entradas de apelido. Uma gravação recusada devolve tudo.

## Por unidade: a lista de unidades {#per-unit-the-units-list}

A área de baixo lista as unidades do modelo na ordem delas, com **Gerenciar unidades** na ponta do cabeçalho dela (ele abre a página do modelo, onde as unidades são acrescentadas, nomeadas e removidas).

| Coluna | O que mostra |
| --- | --- |
| **Unidade** | O nome da unidade. |
| **Vínculos** | A cobertura lida a partir do modelo: "Nenhum canal ainda", "6 vinculados, nenhum faltando" ou "4 vinculados, 2 faltando" na tinta de cautela. |

Só a unidade escolhida monta linhas e amostra valores; as demais linhas não custam nada.

## A tabela de vínculos da unidade escolhida {#the-binding-table-of-the-picked-unit}

Escolher uma unidade abre a tabela de vínculos dela na coluna de configurações ("Unidades · Unidade 1"): uma linha por canal do modelo, na ordem dos canais.

| Coluna | O que é | Efeito |
| --- | --- | --- |
| **Canal** | `Ch<n> · Nome`. | Somente leitura. |
| **Função**, **Tipo** | A função e a categoria do canal, com as mesmas palavras da tabela de canais acima. | Somente leitura. |
| **Origem** | A única origem de valor que o canal lê ou escreve nesta unidade: uma tag do [Connector](connector) ou uma variável da [Logic](logic), nunca as duas. | A lista oferece **(nenhuma)**, depois toda tag habilitada de um dispositivo habilitado como "Driver · Dispositivo · Tag" e, em seguida, toda variável como "Variável da Logic · Nome" (ou "Variável da Logic · Pasta / Nome" quando arquivada numa pasta, então duas variáveis de mesmo nome se distinguem), reduzidas ao que a função pode usar: um canal amostrado recebe origens legíveis; um canal Somente escrita, origens graváveis; uma variável e (nenhuma) servem para os dois. Escolher confirma na hora. Um canal sem vínculo amostra como lacuna, nunca como erro. |
| **Apelido** | "O nome sob o qual esta unidade lê o canal. Em branco, volta ao nome do próprio canal." | Editável apenas onde o escopo do canal é "Cada unidade define o seu"; fora disso a célula fica desabilitada e a dica dela diz "Este canal mantém um nome só para todas as unidades. Mude isso na tabela de canais acima." Definir um apelido num canal sem vínculo cria a linha do vínculo; o nome em vigor é fotografado em toda execução. |
| (ícone de alerta) | Mostrado quando a origem vinculada não cabe no tipo do canal: uma tag cujo tipo de nó não cabe nele, ou uma variável cuja categoria de saída declarada não cabe. Uma origem que a estação não resolve não carrega tipo com que discordar, e fica sem marca. | Dica: "O tipo de Tag 'String' não é compatível com o tipo de canal 'Número decimal'." ou "O tipo de variável 'Texto' não é compatível com o tipo de canal 'Número decimal'." |
| **Escrita compartilhada** | Para um canal gravável, as outras unidades cujo vínculo para um canal gravável resolve para a mesma origem: nomes de unidade neste modelo, "Modelo · Unidade" entre modelos. | Duas unidades que compartilham uma origem de escrita não podem executar juntas: o segundo Iniciar é recusado pelo nome. Leituras nunca compartilham. |
| **Valor** | A leitura ao vivo da origem vinculada, amostrada a cada 500 ms enquanto esta tabela está aberta e escrita no formato de número da estação ([Idioma e formatos](settings-localization)): um número inteiro sem fração, um decimal com as casas decimais da estação, uma data e hora nos formatos da estação. | Somente leitura. |
| **Limpar vínculo** (linha, tinta de perigo) | Limpa as duas origens da linha. | O apelido fica. |

Uma origem que a estação não oferece mais (uma tag ou variável removida, ou uma tag cuja chave outra tag agora disputa) fica na linha como "Tag indisponível · chave" ou "Variável indisponível · chave", desabilitada, com o motivo "Esta origem não está mais disponível; limpe-a ou substitua-a." Uma origem que a função do canal deixou de oferecer (um canal Somente escrita vinculado a um ponto somente leitura, por exemplo) fica nomeada do mesmo jeito, com "Este canal só comanda, e esta origem não pode ser escrita. Limpe-a ou substitua-a." ou o equivalente para leitura. Uma linha assim só pode ser limpa ou substituída.

Toda edição de vínculo salva sozinha pelo modelo. Enquanto a estação está travada, a escrita é recusada ("A configuração está travada enquanto uma Unidade está em execução.") e a célula volta atrás, então os vínculos de uma unidade em execução não podem mudar sob ela; uma execução que já grava mantém as origens que resolveu no Início. Uma edição que chega à estação depois de o modelo ter sido recarregado por baixo é recusada com "A configuração da unidade mudou. Revise o vínculo e tente de novo." Uma linha que acabe nomeando as duas origens ao mesmo tempo nunca chega ao banco: "O vínculo do canal '*nome*' aponta ao mesmo tempo para uma Tag e para uma Variável. Escolha um dos dois."

### Aplicar um conjunto de apelidos {#applying-an-alias-set}

Quando o modelo tem conjuntos de apelidos (Preparação > Apelidos), um seletor e **Aplicar** ficam sob a tabela: "Aplique aos apelidos acima um conjunto nomeado de nomes de canal. Aplicar este conjunto a uma unidade sobrescreve todos os apelidos daquela unidade, então o que ele não nomeia volta ao nome do próprio canal. As edições feitas à mão prevalecem até você aplicar de novo." Aplicar é uma sobrescrita completa e visível dos apelidos da unidade: um canal que o conjunto nomeia toma aquele nome (criando a linha do vínculo quando o canal não tem vínculo), um canal que o conjunto deixa de fora tem o apelido limpo, e um canal cujo escopo é "Um para o modelo inteiro" fica inteiramente em paz. Um procedimento também pode fixar um conjunto, que é aplicado quando o procedimento é preparado na unidade; veja [Conjuntos de apelidos](process-aliases).

## O que esta tela não faz {#what-this-screen-does-not-do}

- Ela não declara unidade nenhuma: acrescentar, nomear e remover uma unidade é a tabela Unidades da página do modelo ([Unidades](process-units)).
- Ela não grava nada: quais canais uma execução grava, e de quanto em quanto tempo, é um [datalog](process-datalogs); os alvos de uma receita ficam na [receita](process-recipes).
- Ela mostra o valor ao vivo apenas da unidade escolhida, e nunca escreve um valor: um canal gravável é escrito por uma receita, por um componente de dashboard ou por um ponto de comando.
- Cor e Grupo são os padrões do modelo para todo gráfico do modelo; um dashboard que você compôs mantém a tinta que você escolheu nele.
- Ela não muda uma unidade em execução: toda escrita é recusada enquanto a estação está travada.
