Monitorando os canais dos equipamentos NOVUS atravs de software prprio
Para a leitura de dados dos aparelhos atravs de um software prprio, necessrio que o aparelho possua uma interface de comunicao. A maioria dos produtos Novus possui comunicao RS485 atravs do protocolo Modbus. Dessa forma, seguem algumas dicas bsicas para implementar a leitura dos dados dos aparelhos atravs de um software prprio. Inicialmente, deve-se ter em mente que, para os aparelhos que se comunicam atravs do protocolo Modbus (utilizando RS485), deve-se utilizar um conversor RS232-RS485 ou USB-RS485. Em muitos casos (por exemplo, no USB-i485 da Novus), ao utilizar um conversor USB-RS485, ele mapeado para uma porta COM (porta serial) no PC. Dessa forma, o primeiro passo identificar a porta COM onde est a rede Modbus e, portanto, o aparelho desejado e, aps, abrir esta porta atravs da chamada da rotina correta da API do sistema operacional (ver ANEXO 1). Uma vez que a porta serial esteja aberta, necessrio enviar ao aparelho o comando de leitura dos canais desejados. Recomendamos utilizar o comando Modbus 03 Read Holding Registers, pois suportado por todos os aparelhos Novus que trabalham com Modbus. Este comando nada mais do que uma sucesso de bytes indicando o endereo do aparelho que se quer ler, o cdigo do comando (no caso, 03), o endereo do primeiro registrador a ser lido, o nmero de registradores que se quer ler e CRC, que um cdigo de dois bytes com a funo de se verificar a existncia de erros de transmisso. Para saber os endereos dos registradores, verifique o Manual de Comunicao do aparelho, disponvel para download no website da Novus. Aps o envio de todos os bytes pela serial rede Modbus, deve-se esperar a resposta do aparelho. Esta resposta consta dos seguintes dados: endereo do aparelho que est respondendo, o cdigo do comando (no caso, 03), o nmero de bytes de dados da resposta (dobro de registradores requisitados, pois cada registrador possui dois bytes) e o CRC da resposta. Para maiores detalhes, veja o ANEXO 2. Para um exemplo de leitura de dados, verifique o ANEXO 3. Com os dados dos canais recebidos, basta selecionar os dados de interesse (os registradores so lidos em ordem). importante salientar que os dados recebidos so nmeros inteiros e, portanto, sem ponto decimal. Conforme o dado e conforme o aparelho, deve-se incluir o ponto decimal posteriormente. Maiores detalhes no Manual de Comunicao dos aparelhos. Dessa forma, deve-se reenviar o comando periodicamente a fim de ler os dados atualizados do aparelho. Para ler dados de mais de um aparelho na rede, deve-se enviar um comando para o primeiro, receber a resposta, enviar outro comando ao prximo aparelho, esperar a resposta, e assim por diante. Para cada aparelho, o comando ter o endereo Modbus do aparelho diferente, assim como o CRC e, possivelmente, o endereo inicial e o nmero de registradores. Por fim, ao encerrar as leituras com o(s) aparelho(s), deve-se fechar a respectiva porta serial, de forma a deix-la livre para posterior utilizao. NOTA: No recomendamos que a configurao dos aparelhos seja feita atravs de softwares prprios. Quando aplicvel, deve ser feita atravs do software de Configurao propcio do aparelho em questo.
RUA LVARO CHAVES, 155 TEL: (51) 3323-3600 PORTO ALEGRE - RS - BRASIL FAX: (51) 3323-3644 90220-040 E-MAIL: info@novus.com.br
ANEXO 1 Funes teis da API do Windows A API do sistema operacional Windows possui as seguintes funes que, ao se construir um software com comunicao serial, provavelmente sero utilizadas: CreateFile Rotina que abre o dispositivo de comunicao. No caso, abre a porta serial COMxx. WriteFile Rotina que escreve dados no dispositivo de comunicao. No caso, envia bytes pela serial. ReadFile Rotina que l dados do dispositivo de comunicao. No caso, l bytes da porta serial. CloseHandle Rotina que fecha o dispositivo de comunicao. No caso, fecha a porta serial COMxx. Existem vrias outras funes que podem ser utilizadas em um programa com comunicao serial. Maiores detalhes destas e de outras funes esto disponveis na documentao da API do Windows. ANEXO 2 - Comando 03 Modbus - Leitura de Registradores (Read Holding Registers) Requisita os valores dos registradores internos. Os valores retornados so words. Comando: SA Endereo do escravo 3 Funo RH Registrador (High) RL Registrador (Low) NRH Nmero de Registradores (High) NRL Nmero de Registradores (Low) CRCL CRC (Low) CRCH CRC (High) onde: SA: 00h a F8h RH e RL: 0000h a FFFFh NRH e NRL: 0000h a FFFFh CRCH e CRCL: 0000h a FFFFh Resposta do escravo: SA Eco do Endereo do escravo 3 Funo BC Nmero de Bytes de dados enviados na resposta D1H Valor do Registrador ndice 1 (High) D1L Valor do Registrador ndice 1 (Low) D...H Valor do Registrador ndice ... (High) D...L Valor do Registrador ndice ... (Low) DnH Valor do Registrador ndice n (High) DnL Valor do Registrador ndice n (Low) CRCL CRC (Low) CRCH CRC (High) onde: SA: 00h a F8h BC: 00h a FFh D1H a D1L at DnH a DnL: 0000h a FFFFh CRCL e CRCH: 0000h a FFFFh
RUA LVARO CHAVES, 155 TEL: (51) 3323-3600 PORTO ALEGRE - RS - BRASIL FAX: (51) 3323-3644 90220-040 E-MAIL: info@novus.com.br
LINKS: Maiores detalhes deste e de outros comandos Modbus: http://www.modbus.org Maiores detalhes sobre CRC16 (CRC utilizado no Modbus): http://en.wikipedia.org/wiki/Crc16 ANEXO 3 Exemplo de comunicao A seguir, se encontra um exemplo de leitura dos canais 2, 3 e 4 de um Field Logger com endereo Modbus 02. Segundo o Manual de Comunicao do mesmo, estes canais ocupam os registradores 01, 02 e 03 (os registradores Modbus sempre comeam em zero). Assim, o comando enviado ao aparelho : 02h 03h 00h 01h 00h 03h 54h 38h 02h Endereo do aparelho 03h Cdigo do comando (funo) Modbus 0001h Endereo do primeiro registrador a ler (canal 2) 0003h Nmero de registradores a serem lidos 3854h CRC resultante
A resposta do aparelho a seguinte: 02h 03h 06h 00h 19h 00h 21h 00h 1Dh B8h 44h 02h Endereo do aparelho 03h Cdigo do comando (funo) Modbus 06h Nmero de bytes de dados da resposta 0019h Valor do canal 2 em graus Celsius: 0019h = 25 0021h Valor do canal 3 em graus Celsius: 0021h = 33 001Dh Valor do canal 4 em graus Celsius: 001Dh = 29 44B8h CRC resultante