INÍCIO > Fórum > obsoleto > SlimLine (CoDeSys) > Disponibilidade do protocolo Modbus em SlimLine CoDeSys
- Este tópico tem 20 respostas, 4 participantes e foi atualizado pela última vez 8 anos, 2 meses atrás da Sergio Bertana.
-
autorPublique
-
Fevereiro 13, 2015 em 10: 27 pm #35734Enrico Vivianiparticipante
O módulo "CODESYS" é definido como compatível com Modbus, mas não consigo encontrar uma biblioteca que suporte modbus RTU / ASCII RS485 Master. Você tem algum exemplo?
Fevereiro 17, 2015 em 11: 33 am #38738Sergio BertanaAdministrador do fórumAo contrário da linha programável com LogicLab, onde desenvolvemos e continuamos a desenvolver bibliotecas e programas de exemplo, na linha CODESYS, dada a grande difusão do meio ambiente, temos uma menor fertilidade criativa. Os usuários mais experientes já têm suas bibliotecas (que usam em outros produtos programáveis no CODESYS) e / ou encontram ideias na rede para começar.
Há muita literatura sobre Modbus na rede, no momento eu tentei portar o FB ModbusSlave do ambiente LogicLab para o ambiente CODESYS, aqui está oextrato do manual. Eu criei um projeto CODESYS que contém os dois exemplos mostrados no manual (a biblioteca com o bloco de funções está localizada na pasta de exemplos) (Download do projeto).
Fevereiro 17, 2015 em 4: 04 pm #38739Sergio BertanaAdministrador do fórumDia tranquilo hoje achei a hora de fazer a porta do FB ModbusMasteraqui está oextrato do manual. Eu também fiz um projeto simples, onde em um SlimLine os CEs mestre e escravo coexistem e os dois CEs conversam usando as duas portas seriais (Download do projeto).
Como você pode ver no exemplo em que o ModbusMaster FB Spy é ativado, desta forma através de um console espião (consulte o manual) é possível visualizar os frames de dados em trânsito. Esta solução é muito conveniente para entender quaisquer erros de protocolo (Screenshot).
Fevereiro 23, 2015 em 9: 09 am #38757AnthonyparticipanteNa biblioteca eSLineC2SysLib_A000 encontro os blocos funcionais SysTCPClient e SysTCPServer, nas bibliotecas Oscat acho que os blocos MB_Client e MB_Server podem ser usados ou é melhor usar as bibliotecas Elsist ?
Fevereiro 23, 2015 em 9: 53 am #38758Sergio BertanaAdministrador do fórumAs funções às quais você está se referindo não têm nenhuma relação com o Modbus, são funções do sistema para gerenciar conexões TCP. Para o modbus, nossos FBs são MobusMaster (equivalente a MB_Client) e MobusSlave (equivalente a MB_Server).
Ao contrário dos FB Oscat que são apenas TCP / IP e UDP, o nosso pode operar em qualquer fluxo de E / S (também a porta serial) e gerenciar todos os tipos 3 do Modbus (Ascii, RTU, TCP).
Dito isto, é de sua escolha qual FB usar, se usar nossos FBs pode nos pedir informações, se usar Oscat deve entrar em contato com o Sr. Oscat ...
Fevereiro 23, 2015 em 4: 51 pm #38762AnthonyparticipanteDesculpe, eu mencionei Oscat porque você mesmo na página 30/101 do manual de programação itate e pensei que era normal usar esses blocos, certamente não porque eu sei disso. Porém, não se preocupe, por mais sarcástico que você seja, continuarei perguntando, não fiquei ofendido.
Fevereiro 23, 2015 em 5: 14 pm #38763Sergio BertanaAdministrador do fórumMencionamos Oscats porque muitos fabricantes de produtos baseados no CODESYS fazem muitos alarmes. Essas bibliotecas representam um compromisso louvável no campo do software livre aplicado à automação industrial. Embora eu pessoalmente prefira "construir" minha biblioteca de funções e FBs, considero o trabalho realizado apreciável e aconteceu comigo referir-me ao Oscats para obter inspiração em necessidades particulares que então apliquei também para bibliotecas no LogicLab.
Quanto ao Modbus, nós o usamos no LogicLab há anos e era normal portá-lo para o CODESYS. o SlimLine O CODESYS foi projetado para ser "transparente" para a versão do LogicLab, tanto que fornecemos a ele o mesmo conjunto de funções e FBs embutidos presentes na versão do LogicLab.
O espírito do fórum é apoiar os clientes e, claro, podemos fazê-lo da melhor maneira somente se você usar nossas funções e FBs. Mas não queremos nem nos fechar no nosso pátio, e experiências com outras livrarias são bem-vindas, cada reportagem é um estímulo para buscar e melhorar.
Fico feliz que a piada que pareceu sarcástica para você (na verdade era para ser irônica) não te machucou, certamente não é minha intenção machucar as pessoas. Talvez Oscat seja o sobrenome de uma bela alemã ... e um telefonema também pode estar lá ...
Fevereiro 25, 2015 em 10: 50 am #38767AnthonyparticipanteVamos torcer para que não seja como Merkel, para falar de outra coisa, estava verificando os exemplos de Modbus master e slave que você publicou, tenho algumas dúvidas a respeito da aplicação para TCP / IP. A configuração consiste em três linhas de programa, o bloco Sysfopen que, eu acho que com o bloco Modbus mestre ou escravo, devemos usar também para o Modbus TCP, mas o SysSerialPort deve ser substituído? e se sim, com o quê?
Fevereiro 25, 2015 em 1: 55 pm #38768Sergio BertanaAdministrador do fórumVocê entendeu bem, com a função Sysfopen abra o fluxo de E / S de comunicação que é do tipo FILEP, o fluxo é então passado para o bloco de funções de gerenciamento do Modbus. Se o fluxo de I / O for serial, o FB deve ser usado como no exemplo SysSerialPort, se for um soquete TCP, o FB será usado SysTCPClient o SysTCPServer. Consulte o Manual de programação IEC61131-3 onde você encontrará exemplos de uso do mestre Modbus em conexões seriais e de cliente TCP, e do escravo Modbus em soquetes de servidor serial e múltiplos TCP.
Março 9, 2015 em 5: 18 pm #38791Enrico VivianiparticipanteOi, estou tentando usar as funções modbus com um dispositivo IME, o Nemo D4-Le. Além de não entender se a conexão é bem-sucedida ou não (sempre atinge o tempo limite), li no manual que o protocolo do dispositivo exige o uso de um CRC na transmissão da mensagem. Como posso implementar esta função?
Março 9, 2015 em 5: 51 pm #38792Sergio BertanaAdministrador do fórumO CRC faz parte do protocolo Modbus RTU e é gerenciado automaticamente pelo FB que o gera para o quadro de comando e o verifica no quadro de recepção. Os problemas de comunicação podem surgir de vários fatores: Você verificou as configurações da porta serial que são iguais às do módulo? O endereço do nó Modbus está correto? O endereço e o número de registros a serem lidos / gravados estão corretos? O código da função de leitura / gravação é gerenciado pelo instrumento? Ativando a entrada SpyOn do bloco de função, é possível enviar os frames Modbus enviados e recebidos pelo FB para o console espião (Veja em Manual de programação IEC61131-3 como usar o console de espionagem). Se você me enviar o relatório de espionagem talvez eu possa direcioná-lo para resolver o problema.
Março 11, 2015 em 4: 07 pm #38796Enrico VivianiparticipanteSim para todas as perguntas, no dispositivo não consigo definir o número de bits e paradas, mas já tentei todas as velocidades e paridades possíveis.
Março 12, 2015 em 8: 22 am #38798Sergio BertanaAdministrador do fórumSe tudo estiver correto, deve funcionar, mas como não funciona, só posso lhe dar instruções se você me enviar uma captura de tela da captura do pacote no console espião (Tema).
Março 12, 2015 em 10: 29 am #38799Enrico VivianiparticipanteComo não sei se a ferramenta IME funciona, tentei de outra forma. Eu tenho uma CPU SlimLine LogicLab MPS050 com RS485, conectei o módulo de CPU CODESYS ao módulo de CPU LogicLab, configurei o serial dos dois módulos com as mesmas características (19200, N, 8,1) nó 2, obviamente existe um programa estúpido na CPU LogicLab , ele grava o valor 100 na variável de palavra MW100.100 no primeiro loop e não faz mais nada.
No módulo CODESYS CPU existe apenas o programa (baixado do seu site) com a função master, eu configurei a porta (tentei COM2 e COM3 e COM4), os mesmos parâmetros, utilizo a função 16 # 03 para ler a variável 100 mas sempre recebo o erro 10007050. Talvez esteja faltando alguma coisa, anexei imagem de tela Programa CODESYS com Spy on Toolly.
Março 12, 2015 em 11: 33 am #38800Sergio BertanaAdministrador do fórumComo você pode ver pelo screenshot da espionagem, o sistema escravo não responde a consulta, realizei o mesmo teste feito por você mas primeiro alguns esclarecimentos necessários. 1) Já os parâmetros default na porta de comunicação do SlimLine O LogicLab são 115200, e, 8 e o nó Modbus 1 no meu exemplo. Defino esses parâmetros no programa CODESYS (Aqui está imagem de tela com espionagem). Como no seu exemplo você usou parâmetros diferentes, acredito que, como você disse, você os definiu na página da Web do módulo CPU de SlimLine LogicLab. 2) Para acessar o DB 100 de SlimLine LogicLab é necessário usar o endereço modbus 40050 e não 100 (Tema) O valor do Relógio em tempo real, segundos, minutos e assim por diante, é retornado ao endereço 100 como também usado no meu exemplo. Se você ver em meu scrennshot de espionagem, limitei o valor de segundos (00 3B -> 59) e minutos (00 09 -> 9) entre duas leituras sucessivas 3) A porta serial RS485 do módulo de CPU CODESYS é endereçada como COM3.4. 052) Perguntei ao departamento de vendas e entendi que você adquiriu um módulo de CPU MPS200 * XNUMX que é um módulo CAN, então não possui a porta RS485. Se você deseja usar Modbus RTU sobre RS485, você pode usar um serial RS232 com um conversor serial.
-
autorPublique
- Você deve estar logado para responder a este tópico.