INÍCIO > Fórum > controladores SlimLine e Netsyst (LogicLab) > Módulos de expansão de velocidade de aquisição de entrada digital
- Este tópico tem 4 respostas, 3 participantes e foi atualizado pela última vez 9 anos, 3 meses atrás da Sergio Bertana.
-
autorPublique
-
Agosto 8, 2012 em 8: 58 pm #35265Anônimoinativo
Olhando para a folha de dados de hardware dos módulos slimline, você vê que existem entradas chamadas de alta velocidade, qual a diferença em relação às outras entradas disponíveis?
Se você quiser ler pulsos de codificador com a freqüência máxima de 200Hz, você também pode usar entradas de velocidade não alta?
Agosto 9, 2012 em 6: 40 am #37367Sergio BertanaAdministrador do fórumAs entradas de alta velocidade são feitas com optoacopladores muito rápidos e podem adquirir sinais de entrada com frequência máxima de 50 Khz. Todas as outras entradas possuem optoacopladores lentos e podem adquirir sinais de entrada com frequência máxima de 10 Khz. Porém, além do limite de velocidade elétrica, é necessário entrar na lógica de operação do módulo de aquisição para entender suas possibilidades e limites.
Um filtro digital de 5 mS é configurado em todas as entradas (mesmo as rápidas) que limita a frequência máxima de aquisição a 200 Hz. O filtro foi inserido para cortar os sinais de rebote (Debouncing) dos contatos elétricos, um PLC deve adquirir sinais que chegam de transdutores eletromecânicos e devem garantir sua correta aquisição.
Nas entradas rápidas existe um circuito de contagem que usa o sinal antes do filtro permite gerir um codificador de quadratura com uma frequência máxima igual à típica do optoacoplador.
Agosto 9, 2012 em 6: 52 am #37368Sergio BertanaAdministrador do fórumMas, para responder à sua pergunta, lembro que o FB existe na biblioteca de blocos de funções IOEncoder, codificador incremental sobre E / S (veja extrato manual) Ao conectar duas entradas digitais a este bloco de função, é possível adquirir um encoder incremental nelas.
Naturalmente, a frequência máxima que você pode gerenciar depende da velocidade com a qual o bloco de função é executado, supondo que você use as duas entradas do módulo da CPU para a aquisição (Elas não têm filtro) criando um programa ladder simples como o do manual, você pode insira o programa na tarefa rápida e rodando-o a cada 1 ms você pode gerenciar encoders com frequência máxima de 200 Hz (Veja nota de aplicação).
Você também pode realizar a aquisição de entrada direta através do bloco de funções SysGetPhrDI, obtenha a entrada digital periférica e, em seguida, mapeie as entradas para várias instâncias do bloco de funções IOEncoder gerenciamento de vários codificadores.
Janeiro 11, 2015 em 9: 45 am #38634Maurizio ContiparticipanteEstou adquirindo uma bateria DI com ela SlimLine a partir do seguinte código:
PARA i: = 0 PARA 21 DO
(* CASO I DE
0..5: DIN [i]: = SysCPUDI [i];
6..21: DIN [i]: = SysDI00 [i-6];
END_CASE; *)CASO I DE
0: DIN [0]: =% IX255.0;
1: DIN [1]: =% IX255.1;
...
21: DIN [21]: =% IX0.15;
END_CASE;
END_FOR;Embora o CASE não comentado funcione, quando tento compactar o código (código comentado), recebo os seguintes erros: SysCPUDI => Variáveis complexas não podem ter imagem de processo
SysDI00 => Variáveis complexas não podem ter imagem de processoNo entanto, acessar o elemento da matriz SysDI00 dentro da janela de observação não causa problemas. O que estou fazendo errado ?
Também lhe pergunto, se você deseja adquirir as DIs via Modbus é aconselhável / preferível usar o Read Input Status (FC = 02) ou colocá-las em uma variável interna e acender com a função Read Holding Registers (FC = 03)?
Janeiro 12, 2015 em 1: 54 pm #38635Sergio BertanaAdministrador do fórumO problema é com a forma como a imagem do processo de E / S é tratada, você pode encontrar mais informações em este tema. Na prática, as entradas digitais são adquiridas pelo sistema operacional na tarefa Slow e transferidas para as variáveis UDINT SysCPUDI e SysDIxx, a seguir são transferidas para a tabela de variáveis BOOL% IXxx.
Quando um programa se refere a uma variável% IXxx LogicLab verifica qual tarefa o programa está executando e se for uma tarefa Lenta, ele se refere à variável real, se for a tarefa Voltar ele executa uma cópia da variável real em uma variável de suporte criando uma nova imagem do processo.
A imagem do processo vamos chamá-la de cópia, ela é feita automaticamente apenas nas variáveis% IXxx, então a solução para o seu problema é rodar o programa na tarefa Slow.
Com referência à aquisição da Modbus, o comando 16 # 02 Ler o status de entrada que 16 # 03 Leia registros de espera, eles têm aproximadamente o mesmo comprimento em bytes no quadro de resposta, portanto, no nível do quadro, eles são comparáveis. Então, é claro, o primeiro retorna um array de BOOLs para você, enquanto o segundo retorna uma ou mais palavras que você ainda terá que desempacotar para obter os valores nas variáveis BOOL.
-
autorPublique
- Você deve estar logado para responder a este tópico.