1. Introdução
A KELLER fabrica sensores de alta precisão com saída digital, conectados a software proprietário para exibição e acúmulo de leituras. Freqüentemente, o usuário precisa integrar sensores em seus próprios sistemas de monitoramento e controle. Neste trabalho, usando o sensor de pressão de alta precisão PR-33X como exemplo, mostramos a conexão dos sensores KELLER ao ambiente integrado MATLAB, desenvolvido originalmente para a análise e síntese de sistemas de controle, que possui ferramentas poderosas para processar e exibir dados de sinais.
Breve especificação do transmissor de pressão KELLER PR 33X
Faixa de pressão padrão (VPI), bar 30
Precisão da medição da pressão, total (10 ... 40 ° C) 0,025% do VPI
Saída RS 485
Taxa de transmissão 9600 ou 115200
Tensão de alimentação (U) 8 ... 28 V
Vida útil 10 milhões de ciclos 0 ... 100% VPI
O transmissor de pressão também inclui um sensor de temperatura integrado.
Interface
Todos os produtos KELLER com um índice X possuem uma interface digital (RS485 half duplex) que suporta os protocolos MODBUS RTU e Keller Bus.
A conexão a um PC é realizada usando um conversor RS485-USB. Para melhor compatibilidade, a empresa recomenda o uso do conversor Keller K-114.
De software
Para configurar e registrar as leituras dos sensores, é usado o software CCS30 gratuito, cuja interface é mostrada na Figura 1.
 Figura 1. Acúmulo e exibição de dados gráficos e tabulares pelo programa CCS30 [3].
Figura 1. Acúmulo e exibição de dados gráficos e tabulares pelo programa CCS30 [3].Conexão com o PC
O sensor de pressão PR-33X foi conectado a um PC usando um conversor de porta USB USB para RS-232/422/485 MOXA USB, como mostra a Figura 2.
 Figura 2. Diagrama de conexão do transmissor de pressão PR-33X a um PC e a uma fonte de alimentação de 12 V. Quando alimentado abaixo de 5,69 V (até 4,95 V), as leituras do sensor aumentam. Quando alimentado abaixo de 4,95V, os dados não são transmitidos (o sensor não funciona).
Figura 2. Diagrama de conexão do transmissor de pressão PR-33X a um PC e a uma fonte de alimentação de 12 V. Quando alimentado abaixo de 5,69 V (até 4,95 V), as leituras do sensor aumentam. Quando alimentado abaixo de 4,95V, os dados não são transmitidos (o sensor não funciona). 
Após instalar o driver e conectar o conversor MOXA ao PC, a porta COM aparece na lista de gerenciadores de dispositivos 

 e adaptador 

 . Na guia (Figura 3) do último dispositivo da nossa versão, a interface RS-485 com um esquema de conexão de dois fios é selecionada.
 Figura 3. Configurando o conversor MOXA na interface RS-485 2W.
Figura 3. Configurando o conversor MOXA na interface RS-485 2W.Formatos de transmissão
A troca de dados entre o computador (dispositivo de controle) e o sensor (dispositivo escravo) é realizada de acordo com as mensagens do protocolo Modbus contendo os seguintes campos [2].

Primeiro, o computador envia uma mensagem de solicitação ao sensor, em seguida, o sensor em resposta envia sua própria mensagem com sua própria soma de verificação quando a ação solicitada é bem-sucedida ou envia uma função com o código 1 se ocorrer um erro (função inválida ou endereço de dados, etc.).
A resposta (resposta) do sensor é emitida somente após o recebimento de uma solicitação do dispositivo de controle.
A mensagem enviada ao sensor contém um dos seguintes códigos de função.

 Figura 4. Formato das mensagens transmitidas e recebidas de acordo com o padrão Modbus RTU [1].
Figura 4. Formato das mensagens transmitidas e recebidas de acordo com o padrão Modbus RTU [1].Endereços dos registros de sensores usados PR-33X

Exemplos de mensagens Modbus (leitura do sensor integrado de pressão e temperatura) [2]

Converter leituras do sensor para o formato de ponto flutuante IEEE754
O procedimento recomendado para converter os quatro bytes recebidos das leituras do sensor em um número de ponto flutuante é mostrado na Figura 5. O exemplo usa os dados [2] mostrados na tabela acima.
 Figura 5. Regras para converter leituras de sensor de quatro bytes em um número de ponto flutuante.
