Respostas nos fóruns criados
-
autorPublique
-
Fevereiro 8, 2021 em 5: 58 pm em resposta a: Comunicação Modbus RTU com medidor de energia SDM120 #58986tommas.cavalliniparticipante
Em primeiro lugar, peço desculpas pela confusão: tenho que ler o EnergyMeter e as válvulas solenóide, sobre as últimas também devo escrever: já que as duas se comunicam em RTU achei que poderia perguntar aqui diretamente sem ter que abrir outro tópico.
Chegando até nós, não entendi a solução proposta: pensei em separar a fase de leitura e escrita não conectando os FBs em cascata. Na verdade, a leitura deve ser contínua enquanto a escrita ocorre apenas quando e se Eu quero mudar alguns parâmetros.
Fevereiro 8, 2021 em 11: 33 am em resposta a: Comunicação Modbus RTU com medidor de energia SDM120 #58983tommas.cavalliniparticipantePerfeito, agora meu problema está no gerenciamento do tempo de leitura e escrita de dez válvulas solenóides.
Se para a leitura basta associar o programa à tarefa Back de forma a ser realizada periodicamente, a escrita gostaria de poder realizá-la apenas seguindo uma condição particular: Vi que o LogicLab não fornece tarefas de evento, então como eu poderia fazer?
tommas.cavalliniparticipantePerfeito, tentei de tudo como você me explicou e deu certo, muito obrigado.
Mas agora estou com outro problema: fui solicitado a atrasar a leitura no Modbus para fazer uma leitura por minuto. Para isso pensei em atuar na voz Delay: é correto colocar um delay de 60 para o meu fim ou seria melhor colocar um eTON antes de Enable para atrasar com o timer?
Caso vá modificar o Delay (colocando 60), tendo dois modbusMasters em cascata, no item Delay do segundo FB devo colocar 61 (60 do anterior + 1 delay entre as duas leituras) ou só preciso inserir o atraso entre as duas leituras (1 seg) e na primeira deixe 60?
tommas.cavalliniparticipanteDigo de imediato que infelizmente a leitura dos valores do datataker não é bem sucedida se eu usar VarSwap (Pensei em usar isso no início, mas sai um número muito alto) enquanto se eu usar o FB BEArrayToVar funciona e me dá o valor lido corretamente.
Para o resto, 36 dos 40 estão em registros consecutivos, portanto, para esses, posso executar um único comando de leitura (especificando o primeiro endereço do qual iniciar em Endereço e em Pontos do ModbusMaster quantos dados desejo ler, no meu caso 36 * 2, 72). No buffer do ModbusMaster, colocarei um array que é capaz de conter 36 dados (chamado ArrayA para ser limpo), este array será conectado a BEArrayToVar na entrada Source e em Destination Vou colocar outro array (ArrayB) que conterá todos os valores lidos corretamente, certo?
Minha dúvida é: automaticamente, após cada leitura, os dados lidos vão para o ArrayA, ele é executado BEArrayToVar e é armazenado em ArrayB. No próximo ciclo de leitura, a segunda leitura de dados vai para ArrayA imediatamente após a anterior automaticamente e, em seguida, vai para ArrayB armazenado em uma linha, certo?
tommas.cavalliniparticipanteFiz uma comunicação Modbus TCP / IP com um datataker utilizando o SysTCPClient e ModbusMaster FBs, ao final da qual, uma vez que os dados foram recebidos em IEE754, fiz uma conversão com o BEArrayToVar FB.
Nesse ponto, o problema é que tenho que ler 40 valores do mesmo dispositivo e salvar cada um deles em uma variável própria: o que posso fazer?
Também vi o FB recomendado por ela, o ACModbus, mas o problema é que depois de ler essas variáveis devo necessariamente fazer a conversão com BEArrayToVar para cada uma delas individualmente e instanciar uma variável para cada um dos dados, então eu tenho medo de não poder usá-lo.
O que você recomenda que eu faça para resolver o problema?
Janeiro 28, 2021 em 11: 21 am em resposta a: Comunicação Modbus RTU com medidor de energia SDM120 #58894tommas.cavalliniparticipanteAgora surgiu o problema que, por meio da conexão ModBus RTU, também quero gravar dados. Então me perguntei: se para leitura usamos o varSwap FB para converter os valores para REAL, como posso fazer isso por escrito?
Pensei em inserir os valores a serem escritos no item Buffer do ModbusMaster FB, mas acho que entendi que não posso escrever um valor REAL e sim um valor no padrão IEE754, certo?
Como faço então a conversão reversa VarSwap?
Janeiro 15, 2021 em 6: 14 pm em resposta a: Comunicação Modbus RTU com medidor de energia SDM120 #58808tommas.cavalliniparticipanteEu tentei o método FB ModbusMaster cascata e funciona, muito obrigado pela ajuda!
Os seus vídeos e as suas explicações foram fundamentais sobretudo porque acabo de entrar no mundo dos PLCs, estou muito grato a ele. Caso eu tenha outras dúvidas, postarei no fórum que está muito bem feito e as respostas são mais rápidas do que esperava.
Janeiro 15, 2021 em 10: 36 am em resposta a: Comunicação Modbus RTU com medidor de energia SDM120 #58805tommas.cavalliniparticipanteOlá, entretanto, muito obrigado pela sua atenção. No meu projeto usei os FBs SysSerialPort e ModbusMaster e VarSwap.
Em seguida, tentei conectar outro ModbusMaster FB (que identifica o segundo SDM120 com o nó 2) usando o mesmo FB para a porta serial. Na porta EN do segundo ModbusMaster adicionei um eTON com um tempo de 200ms, mas sempre consigo ler apenas o primeiro (conectado ao primeiro ModbusMaster FB). Também tentei separar tudo em dois programas diferentes associando-os a tarefas diferentes, mas o resultado não muda, pelo contrário, nem lê mais o primeiro.
Como posso resolver? Agradecemos antecipadamente novamente.
-
autorPublique