# Linhas seriais

> O nó de linha serial do Modbus RTU, do driver Generic serial and TCP, do driver SCPI instruments e do driver Omron: a tupla física que todo dispositivo do barramento compartilha, seus tempos, seus estados, a varredura de unidades, os dispositivos arquivados sob ela e o que fica travado enquanto a linha está habilitada.

Uma **linha serial** é um barramento serial físico: uma porta COM com sua velocidade em baud e seu formato de byte, compartilhados por todo dispositivo ligado a ela. Linhas existem sob quatro drivers, Modbus RTU, Generic serial and TCP, SCPI instruments e Omron, entre o driver e seus dispositivos, então a árvore fica Modbus RTU > Linha > Dispositivo > Tag. Uma linha pertence para sempre ao driver sob o qual foi criada: dispositivos de drivers diferentes nunca compartilham uma linha, e uma porta pertence a uma linha seja qual for o driver dela. Uma linha Modbus RTU também é dona do modo de transmissão, do timeout de resposta e do ritmo que toda unidade dela compartilha; numa linha do driver genérico ou do driver SCPI cada dispositivo diz no próprio painel como suas mensagens terminam e quanto espera, e a linha guarda só a porta, a velocidade e o formato (veja [Generic serial and TCP](driver-generic-serial-tcp#serial-line) e [SCPI instruments](driver-scpi#serial-line)). Numa linha do driver Omron cada CLP responde ao próprio número de unidade e define o próprio timeout de resposta (veja [Omron](driver-omron#host-link-on-a-serial-line)). A página é visível com Ver Connector; todo campo e todo verbo dela exigem Configurar Connector.

## Criar uma linha {#creating-a-line}

Três gestos criam uma, sob um driver já acrescentado: **Acrescentar linha** na tabela Linhas seriais da página do driver, **Novo…** > `<Driver>` > **Nova linha serial** no rodapé da coluna, e **Acrescentar linha** no menu de contexto do driver. A linha nova se chama "Nova linha" (depois "Nova linha 2"), pega a primeira porta serial que o Windows relata e que nenhuma outra linha usa (ou COM1, COM2 e assim por diante quando nenhuma está livre), começa com 9600 baud e 8E1 (e, numa linha Modbus RTU, um timeout de resposta de 1000 ms e um intervalo entre transações de 0 ms), e nasce **desabilitada**, para que você configure a tupla física antes de a porta abrir. O feed diz isso: "Linha 'Nova linha' acrescentada, desabilitada. Configure os ajustes físicos dela e depois habilite." A linha não é aberta: aparece destacada na tabela Linhas seriais da página do driver, para onde a tela vai a partir do Novo… ou do menu de contexto, e o **Abrir** da linha dela a edita. Uma linha do driver Omron começa em 7E2, o ajuste de fábrica de uma porta Host Link.

## O cabeçalho {#the-header}

O nome, o ponto de saúde, a palavra de estado e a tupla física numa linha só ("COM3 · 9600 · 8E1 · 1000 ms", e "COM3 · 9600 · 7E1 · ASCII · 1000 ms" numa linha ASCII; "COM3 · 9600 · 8E1" numa linha do driver genérico ou do driver SCPI, que não tem timeout) e, quando a porta falhou, o texto de diagnóstico em vermelho abaixo. As palavras de estado são Desligado, Ocioso, Conectando…, Conectado e Falha na porta; o que cada uma significa está em [Habilitação e saúde](connector-health#serial-line-states). Abaixo dele, os dispositivos da linha que têm erro próprio são nomeados ("1 dispositivo com erro: Meter"); enquanto a própria porta está em falha, os dispositivos apontam para a linha e nenhum é nomeado.

## A barra de comandos {#the-command-bar}

| Comando | O que faz | Esmaecido quando (situação) | Não aparece quando (papel) |
| --- | --- | --- | --- |
| **Habilitar** | Deixa os dispositivos tomarem o barramento e trava a tupla física. | A linha já está habilitada, a tupla dela está inválida, uma varredura está rodando, ou a estação recusa mudanças. | Sem Configurar Connector. |
| **Desabilitar** | Fecha o barramento para todo dispositivo nele sem mexer nos interruptores Habilitado deles, e destrava a tupla. | A linha está desligada, uma varredura está rodando, ou a estação recusa mudanças. | Sem Configurar Connector. |
| **Excluir a linha** (tinta de perigo, à direita) | Pergunta antes. Numa linha vazia: "Excluir 'Linha'? Esta linha não tem dispositivos. Isso não pode ser desfeito." Numa linha com dispositivos: "Isso também exclui os 3 dispositivos dela e todas as tags deles." Depois da exclusão, o driver da linha fica selecionado. | Uma varredura está rodando, ou a estação recusa mudanças. | Sem Configurar Connector. |

O menu de contexto da linha acrescenta **Acrescentar dispositivo** antes dos mesmos Habilitar, Desabilitar e Excluir.

## O cartão Linha física {#the-physical-line-card}

"Um barramento serial físico: os ajustes de porta que toda unidade endereçada nesta linha compartilha." Numa linha do driver genérico ou do driver SCPI: "Um barramento serial físico: os ajustes de porta que os instrumentos dele compartilham, uma requisição por vez." Essa linha mostra só o nome, a porta, a velocidade e o formato; os campos marcados abaixo como só do Modbus RTU não aparecem nela. Uma linha do driver Omron diz "Um barramento serial físico: os ajustes de porta que os CLPs dele compartilham, cada um respondendo ao próprio número de unidade, uma requisição por vez." e mostra o mesmo.

| Campo | O que é | Valores / padrão | Efeito |
| --- | --- | --- | --- |
| **Nome** | O nome amigável do barramento, mostrado na árvore e no campo "Linha serial" de cada dispositivo. | Obrigatório; "Nova linha" na criação. | Editável enquanto a linha está habilitada. Em branco é recusado: "O nome da linha é obrigatório." O nome nunca entra num endereço: um dispositivo Modbus RTU é endereçado `Connector.ModbusRtu.<Device>.<Tag>`, sem segmento de linha. |
| **Porta serial** | A porta COM do Windows: física, virtual ou redirecionada. Um campo de texto com um seletor das portas que o Windows relata no momento; escolher uma preenche o campo. **Atualizar** relê a lista do sistema operacional sem substituir o que você digitou. Sem nada detectado, o seletor mostra uma entrada desabilitada, "Nenhuma porta detectada", e o campo diz "Nenhuma porta serial detectada. Digite uma à mão." | Obrigatório; na criação, a primeira porta livre detectada. | Travada enquanto a linha está habilitada. Uma porta pertence a uma linha, sem diferenciar maiúsculas de minúsculas, mesmo com as duas desabilitadas: uma segunda linha na mesma porta é recusada ao salvar. |
| **Velocidade em baud** | A velocidade do barramento. | Maior que zero; 9600. | Travado enquanto habilitada. Junto com o formato, fixa o silêncio automático entre quadros. |
| **Modo de transmissão** | Só no Modbus RTU. Como cada unidade do barramento enquadra suas mensagens: RTU, quadros binários com CRC, ou ASCII, texto de um dois-pontos até a quebra de linha com LRC. | RTU, ASCII; RTU. | Travado enquanto habilitada. Numa linha ASCII o **Formato serial** oferece também 7N2, 7E1, 7E2 e 7O1, e o silêncio **Automático** mostra 0 ms, porque um quadro ASCII termina na quebra de linha; uma nota sob o intervalo diz isso. Uma linha RTU recusa os formatos de 7 bits: uma linha ASCII com formato de 7 bits que volta a RTU mostra o formato vazio, e a linha só é salva quando um formato de 8 bits é escolhido. |
| **Formato serial** | Bits de dados, paridade e bits de parada. | 8N1, 8N2, 8E1, 8E2, 8O1, 8O2, e numa linha ASCII ou numa linha do driver genérico, do driver SCPI ou do driver Omron também 7N2, 7E1, 7E2, 7O1; 8E1. | Travado enquanto habilitada. |
| **Timeout de resposta (ms)** | Só no Modbus RTU. Quanto tempo uma unidade pode levar para responder antes de a requisição falhar. | De 100 a 60000; 1000. | Travado enquanto habilitada. Timeouts maiores acomodam equipamento lento, mas tornam mais demorado identificar unidades ausentes e concluir a descoberta, como o cartão diz. |
| **Intervalo mínimo entre transações (ms)** | Só no Modbus RTU. Um silêncio de linha inteira imposto do fim de uma transação tentada até o começo da próxima, para toda unidade, leitura e escrita, timeouts e falhas incluídos. | De 0 a 1000; 0. | Editável com a linha habilitada; a mudança vale sem ciclar a porta. Zero mantém o mínimo do protocolo. Duas leituras acompanham: **Automático**, o piso do Modbus RTU (3,5 caracteres na baud e no formato configurados até 19200 baud, 1,75 ms acima disso) e **Efetivo**, o maior entre o piso e o seu valor, nunca a soma dos dois. A nota diz para que serve: valores mais altos reduzem a vazão de toda unidade da linha, e isso é um recurso de compatibilidade, não um conserto para fiação, terminação, aterramento ou ruído. |

Três frases fecham o cartão: o resumo de saúde da linha ("Conectado · 2/2 dispositivos conectados", "Ocioso · nenhum dispositivo habilitado", "Conectado · 1 conectados · 1 com problemas"), quais campos estão editáveis agora ("Os ajustes físicos são editáveis enquanto a linha está desabilitada." ou "Desabilite a linha para mudar os ajustes físicos dela. O nome e o intervalo entre transações continuam editáveis com a linha no ar."; numa linha do driver genérico ou do driver SCPI, que não tem intervalo, "Desabilite a linha para mudar os ajustes físicos dela. O nome continua editável com a linha no ar.") e, numa linha Modbus RTU, o conselho sobre o timeout.

Um valor fora da faixa não é salvo, e o motivo cai no feed: "A porta serial é obrigatória.", "A velocidade em baud precisa ser maior que zero.", "O timeout de resposta precisa estar entre 100 e 60000 ms.", "O intervalo mínimo entre transações precisa estar entre 0 e 1000 ms." A caixa guarda o que foi digitado; a tupla do cabeçalho, a coluna **Parâmetros físicos** do driver e **Linha serial · fixa** de cada unidade seguem mostrando a linha como está salva, que é a linha com que o barramento trabalha. Uma linha com a tupla inválida não pode ser habilitada. Um salvamento que a estação recusa volta o cartão para os valores guardados.

## O cartão Descobrir unidades {#the-discover-units-card}

Desenhado só para Configurar Connector, e só numa linha Modbus RTU: "Sondagem sequencial somente leitura nesta linha física configurada." **Unit id inicial** e **Unit id final** (de 1 a 247, em ordem crescente; de 1 a 32 por padrão) delimitam uma sondagem de toda unidade da faixa pela tupla salva desta linha; **Descobrir** a inicia e vira **Cancelar**. A frase abaixo dos campos estima o pior caso ("32 sondagens · até cerca de 32,1 s, incluindo 4,011 ms de silêncio antes de cada sondagem.") ou nomeia o que está errado na faixa ("A faixa de unit id deve ser crescente."). Uma linha habilitada com pelo menos um dispositivo habilitado está em uso, e o cartão diz isso: "Esta linha está em uso. Desabilite-a antes da descoberta; o Ganter Lab não interrompe nem reabilita o barramento automaticamente." Uma edição pendente no cartão é salva antes de a varredura abrir a porta. A grade de resultados, **Unidades descobertas** (Unit ID, Dispositivo, Resultado, Acrescentar dispositivo ou Abrir), e a varredura em si estão em [Descoberta](connector-discovery#modbus-rtu).

## O cartão Dispositivos {#the-devices-card}

"Os unit ids precisam ser únicos nesta linha. Os ajustes físicos são herdados e não podem ser mudados aqui." **Acrescentar dispositivo** cria um dispositivo nesta linha sob o primeiro unit id livre de 1 a 247, destacado nesta tabela e rolado até ficar à vista ("Dispositivo 'Novo dispositivo' acrescentado em 'Linha 1'."); é recusado com "A linha 'X' já contém todos os unit ids válidos." quando nenhum está livre, e fica esmaecido durante uma varredura. A tabela lista **Dispositivo**, **Unit ID**, **Tags**, **Saúde** e as ações Abrir, Habilitar, Desabilitar e Excluir (as três últimas para Configurar Connector, todas esmaecidas durante uma varredura). A página do próprio dispositivo mostra a linha e a tupla dela como texto somente leitura; veja [Dispositivos](connector-devices#the-connection-card). Um dispositivo com erro próprio leva o marcador vermelho da árvore depois do nome.

Numa linha do driver genérico ou do driver SCPI o cartão diz "Todo dispositivo desta linha compartilha os ajustes da porta. Cada um diz no próprio painel como suas mensagens terminam e quanto espera por uma resposta." **Acrescentar dispositivo** cria um dispositivo desse driver na linha, sem unit id, e a tabela não tem a coluna **Unit ID**: quantos instrumentos for preciso compartilham a linha, distinguidos pelo que as requisições deles dizem.

Numa linha do driver Omron o cartão diz "Todo CLP desta linha compartilha os ajustes da porta e responde ao próprio número de unidade. Cada um diz no próprio painel quanto espera por uma resposta." **Acrescentar dispositivo** cria um CLP na linha com o primeiro número de unidade livre de 0 a 31, a cópia de um dispositivo pega o próximo livre, e a tabela tem a coluna **Unit ID**: até 32 CLPs compartilham a linha, cada um respondendo ao próprio número de unidade Host Link.

## O que uma linha não faz {#what-a-line-does-not-do}

Uma linha não aceita pastas: os dispositivos dela são arquivados pela linha e por mais nada, e o menu Mover para não é oferecido neles. Um dispositivo não pode ser movido para outra linha; Copiar dispositivo mantém a cópia na mesma linha, sob o próximo unit id livre numa linha Modbus RTU. A tupla não pode variar por dispositivo, e a porta nunca é aberta sem um dispositivo: uma linha habilitada sem nenhum dispositivo habilitado fica em Ocioso e não mantém sessão, o que é também o que torna seguro varrê-la.