Figura 5. Regras para converter leituras de sensor de quatro bytes em um número de ponto flutuante.Programa MATLAB para leitura e exibição de sensores de pressão e temperatura PR-33X
O programa de leitura e exibição do sensor PR-33X inclui um módulo principal e três sub-rotinas. O conversor opera em 115200 baud. Os dados de pressão e temperatura são lidos mediante solicitação.
Os dados de entrada do programa são o endereço da porta COM do seu dispositivo (Com_Port = variável) e o endereço do seu conversor. Se apenas um conversor estiver conectado, como regra geral, Device_Addr = 1.
O número de leituras é definido pela constante Loop (no exemplo, Loop = 1000;).
O módulo principal:
clear all;  
Rotina de geração de solicitação Modbus RTU
 function RTU_request = RTU_code(Device_Addr,Function,Data_First_Address,Address_Range) % Device_Addr == Device Address 8 bit: 1..255 % Function == % 3 or 4 is read; 6 is write in one register; 16 - write in two registers, % Data_First_Address == Address of first register data (2 bytes) % Addrress_Range == Range of Addreses; % Data_First_Address_Bytes = [floor(Data_First_Address/256) rem(Data_First_Address,256)]; Address_Range_Bytes = [floor(Address_Range/256) rem(Address_Range,256)]; % Master's Tx data without Check sum Code = [Device_Addr Function Data_First_Address_Bytes Address_Range_Bytes]; Code_Char = dec2hex(Code); if size(Code_Char,2)==1 Code_Char(:,2)=Code_Char(:,1); Code_Char(:,1)='0'; end Code_Char_line = []; for I = 1:length(Code) Code_Char_line = [Code_Char_line Code_Char(I,1:2)]; end % Check sum calculation Check_Sum = crc_calculator(Code_Char_line); % Master's Tx data with Check sum RTU_request = [Code hex2dec(Check_Sum(1:2)) hex2dec(Check_Sum(3:4))]; % End of m file 
Rotina de cálculo da soma de verificação da sequência Modbus RTU
 function output_hex_string = crc_calculator (Input_hex); %Input_hex = 'F70302640008'; % <= 2 * 16 Char F = [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]; xor_constant = [1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1]; for i = 1 : length (Input_hex) / 2; A = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]; if ~(i > length (Input_hex)/2) A_hex = Input_hex ((i-1)*2+1:i*2); % Two HEX bytes A_bin = dec2bin (hex2dec (A_hex)); length_A_bin = length (A_bin); for j = 0 : length_A_bin - 1 A (16 - j) = str2num(A_bin (length_A_bin - j)); end end F = xor (F,A); for ii = 1 : 8 if F(16) ==1 if xor_constant (1) == 0 F_shift (1) = 0; else F_shift (1) = 1; end for j = 2 : 16; if xor_constant (j) == F (j-1); F_shift (j) = 0; else F_shift (j) = 1; end end else F_shift = circshift(F',1)'; end F = F_shift; end end h = num2str(F); h = h(1:3:length(h)); output_hex_string = num2str([dec2hex(bin2dec(h(9:12))) dec2hex(bin2dec(h(13:16))) dec2hex(bin2dec(h(1:4))) dec2hex(bin2dec(h(5:8)))]); % End of m file 
Sub-rotina para converter quatro bytes das leituras do sensor em um número de ponto flutuante
 
Exemplos de gráficos de pressão e temperatura PR-33X lidos pelo programa acima são mostrados na Figura 6.
 Figura 6. A saída do conversor PR-33X recebida pelo programa desenvolvido no MATLAB. O programa lê 1000 leituras de pressão a 115200 baud em 9 segundos. O programa lê 1000 leituras de pressão e 1000 leituras de temperatura (separadamente) a 115200 baud em 17 segundos.
Figura 6. A saída do conversor PR-33X recebida pelo programa desenvolvido no MATLAB. O programa lê 1000 leituras de pressão a 115200 baud em 9 segundos. O programa lê 1000 leituras de pressão e 1000 leituras de temperatura (separadamente) a 115200 baud em 17 segundos.Programa MATLAB comutação da velocidade de transferência de dados do conversor
Para mudar para uma nova frequência, é necessário no programa definir o endereço da porta COM do seu dispositivo (Com_Port = variável) e a frequência necessária do conversor (BR_Rate = 9600; ou BR_Rate = 115200;)
ATENÇÃO Para mudar para uma nova frequência de transmissão de dados após definir o bit zero do registro do conversor UART, é necessário DESLIGAR (desenergizar) e depois LIGAR novamente o conversor.
 
Lista bibliográfica
- Dr. Bob Davidov. Comunicação com dispositivos de rede industrial. portalnp.ru/wp-content/uploads/2013/08/12.02_Discrete-IO-unit_-MK110-_RS-485-ModBus-RTU-_-ASCII-DCON-OVEN__Ed3.pdf
- Descrição dos protocolos de comunicação. Para transmissores de pressão KELLER das séries 30 e 40. Class.Group = 5.20 Class.Group = 5.21. Versão 3.2 (em russo). www.izmerkon.ru .
- Control Center Series 30. Guia do Usuário. Para o CCS30 Versão 1.1. www.izmerkon.ru
- Dr. Bob Davidov. Tecnologias de controle de computador em sistemas técnicos portalnp.ru/author/bobdavidov