BRESIMAR(asaTek)-Beckhoff-Slides Formação Técnica TwinCAT 2-3.1 COM Free Modbus
BECKHOFF - TwinCAT 2 Slide de Formação Técnica - 3.1 COM Free e ModbusRTU (2019) Da empresa BRESIMAR AUTOMAÇÃO (Aveiro / Portugal) Autoria: asaTek / Jorge Andril
BECKHOFF - TwinCAT 2
Slide de Formação Técnica - 3.1 COM Free e ModbusRTU (2019)
Da empresa BRESIMAR AUTOMAÇÃO (Aveiro / Portugal)
Autoria: asaTek / Jorge Andril
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>TwinCAT</strong> PLC Nivel III<br />
<strong>BRESIMAR</strong><br />
( J. Andril / 2019)<br />
PROGRAMAÇÃO <strong>TwinCAT</strong> v2.x<br />
<strong>COM</strong>UNICAÇÕES SÉRIE<br />
Protocolo <strong>COM</strong> e <strong>Modbus</strong> RTU<br />
< 1ª Parte ><br />
1
New Automation Technology<br />
Terminais KL/KS/KM/EL/ES 6xxx - Comunicação de dados<br />
Bresimar Automação, S.A. ( J.Andril ) (v0.0 / 02_2019) 22.02.2019 2
New Automation Technology<br />
Terminais de barramento KL/KS/KM/EL/ES - 6xxx<br />
PORTAS DE <strong>COM</strong>UNICAÇÃO<br />
(RS232 , RS422 , RS485 , TTY)<br />
PORTAS DE <strong>COM</strong>UNICAÇÃO PARA REDES DE<br />
DOMÓTICA ( LON , DALI , EIB , MP-bus)<br />
PORTAS DE <strong>COM</strong>UNICAÇÃO PARA REDES<br />
INDUSTRIAIS (AS-I)<br />
PORTAS DE <strong>COM</strong>UNICAÇÃO DE TRANSFERÊNCIA DE<br />
DADOS ENTRE TERMINAIS DE BARRAMENTO<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 3
New Automation Technology<br />
Terminais de barramento KL/KS/KM - 6xxx<br />
Funções especiais<br />
Tipo KL/KS6xxx Tipo KL/KS6xxx<br />
Comunicações<br />
(portas serie)<br />
KL/KS6001<br />
Terminal com porta serie RS 232 ,<br />
19.2 kbaud<br />
KL/KS6031<br />
Terminal com porta serie RS 232 ,<br />
115.2 kbaud<br />
KL/KS6011<br />
Terminal com porta serie TTY ,<br />
„ loop“ de corrente 20mA<br />
KL/KS6021<br />
Terminal com porta serie RS422/RS485 ,<br />
19.2 kbaud<br />
KL/KS6041<br />
Terminal com porta serie RS422/RS485 ,<br />
115.2 kbaud<br />
Comunicações<br />
(domótica)<br />
KL6023 e KL6021-0023<br />
KL6581 e KL6583<br />
Terminal para comunicações wireless EnOcean e RS485<br />
para sinais EnOcean<br />
Terminal EnOcean „master“ e transmissor /recptor<br />
EnOcean<br />
KL6301<br />
Terminal para comunicações EIB<br />
KL6401<br />
Terminal para comunicações LON<br />
KL/KS6771<br />
Terminal para comunicações MP-Bus „master“<br />
KL6781<br />
Terminal M-Bus „master“<br />
Comunicações<br />
(troca de dados)<br />
Comunicações<br />
(rede AS-I)<br />
KL/KS6051<br />
Terminal de comunicação para troca de dados entre KL<br />
KM6551<br />
Terminal de comunicação para troca de dados „wireless“<br />
KL/KS6201<br />
Terminal AS-I „master“<br />
KL/KS6211<br />
Terminal AS-I „master“ com contactos de potência<br />
KL6224<br />
Terminal IO-Link „master“<br />
KL/KS6811<br />
Terminal DALI/DSI „master“<br />
KL6831 e KL6841<br />
Terminal SMI „LoVo“<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 4
New Automation Technology<br />
Terminais de barramento EL/ES - 6xxx<br />
Funções especiais<br />
Tipo EL/ES6xxx Tipo EL6xxx<br />
Comunicações<br />
(portas serie)<br />
EL/ES6001<br />
Terminal com porta serie RS 232 ,<br />
115.2 kbaud<br />
Comunicações<br />
(domótica)<br />
EL6224<br />
Terminal IO-Link „master“<br />
EL6002<br />
Terminal com porta serie RS 232 ,<br />
115.2 kbaud , 2 x D-sub<br />
EL/ES6021<br />
Terminal com porta serie RS422/RS485 ,<br />
115.2 kbaud<br />
EL6022<br />
Terminal com porta serie RS422/RS485 ,<br />
19.2 kbaud , 2 x D-sub<br />
Comunicações<br />
(rede AS-I)<br />
EL/ES6201<br />
Terminal AS-I „master“<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 5
New Automation Technology<br />
Terminais de barramento KL/KS/KM | Ligações flexíveis<br />
KLxxxx<br />
Ligações diretas<br />
KSxxxx<br />
Ligações por ficha<br />
KMxxxx<br />
Ligações por ficha compacta<br />
Eletrónica com as ligações<br />
integradas num único terminal<br />
utilizando a tecnologia sem<br />
parafuso integradas num único<br />
Cage Clamp ® de simples<br />
montagem .<br />
A cablagem completa pode ser<br />
facilmente removida do terminal<br />
de barramento pressionando a<br />
guia de desbloqueio .<br />
Para aplicações com elevado<br />
nº de sinais I / O standard ;<br />
Ideal para pequenos quadros de<br />
comando com pouco espaço .<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 6
New Automation Technology<br />
Terminais de barramento KL/KS/KM/EL/ES 6xxx<br />
PORTAS DE <strong>COM</strong>UNICAÇÃO<br />
RS232 / RS422 / RS485 / TTY<br />
Hardware<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 7
New Automation Technology<br />
Terminais de barramento KL/KS/KM/EL/ES 6xxx<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 8
New Automation Technology<br />
Portas comunicação RS232 (KL6001/6031, EL6001/6002) [1]<br />
Porta de comunicação RS232 :<br />
Em conformidade com a norma CCITT-V28 /<br />
DIN 66 259-1 ou EIA-RS232C/V24<br />
Canais de transferência de dados :<br />
“Full Duplex” (TxD , RxD , /RTS , /CTS)<br />
Velocidade de transferência de dados :<br />
KL6001 – 9.6kbaud, 8 bit dados, sem bit de paridade<br />
e 1 bit de stop (max. 19.2k baudrate)<br />
KL6031 e EL6001/6002– (max. 115.2k baudrate)<br />
“Buffer” de dados :<br />
KL6001 – 128bytes(receção)/16bytes(envio)<br />
KL6031 – 1024bytes(receção)/128bytes(envio)<br />
EL6001/6002 – 824bytes(receção)/128bytes(envio)<br />
Mapa de memoria do processo :<br />
KL6001 - 3x8bits dados+1x8bits “control/status”<br />
(max. 5x8bits dados)<br />
KL6031e EL6001/6002 - 22x8bits dados+2x8bits<br />
“control/status”(max. 22x8 bits dados)<br />
Máximo comprimento de cabo 15m (max.)<br />
Terminal especial KL6001-020<br />
KL6001-0020 - 5x8bits dados+1x8bits “control/status”<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 9
New Automation Technology<br />
Portas de comunicação RS232 (KL/KS 6001 e 6031) [2]<br />
Ligações da porta RS232 nas cartas KL/KS<br />
O controlo de RTS (“request to send”)/CTS (“control to send”) por defeito está ativo . Podemos<br />
desativar este controlo através de um shunt entre RST e CTS ( por hardware ) ou por<br />
software (KS2000 ou FB de livraria) .<br />
Ligações entre terminal RS232 e a porta <strong>COM</strong> de PC<br />
Podemos ligar o terminal RS232 com uma porta <strong>COM</strong>(RS232)<br />
através do programa “Hyper-Terminal” cumprindo o seguinte<br />
pin-out (ficha D de 9 pinos) :<br />
RS232(PC)/Pino 2 --- KL6001/TxD-Borne 1<br />
RS232(PC)/Pino 3 --- KL6001/RxD-Borne 5<br />
RS232(PC)/Pino 5 --- KL6001/Earth-Borne 3 e 7<br />
KL6001/RTS-Borne 2 ------I<br />
KL6001/CTS-Borne 6 ------I<br />
Shunt 2-6<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 10
New Automation Technology<br />
Portas de comunicação RS232 (KL/KS 6001 e 6031) [3]<br />
Estado dos LED´s do terminal<br />
LED Canal Estado Função<br />
A (“verde”) Run Off O tempo de “watchdog” foi ultrapassado.<br />
Este LED desliga-se quando não há transferência<br />
de dados passado 100ms .<br />
On<br />
Operação normal<br />
B (“verde”) TxD Off Dados a ser enviados (impulsos “off” curtos)<br />
On<br />
Não há dados a ser enviados<br />
C (“verde”) RxD Off Dados a ser recebidos (impulsos “off” curtos)<br />
On<br />
Não há dados a ser recebidos<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 11
New Automation Technology<br />
Portas comunicação RS422/485 (KL6021/6041,EL6021/6022)[1]<br />
Porta de comunicação RS422 ou RS485<br />
Canais de transferência de dados :<br />
“Full Duplex” (TxD+ , TxD- , RxD+ , RxD-) ou<br />
“Half Duplex” (RS485)<br />
Velocidade de transferência de dados :<br />
KL6021 – 9.6kbaud , 8 bit dados , sem bit de paridade<br />
e 1 bit de stop (max. 19.2k baudrate)<br />
KL6041 e EL6021/6022 – (max. 115.2k baudrate)<br />
“Buffer” de dados :<br />
KL6021 – 128bytes(receção)/16bytes(envio)<br />
KL6041 –1024bytes(receção)/128bytes(envio)<br />
EL6001/6002 – 824bytes(receção)/128bytes(envio)<br />
Mapa de memoria do processo :<br />
KL6021 - 3x8bits dados+1x8bits “control/status”<br />
(max. 5x8bits dados)<br />
KL6041 e EL6021/6022 - 22x8bits dados+2x8bits<br />
“control/status” (max. 22x8 bits dados)<br />
Máximo comprimento de cabo 1.000m (max.)<br />
Terminal especial KL6021-020 e -021<br />
KL6021-0020 - 5x8bits dados<br />
KL6021-0021 - 5x8bits dados (7bits,par,1bit stop,9600)<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 12
New Automation Technology<br />
Portas de comunicação RS422/485 (KL/KS 6021 e 6041) [2]<br />
Ligações da porta RS422 e RS485<br />
Comunicações ponto a ponto ou multiponto (RS485)<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 13
New Automation Technology<br />
Portas de comunicação RS422/485 (KL/KS 6021 e 6041) [3]<br />
Estado dos LED´s do terminal<br />
LED Canal Estado Função<br />
A (“verde”) Run Off O tempo de “watchdog” foi ultrapassado.<br />
Este LED desliga-se quando não há transferência<br />
de dados passado 100ms .<br />
On<br />
Operação normal<br />
B (“verde”) TxD Off Dados a ser enviados (impulsos “off” curtos)<br />
On<br />
Não há dados a ser enviados<br />
C (“verde”) RxD Off Dados a ser recebidos (impulsos “off” curtos)<br />
On<br />
Não há dados a ser recebidos<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 14
New Automation Technology<br />
Porta de comunicação TTY (KL/KS 6011) [1]<br />
Porta de comunicação TTY em loop de<br />
corrente de 20mA<br />
Canais de transferência de dados :<br />
“Full Duplex” (TxD+ , TxD- , RxD+ , RxD-)<br />
Velocidade de transferência de dados :<br />
KL6011 – 9.6kbaud , 8 bit dados , sem bit de paridade<br />
e 1 bit de stop (max. 19.2k baudrate)<br />
“Buffer” de dados :<br />
KL6011 – 128bytes (receção)/16bytes (envio)<br />
Mapa de memoria do processo :<br />
KL6011 – 3x8bits dados+1x8bits “control/status”<br />
(max. 5x8bits dados)<br />
Máximo comprimento de cabo 1.000m (max.)<br />
Terminal especial KL6011-020<br />
KL6011-0020 - 5x8bits dados<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 15
New Automation Technology<br />
Porta de comunicação TTY (KL/KS 6011) [2]<br />
Comunicações TTY em loop de corrente de 20 mA . É um terminal passivo o<br />
que significa que internamente não tem nenhuma fonte de corrente.<br />
Utilizado para comunicações com os PLC´s “Siemens” S5 (pela porta PG) .<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 16
New Automation Technology<br />
Porta de comunicação TTY (KL/KS 6011) [3]<br />
Estado dos LED´s do terminal<br />
LED Canal Estado Função<br />
A (“verde”) Run Off O tempo de “watchdog” foi ultrapassado.<br />
Este LED desliga-se quando não há transferência de<br />
dados passado 100ms .<br />
On<br />
Operação normal<br />
B (“verde”) TxD Off Loop de corrente = 12mA (MARK)<br />
C (“verde”) RxD Off Loop de corrente = 12mA (MARK)<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 17
New Automation Technology<br />
Terminais de barramento KL/KS/KM/EL/ES 6xxx<br />
PORTAS DE <strong>COM</strong>UNICAÇÃO<br />
RS232 / RS422 / RS485 / TTY (loop)<br />
Software<br />
Configuração das portas <strong>COM</strong><br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 18
New Automation Technology<br />
Terminais de barramento KL/KS/KM/EL/ES 6xxx<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 19
New Automation Technology<br />
Parametros de configuração (KL/KS 6001,6011,6021) [1]<br />
TABELA DE REGISTOS ( KL6001/6011/6021)<br />
Endereço Descrição Valor Tipo Memoria<br />
R0 Nº de bytes de dados no buffer de envio variável R RAM<br />
R1 Nº de bytes de dados no buffer de receção variável R RAM<br />
R2..5 Não usado 0x0000 R<br />
R6 Registo de diagnostico do estado do terminal variável R RAM<br />
R7 Não usado 0x0000 R<br />
R8 Tipo de terminal ???? R ROM<br />
R9 Nº da versão do firmware 0x???? R ROM<br />
R10 Nº de bits do shift register 0x0218 R ROM<br />
R11 Nº do canal do shift register 0x0130 R ROM<br />
R12 Comprimento mínimo de dados 0x3030 R ROM<br />
R13 Tipo da estrutura de dados 0x0000 R ROM<br />
R14 Não usado 0x0000 R<br />
R15 Alinhamento dos bits variável R/W RAM<br />
R16 Nº da versão do hardware especifico R/W SEEPROM<br />
R17 Não usado 0x0000 R/W SEEPROM<br />
R18 Nº de bytes de indicação de buffer cheio 0x0080 R/W SEEPROM<br />
R19..30 Não usado 0x0000 R/W SEEPROM<br />
R31 Registo da palavra código para escrita (0x1235) variável R/W RAM<br />
R32 Velocidade de transmissão (baud-rate) 0x0006 R/W SEEPROM<br />
R33 Tipo de telegrama de dados (data frame) 0x0003 R/W SEEPROM<br />
R34 Modo de operação das comunicações 0x0003 R/W SEEPROM<br />
R35 Nº de bytes de dados mapeados no BK/BC 0x0003 R/W SEEPROM<br />
R36..47 Não usado 0x0000 R/W SEEPROM<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 20
New Automation Technology<br />
Parametros de configuração (KL/KS 6001,6011,6021) [2]<br />
Utilizando o KS2000 podemos configurar as cartas de comunicação KL6xxx<br />
Exemplo:<br />
KL6031<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 21
New Automation Technology<br />
Parametros de configuração (KL/KS 6001,6011,6021) [3]<br />
Para escrever nos registos R/W é necessário primeiro escrever 0x1235 no R31. A<br />
proteção de escrita está ativa quando o valor em R31 é zero .<br />
A velocidade de transmissão esta registada no R32 .<br />
(Bit 2,1,0 = 011) – 1200 baud<br />
(Bit 2,1,0 = 100) – 2400 baud<br />
(Bit 2,1,0 = 101) – 4800 baud<br />
(Bit 2,1,0 = 110) – 9600 baud [valor de fabrica]<br />
(Bit 2,1,0 = 111) – 19200 baud<br />
O formato do telegrama de dados esta registado no R33 .<br />
(Bit 2,1,0 = 001) – 7 bits dados e bit paridade par<br />
(Bit 2,1,0 = 010) – 7 bits dados e bit paridade impar<br />
(Bit 2,1,0 = 011) – 8 bit dados e sem bit paridade [valor de fabrica]<br />
(Bit 2,1,0 = 100) – 8 bits dados e bit paridade par<br />
(Bit 2,1,0 = 101) – 8 bits dados e bit paridade impar<br />
(Bit 3 = 0) – 1 bit de stop [valor de fabrica]<br />
(Bit 3 = 1) – 2 bits de stop<br />
O terminal vem de fabrica com o comando de “handshake” /RTS e /CTS ativo .<br />
O /RTS fica a nível “1” se o buffer de receção do KL tem mais de 114 caracteres .<br />
O /RTS é posto a “0” quando o KL tem menos de 104 caracteres . Se o /CTS é<br />
posto a “1” pelo periférico o KL deixa de enviar dados .<br />
“RTS” – “Request To Send”<br />
“CTS” – “Clear To Send”<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 22
New Automation Technology<br />
Parametros de configuração (KL/KS 6001,6011,6021) [4]<br />
Utilizando o KS2000 pode-se configurar o “Baud-rate” , “Data Format” e “Stop Bits”<br />
[Registo R32 , R33]<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 23
New Automation Technology<br />
Parametros de configuração (KL/KS 6001,6011,6021) [5]<br />
O modo de operação das comunicações está registado no R34 .<br />
(Bit 0 = 1) –<br />
(Bit 0 = 0) –<br />
(Bit 0 = 1) –<br />
(Bit 1 = 0) –<br />
(Bit 1 = 1) –<br />
(Bit 3 = 0) –<br />
(Bit 3 = 1) –<br />
(Bit 4 = 0) –<br />
(Bit 4 = 1) –<br />
/RTS e /CTS ativo (KL6001) [valor de fabrica]<br />
“Full-Duplex” ativo (KL6021) [valor de fabrica]<br />
“Half-Duplex” ativo (KL6021)<br />
Formato de dados “standard”<br />
Formato de dados “alternativo” [valor de fabrica]<br />
Protocolo X-ON/X-OFF de envio de dados desativo [valor de fabrica]<br />
Protocolo X-ON/X-OFF ativo . O KL envia os dados para o periférico até<br />
receber dele o carácter X-OFF (DC3==0x13) . O envio fica suspenso até<br />
de novo o carácter X-ON (DC1==0X11) do periférico .<br />
Protocolo XON/XOFF de receção de dados desativo [valor de fabrica]<br />
Protocolo X-ON/X-OFF ativo. O KL envia o carácter X-OFF quando o seu<br />
buffer atinge 118 caracteres. X-ON é enviado se X-OFF foi emitido antes<br />
e se o buffer tem um nº de dados inferior a 18 .<br />
(Bit 5 = 0) –<br />
(Bit 5 = 1) –<br />
O terminal está configurado para RS-485 (KL6021) [valor de fabrica]<br />
O terminal está configurado para RS-422 (KL6021)<br />
Nº de byte de dados mapeados no BC ou BK está registado no R35 .<br />
(Bit 7…0 = 011) – 3 bytes de dados [valor de fabrica] .<br />
Podemos ter de 3 ou 5 bytes .<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 24
New Automation Technology<br />
Parametros de configuração (KL/KS 6001,6011,6021) [6]<br />
Utilizando o KS2000 pode-se configurar o nº de dados (“Process Data Length”) e os<br />
parâmetros de comunicação (“Communication Parameters”) [Registo R34 e R35]<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 25
New Automation Technology<br />
Mapeamento dos dados (KL/KS 6001,6011,6021) [7]<br />
MAPEAMENTO DOS DADOS DO PROCESSO ( KL6001/6011/6021 )<br />
FORMATO ALTERNATIVO (formato de fábrica)<br />
Modulos BK: CAN,CANopen,RS232,RS485,ControlNet,DeviceNet,Profibus;USB<br />
Formato<br />
Complexo = Nao<br />
Motorola = Não<br />
“Word” = Não<br />
Modulo BK: InterBus<br />
I/O Offset Byte + Byte -<br />
3<br />
2<br />
1 Dados 2 Dados 1<br />
0 Dados 0 Ser-CT/ST<br />
Formato<br />
Complexo = Nao<br />
Motorola = Sim<br />
“Word” = Nao<br />
I/O Offset Byte + Byte -<br />
3<br />
2<br />
1 Dados 1 Dados 2<br />
0 Ser-CT/ST Dados 0<br />
Módulos BK: LightBus, Ethernet e BCxxxx<br />
Formato<br />
Complexo = Sim<br />
Motorola = Não<br />
“Word” = Sim<br />
I/O Offset Byte + Byte -<br />
3 Dados 2 Dados 1<br />
2 - -<br />
1 Dados 0 Ser-CT/ST<br />
0 - CT/ST<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 26
New Automation Technology<br />
Parametros de configuração (KL/KS 6031,6041) [1]<br />
TABELA DE REGISTOS ( KL6031/6041 )<br />
Endereço Descrição Valor Tipo Memoria<br />
R0 Nº de bytes de dados no buffer de envio variável R RAM<br />
R1 Nº de bytes de dados no buffer de receção variável R RAM<br />
R2..5 Não usado 0x0000 R<br />
R6 Registo de diagnostico do estado do terminal variável R RAM<br />
R7 Não usado 0x0000 R<br />
R8 Tipo de terminal ???? R ROM<br />
R9 Nº da versão do firmware 0x???? R ROM<br />
R10 Nº de bits do shift register 0x0218 R ROM<br />
R11 Nº do canal do shift register 0x0130 R ROM<br />
R12 Comprimento mínimo de dados 0x3030 R ROM<br />
R13 Tipo da estrutura de dados 0x0000 R ROM<br />
R14 Não usado 0x0000 R<br />
R15 Alinhamento dos bits variável R/W RAM<br />
R16 Nº da versão do hardware especifico R/W SEEPROM<br />
R17 Não usado 0x0000 R/W SEEPROM<br />
R18 Nº de bytes de indicação de buffer cheio 0x0080 R/W SEEPROM<br />
R19..30 Não usado 0x0000 R/W SEEPROM<br />
R31 Registo da palavra código para escrita (0x1235) variável R/W RAM<br />
R32 Velocidade de transmissão (baud-rate) 0x0006 R/W SEEPROM<br />
R33 Tipo de telegrama de dados (data frame) 0x0003 R/W SEEPROM<br />
R34 Modo de operação das comunicações 0x0181 R/W SEEPROM<br />
R35 Nº de bytes de dados mapeados no BK/BC 0x0017 R/W SEEPROM<br />
R36..47 Não usado 0x0000 R/W SEEPROM<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 27
New Automation Technology<br />
Parametros de configuração (KL/KS 6031,6041) [2]<br />
Para escrever nos registos R/W é necessário primeiro escrever 0x1235 no R31. A<br />
proteção de escrita está ativa quando o valor em R31 é zero .<br />
A velocidade de transmissão esta registada no R32 .<br />
(Bit 3,2,1,0 = 0011) – 1200 baud<br />
(Bit 3,2,1,0 = 0100) – 2400 baud<br />
(Bit 3,2,1,0 = 0101) – 4800 baud<br />
(Bit 3,2,1,0 = 0110) – 9600 baud [valor de fabrica]<br />
(Bit 3,2,1,0 = 0111) – 19200 baud<br />
(Bit 3,2,1,0 = 1000) – 38400 baud<br />
(Bit 3,2,1,0 = 1001) – 57600 baud<br />
(Bit 3,2,1,0 = 1010) –115200 baud<br />
O formato do telegrama de dados esta registado no R33 .<br />
(Bit 2,1,0 = 001) – 7 bits dados e bit paridade par<br />
(Bit 2,1,0 = 010) – 7 bits dados e bit paridade impar<br />
(Bit 2,1,0 = 011) – 8 bit dados e sem bit paridade [valor de fabrica]<br />
(Bit 2,1,0 = 100) – 8 bits dados e bit paridade par<br />
(Bit 2,1,0 = 101) – 8 bits dados e bit paridade impar<br />
(Bit 3 = 0) – 1 bit de stop [valor de fabrica]<br />
(Bit 3 = 1) – 2 bits de stop<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 28
New Automation Technology<br />
Parametros de configuração (KL/KS 6031,6041) [3]<br />
Utilizando o KS2000 pode-se configurar o “Baud-rate” , “Data Format” e “Stop Bits”<br />
[Registo R32 , R33]<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 29
New Automation Technology<br />
Parametros de configuração (KL/KS 6031,6041) [4]<br />
O modo de operação das comunicações está registado no R34 .<br />
(Bit 0 = 1) –<br />
(Bit 0 = 0) –<br />
(Bit 1 = 0) –<br />
(Bit 1 = 1) –<br />
(Bit 3 = 0) –<br />
(Bit 3 = 1) –<br />
(Bit 4 = 0) –<br />
(Bit 4 = 1) –<br />
(Bit 5 = 0) –<br />
(Bit 5 = 1) –<br />
/RTS e /CTS ativo (KL6031) [valor de fabrica]<br />
“Full-Duplex” ativo (KL6041) [valor de fabrica]<br />
Formato de dados “standard” [valor de fabrica]<br />
Formato de dados “alternativo”<br />
Protocolo X-ON/X-OFF de envio de dados desativo [valor de fabrica]<br />
Protocolo X-ON/X-OFF ativo . O KL envia os dados para o periférico até<br />
receber dele o carácter X-OFF (DC3==0x13) . O envio fica suspenso até<br />
de novo o carácter X-ON (DC1==0X11) do periférico .<br />
Protocolo XON/XOFF de receção de dados desativo [valor de fabrica]<br />
Protocolo X-ON/X-OFF ativo . O KL envia o carácter X-OFF quando o seu<br />
buffer atinge 118 caracteres . X-ON é enviado se X-OFF foi emitido antes e<br />
se o buffer tem um nº de dados inferior a 18 .<br />
O terminal está configurado para RS-485 (KL6041) [valor de fabrica]<br />
O terminal está configurado para RS-422 (KL6041)<br />
(Bit 8 = 1) – Velocidade de transferência otimizada (KL6041) [valor de fabrica]<br />
Nº de byte de dados mapeados no BC ou BK está registado no R35 .<br />
(Bit 7…0 = 10111) – 22 bytes de dados + 2 bytes “control/satus” [valor de fabrica]<br />
(Bit 7…0 = 00110) – 5 bytes de dados + 2 bytes “control/satus”<br />
(Bit 7…0 = 00011) – 3 bytes de dados + 2 bytes “control/satus”<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 30
New Automation Technology<br />
Parametros de configuração (KL/KS 6031,6041) [5]<br />
Utilizando o KS2000 pode-se configurar o nº de dados (“Process Data Length”) e os<br />
parâmetros de comunicação (“Communication Parameters”) [Registo R34 e R35]<br />
KL6031 (RS232)<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 31
New Automation Technology<br />
Parametros de configuração (KL/KS 6031,6041) [6]<br />
KL6041 (RS485)<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 32
New Automation Technology<br />
Parametros de configuração (EL/ES6001,6021,6002,6022) [1]<br />
TABELA DE REGISTOS ( EL6001/6021/6002/6022)<br />
Nos terminais ETHERCAT - EL não se utiliza o KS2000 para a sua configuração<br />
As configurações são efetuadas através do System Manager e manuseando os<br />
registos de parâmetros localizados na pasta “CoE-Online” (”Can Over EtherCAT”)<br />
Exemplo da pasta “CoE-Online” numa carta de 2 portas RS232 (EL6002)<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 33
New Automation Technology<br />
Parametros de configuração (EL/ES6001,6021,6002,6022) [2]<br />
Para os parâmetros mais relevantes ( baudrate, bit de paridade, bit de stop, etc)<br />
existem janelas/subpastas para a sua configuração.<br />
Ex. Carta EL 6002 : subpasta “EL60xx(1)” para a 1º porta RS232 e subpasta<br />
“EL60xx(2)” para a 2ª porta RS232 para a configurar como “portas virtuais” .<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 34
New Automation Technology<br />
Livrarias de comunicação “<strong>COM</strong>libV2”<br />
PORTAS DE <strong>COM</strong>UNICAÇÃO<br />
RS232 / RS422 / RS485 / TTY (loop)<br />
Software<br />
Protocolo livre <strong>COM</strong> “<strong>COM</strong>libV2.0”<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 35
New Automation Technology<br />
Livrarias de comunicação “<strong>COM</strong>libV2” [1]<br />
<strong>TwinCAT</strong> 2 supplement / Communication / “TS6340-<strong>TwinCAT</strong> PLC Serial Communication”<br />
A Livraria “<strong>COM</strong>Lib(v2.0)” é utilizada nos KL6001/6011/6021/6031/6041e PC-Com<br />
Pode ser utilizada com os CX´s (<strong>COM</strong>libV2.lib), com os BCxx00 (<strong>COM</strong>libV2.lb6), com<br />
BCxx50 e BX (<strong>COM</strong>libV2.lbx)<br />
CALCULO DAS VELOCIDADES DE TRANSMISSÂO (terminais KL)<br />
Bps = (LB x PA) / (3 x T)<br />
LB = Largura de banda ( 1 bit start + n bits dados + p bits paridade + m bits stop )<br />
( valor de defeito 8N1 => 1+8+0+1=10)<br />
PA = Nº de bytes de dados<br />
T = Tempo de ciclo do programa no PLC em seg (“task”)<br />
NOTA : O PLC necessita de 3 ciclos de operação para trocar dados com os terminais KL<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 36
New Automation Technology<br />
Livrarias de comunicação “<strong>COM</strong>libV2” [2]<br />
A Livraria “<strong>COM</strong>Lib(v2.0)” é utilizada com os EL6001/6002/6021/6022<br />
Pode ser utilizada com os CX´s (*.lib) com terminais EL<br />
CALCULO DAS VELOCIDADES DE TRANSMISSÂO (terminais EL)<br />
Bps = (LB x PA) / (2 x T)<br />
LB = Largura de banda ( 1 bit start + n bits dados + p bits paridade + m bits stop )<br />
( valor de defeito 8N1 => 1+8+0+1=10)<br />
PA = Nº de bytes de dados<br />
T = Tempo de ciclo do programa no PLC em seg (“task”)<br />
NOTA : O PLC necessita de 2 ciclos de operação para trocar dados com os terminais EL<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 37
New Automation Technology<br />
Livrarias de comunicação “<strong>COM</strong>libV2” [3]<br />
CALCULO DAS VELOCIDADES DE TRANSMISSÂO (terminais KL)<br />
Bps = (LB x PA) / (3 x T)<br />
MODO 22 bytes (KL6xxx) MODO 5 bytes (KL6xxx) MODO 3 bytes (KL6xxx) MODO 64 bytes (PC-Com)<br />
(KL6031 / 6041) (KL6001/ 6021/6031/6041) (KL6001/6021/6031/6041) (<strong>COM</strong> dos PC e CX)<br />
com T (“task”) = 10ms com T (“task”) = 10ms com T (“task”) = 10ms com T (“task”) = 10ms<br />
LB = 8N1(10bit´s) LB = 8N1(10bit´s) LB = 8N1 (10bit´s) LB = 8N1 (10bit´s)<br />
PA = 22 bytes dados PA = 5 bytes dados PA = 3 bytes dados PA = 64 bytes dados<br />
Bps = (10x22 )/(3x0.010s) Bps = (10x5)/(3x0.010s) Bps = (10x3)/(3x0.010s) Bps = (10x64)/(3x0.010s)<br />
7 333 bps 1 666 bps 1 000 bps 21 333 bps<br />
NOTA : Se o controlador não conseguir “captar” (fetch) rapidamente os dados recebidos ou transmitidos pelo terminal KL , os dados serão guardados<br />
temporariamente no buffer interno do terminal KL (ex. KL6001 tem um buffer para os dados recebidos de 128bytes) . Os restantes serão perdidos.<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 38
New Automation Technology<br />
Livrarias de comunicação “<strong>COM</strong>libV2” [4]<br />
CALCULO DAS VELOCIDADES DE TRANSMISSÂO (terminais EL)<br />
Bps = ( LB x PA) / (2 x T)<br />
MODO 22 byte´s (EL6xxx)<br />
(KL6001 / 6002)<br />
com T (“task”) = 10ms<br />
LB = 8N1(10bits)<br />
PA = 22 bytes dados<br />
Bps = (10x22) / (2x0.010s)<br />
11 000 bps<br />
NOTA : Se o controlador não conseguir “captar” (fetch) rapidamente os dados recebidos ou transmitidos pelo terminal EL , os dados serão guardados<br />
temporariamente no buffer interno do terminal EL (ex. EL6001 tem um buffer para os dados recebidos de 128bytes) . Os restantes serão perdidos.<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 39
New Automation Technology<br />
Livrarias de comunicação “<strong>COM</strong>libV2” [5]<br />
Tarefa normal ( “Standard Task”) :<br />
Tratamento dos dados (enviar e<br />
receber dados através do buffer<br />
“TxBuffer” e “RxBuffer” ) .<br />
- “SendByte” (FB)<br />
- “SendData” (FB)<br />
- “SendString” (FB)<br />
- “ReceiveByte” (FB)<br />
- “ReceiveData” (FB)<br />
- “ReceiveString” (FB)<br />
Tarefa Rapida “Fast Task” :<br />
Comunicação “background” entre<br />
os KL/EL ou <strong>COM</strong> e o PLC .<br />
- “SerialLineControl” (FB)<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 40
New Automation Technology<br />
Livrarias de comunicação “<strong>COM</strong>libV2” [6]<br />
Função Bloco<br />
“Combuffer”KL<br />
“SerialLineControl”<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 41
New Automation Technology<br />
Livrarias de comunicação “<strong>COM</strong>libV2” [7]<br />
%I* %Q*<br />
KL6001 de 3 byte<br />
Buffer dados entre HW SW<br />
KL/PC-<strong>COM</strong> <strong>TwinCAT</strong> PLC<br />
<strong>TwinCAT</strong> PLC (Task rápida [2ms]–“Main_rapida”)<br />
PC-<strong>COM</strong> KL6031 KL6001<br />
KL6001 de 5 byte<br />
KL6031 de 22 byte<br />
KL/PC-<strong>COM</strong> <strong>TwinCAT</strong> PLC<br />
PC-<strong>COM</strong> de 64 byte<br />
<strong>TwinCAT</strong> PLC (Declaração das Variáveis Globais)<br />
Ponteiro para a<br />
estrutura das %I<br />
na memoria<br />
Ponteiro para a<br />
estrutura das %Q<br />
na memoria<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 42
New Automation Technology<br />
Livrarias de comunicação “<strong>COM</strong>libV2” [8]<br />
FB´s de “enviar dados”<br />
<br />
“SendString”<br />
”SendData”<br />
”SendByte”<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 43
New Automation Technology<br />
Livrarias de comunicação “<strong>COM</strong>libV2” [9]<br />
%I* %Q*<br />
KL6001 de 3 byte<br />
Buffer dados entre HW SW<br />
<strong>TwinCAT</strong> PLC (Task normal [10ms]–“Main”)<br />
PC-<strong>COM</strong> KL6031 KL6001<br />
KL6001 de 5 byte<br />
KL6031 de 22 byte<br />
KL/PC-<strong>COM</strong> <strong>TwinCAT</strong> PLC<br />
PC-<strong>COM</strong> de 64 byte<br />
<strong>TwinCAT</strong> PLC (Declaração das Variáveis Globais)<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 44
New Automation Technology<br />
Livrarias de comunicação “<strong>COM</strong>libV2” [10]<br />
FB´s de “receber dados”<br />
“ReceiveString”<br />
”ReceiveData”<br />
”ReceiveByte”<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 45
New Automation Technology<br />
Livrarias de comunicação “<strong>COM</strong>libV2” [11]<br />
%I* %Q*<br />
KL6001 de 3 byte<br />
Buffer dados entre HW SW<br />
KL/PC-<strong>COM</strong> <strong>TwinCAT</strong> PLC<br />
<strong>TwinCAT</strong> PLC (Task normal[10ms]–“Main”)<br />
PC-<strong>COM</strong> KL6031 KL6001<br />
KL6001 de 5 byte<br />
KL6031 de 22 byte<br />
PC-<strong>COM</strong> de 64 byte<br />
<strong>TwinCAT</strong> PLC (Declaração das Variáveis Globais)<br />
“Prefix” = Empty :<br />
Mensagem inicia com<br />
o 1º caracter recebido<br />
“Suffix” = Empty<br />
A mensagem finaliza após um<br />
tempo (“Timeout”) sem receber<br />
caracteres<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 46
New Automation Technology<br />
Funções de manipulação de “STRING” [1]<br />
Livraria “STANDARD” – “String Functions”<br />
CONCAT(Str1,Str2)
New Automation Technology<br />
Funções de manipulação de “STRING” [2]<br />
Programa exemplo :<br />
56hex => ‘V’<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 48
New Automation Technology<br />
Exemplos práticos com “<strong>COM</strong>libV2” [1]<br />
EXEMPLO Nº01 - Programa PC/USB(SoftPLC TC2) BK9500+KL6001+KL9010<br />
KS2000<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 49
New Automation Technology<br />
Exemplos práticos com “<strong>COM</strong>libV2” [2]<br />
EXEMPLO Nº01 - Programa PC/USB (SoftPLC TC2) BK9500+KL6001+KL9010<br />
1º Passo :<br />
Instalar no projeto a<br />
livraria “<strong>COM</strong>libV2.lib”<br />
“System Manager”<br />
“PLC Control”<br />
NOTA : A carta KL6001-RS232 tem dois possíveis formatos de dados, de 3<br />
(valor de defeito) e 5 bytes. Neste exemplo usamos o formato de 3 bytes.<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 50
New Automation Technology<br />
Exemplos práticos com “<strong>COM</strong>libV2” [3]<br />
EXEMPLO Nº01 - Programa PC/USB (SoftPLC TC2) BK9500+KL6001+KL9010<br />
=> Definição das variáveis globais Estrutura de dados
New Automation Technology<br />
Exemplos práticos com “<strong>COM</strong>libV2” [4]<br />
EXEMPLO Nº01 - Programa PC/USB (SoftPLC TC2) BK9500+KL6001+KL9010<br />
=> Programa “MAIN”
New Automation Technology<br />
Exemplos práticos com “<strong>COM</strong>libV2” [5]<br />
EXEMPLO Nº01 - Programa PC/USB (SoftPLC TC2) BK9500+KL6001+KL9010<br />
=> Programa “MAIN_rapida”
New Automation Technology<br />
Exemplos práticos com “<strong>COM</strong>libV2” [6]<br />
EXEMPLO Nº01 - Programa PC/USB (SoftPLC TC2) BK9500+KL6001+KL9010<br />
=> Programa “MAIN_rapida”
New Automation Technology<br />
Exemplos práticos com “<strong>COM</strong>libV2” [7]<br />
EXEMPLO Nº01 - Programa PC/USB (SoftPLC TC2) BK9500+KL6001+KL9010<br />
=> Programa “Enviar_dados_KL6001( )”
New Automation Technology<br />
Exemplos práticos com “<strong>COM</strong>libV2” [8]<br />
EXEMPLO Nº01 - Programa PC/USB (SoftPLC TC2) BK9500+KL6001+KL9010<br />
=> Programa “Receber_dados_KL6001( )”
New Automation Technology<br />
Exemplos práticos com “<strong>COM</strong>libV2” hyperterminal.zip EX01-PC_BK9500(usb).zip [9]<br />
EXEMPLO Nº01 - Programa PC/USB (SoftPLC TC2) BK9500+KL6001+KL9010<br />
[Text] – “%i”<br />
[Variable]/[Textdisplay] - “Enviar_dados_KL6001.Tempo_intervalo”<br />
[Input]/[Text input of variable ‘Textdisplay’] - Numpad (Min. 0 , Max. 10000)<br />
[Text] – “%s”<br />
[Variable]/[Textdisplay] - ”Enviar_dados_Kl6001.Man_Aut_mensagem”<br />
[Input]/[Toggle variable]-“Enviar_dados_KL6001.Man_Aut”<br />
[Text] – “%s”<br />
[Variable]/[Textdisplay] -“Enviar_dados_KL6001.Mensagem_a_enviar”<br />
[Input]/[Tap variable]-“Enviar_dados_KL6001.B_enviar”<br />
[Text] – “%s”<br />
[Variable]/[Textdisplay] -“Receber_dados_KL6001.Mensagem_a_receber”<br />
[Input]/[Toggle variable]-“Receber_dados_KL6001.Parar_receber”<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 57
New Automation Technology<br />
Exemplos práticos com “<strong>COM</strong>libV2” [10]<br />
EXEMPLO Nº02 - Programa com BC9100(PLC)+KL6031+KL9010<br />
KS2000<br />
NOTA : Neste exemplo o controlo de handshake não se faz<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 58
New Automation Technology<br />
Exemplos práticos com “<strong>COM</strong>libV2” [11]<br />
EXEMPLO Nº02 - Programa com BC9100(PLC)+KL6031+KL9010<br />
“System Manager”<br />
“Export Variable info…”<br />
1º Passo :<br />
Instalar no projeto a<br />
livraria “<strong>COM</strong>libV2.lb6”<br />
“PLC Control”<br />
NOTA : Ficheiro exportado do System Manager (comando “Export Variable Info…”) e que poderá ser importado<br />
no PLC Control . No KL6031-RS232 podemos ter configurações de 3, 5 e 22 (valor de defeito) bytes de dados.<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 59
New Automation Technology<br />
Exemplos práticos com “<strong>COM</strong>libV2” [12]<br />
EXEMPLO Nº02 - Programa com BC9100(PLC)+KL6031+KL9010<br />
=> Definição das variáveis globais Estrutura de dados
New Automation Technology<br />
Exemplos práticos com “<strong>COM</strong>libV2” [13]<br />
EXEMPLO Nº02 - Programa com BC9100(PLC)+KL6031+KL9010<br />
Ao contrario dos IPC e PCe/CX ,que permitem<br />
criar diversos programas MAIN chamados por<br />
diversas Tasks temporais, os BC900/9100 o único<br />
programa MAIN é chamado a cada PLC Cycle<br />
Time com um valor de defeito de 20 ms. È<br />
possível através do KS2000 [Tabela1-R12 e 13]<br />
ou System Manager alterar esse tempo. Este<br />
tempo não é determinístico.<br />
Outros BC´s tem os seguintes valores :<br />
+ PLC Cycle Time [Tabela1-R12] - 5 ms<br />
+ Background Time [Tabela1-R13] - 2 ms<br />
=> Programa “MAIN”
New Automation Technology<br />
Exemplos práticos com “<strong>COM</strong>libV2” [14]<br />
EXEMPLO Nº02 - Programa com BC9100(PLC)+KL6031+KL9010<br />
=> Programa de configuração da KL6031 “Init_<strong>COM</strong>( )”
New Automation Technology<br />
Exemplos práticos com “<strong>COM</strong>libV2” [15]<br />
EXEMPLO Nº02 - Programa com BC9100(PLC)+KL6031+KL9010<br />
=> Programa de enviar/receber “String” com RS232/KL6031 “RS232( )”
New Automation Technology<br />
Exemplos práticos com “<strong>COM</strong>libV2” Realterm_2.0.0.70.zip EX02-BC9100_RS232.zip [16]<br />
EXEMPLO Nº02 – Programa com BC9100(PLC)+KL6031+KL9010<br />
NOTA : No REALTERM deverá ser configurada a Porta com o 9600 bps de<br />
baudrate , 8 bits de dados , sem bit de paridade , 1 bit de stop [9600 8N1]<br />
[Text] – “%s”<br />
[Variable]/[Textdisplay] -“RS232.sReceivedString””<br />
[Input]/[Tap variable] - “RS232.bReset”<br />
[Input]/[Toggle variable] - “RS232.bSendString”<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 64
New Automation Technology<br />
Exemplos práticos com “<strong>COM</strong>libV2” [17]<br />
EXEMPLO Nº03 – CX+<strong>COM</strong> (SoftPLC TC2) CX+<strong>COM</strong> (SoftPLC TC2)<br />
A configuração desta exemplo está<br />
com um CX8080. Podemos aplicar<br />
este exemplo a outros CX (CX1000<br />
, CX9000, etc).<br />
PLC1<br />
PLC2<br />
NOTA : Usada a porta <strong>COM</strong>(RS232) do CX com um cabo Null Modem e parâmetros de comunicação standard [9600 8N1].<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 65
New Automation Technology<br />
Exemplos práticos com “<strong>COM</strong>libV2” [18]<br />
EXEMPLO Nº03 - CX+<strong>COM</strong> (SoftPLC TC2) CX+<strong>COM</strong> (SoftPLC TC2)<br />
Ex. CX9001-1001 + CX9000-N030(2xRS232)<br />
“Programa de conversação”<br />
Neste exemplo 03 será criado<br />
um programa “Chat” com duas<br />
portas RS232.<br />
“System Manager”<br />
1º Passo :<br />
Inserir manualmente novo Device<br />
A configuração e o programa<br />
apresentado, nos slides deste<br />
exemplo, serão idênticos para<br />
os dois CX (PLC1 e PLC2).<br />
NOTA : No CX8080 não é necessário inserir o device manualmente.<br />
È detetado automaticamente quando é efetuado o “Scan Devices”.<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 66
New Automation Technology<br />
Exemplos práticos com “<strong>COM</strong>libV2” [19]<br />
EXEMPLO Nº03 - CX+<strong>COM</strong> (SoftPLC TC2) CX+<strong>COM</strong> (SoftPLC TC2)<br />
2º Passo :<br />
Configurar a porta <strong>COM</strong> 1<br />
com o formato KL6xx1<br />
“System Manager”<br />
NOTA : Na carta <strong>COM</strong> do sistema CX será emulado o modo KL6xx1 com 64 Data bytes (Inputs / Outputs)<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 67
New Automation Technology<br />
Exemplos práticos com “<strong>COM</strong>libV2” [20]<br />
EXEMPLO Nº03 - CX+<strong>COM</strong> (SoftPLC TC2) CX+<strong>COM</strong> (SoftPLC TC2)<br />
Ex. CX1000<br />
Ex. CX8080 ou CX9000<br />
3º Passo :<br />
Instalar no projeto a<br />
livraria “<strong>COM</strong>libV2.lib”<br />
“PLC Control”<br />
“System Manager”<br />
NOTA : A carta <strong>COM</strong> do sistema CX tem formatos de dados de 22 bytes Inputs / 22 bytes Outputs<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 68
New Automation Technology<br />
Exemplos práticos com “<strong>COM</strong>libV2” [21]<br />
EXEMPLO Nº03 - CX+<strong>COM</strong> (SoftPLC TC2) CX+<strong>COM</strong> (SoftPLC TC2)<br />
=> Definição das variáveis globais Estrutura de dados
New Automation Technology<br />
Exemplos práticos com “<strong>COM</strong>libV2” [22]<br />
EXEMPLO Nº03 - CX+<strong>COM</strong> (SoftPLC TC2) CX+<strong>COM</strong> (SoftPLC TC2)<br />
=> Programa “MAIN”
New Automation Technology<br />
Exemplos práticos com “<strong>COM</strong>libV2” [23]<br />
EXEMPLO Nº03 - CX+<strong>COM</strong> (SoftPLC TC2) CX+<strong>COM</strong> (SoftPLC TC2)<br />
=> Programa “MAIN_rapida”
New Automation Technology<br />
Exemplos práticos com “<strong>COM</strong>libV2” [24]<br />
EXEMPLO Nº03 - CX+<strong>COM</strong> (SoftPLC TC2) CX+<strong>COM</strong> (SoftPLC TC2)<br />
=> Programa “MAIN_rapida”
New Automation Technology<br />
Exemplos práticos com “<strong>COM</strong>libV2” [25]<br />
EXEMPLO Nº03 - CX+<strong>COM</strong> (SoftPLC TC2) CX+<strong>COM</strong> (SoftPLC TC2)<br />
=> Programa “Enviar_dados( )”
New Automation Technology<br />
Exemplos práticos com “<strong>COM</strong>libV2” [26]<br />
EXEMPLO Nº03 - CX+<strong>COM</strong> (SoftPLC TC2) CX+<strong>COM</strong> (SoftPLC TC2)<br />
=> Programa “Receber_dados_KL6001( )”
New Automation Technology<br />
Exemplos práticos com “<strong>COM</strong>libV2” EX03-PC_<strong>COM</strong>1_CX(chat).zip [27]<br />
EXEMPLO Nº03 - CX+<strong>COM</strong> (SoftPLC TC2) CX+<strong>COM</strong> (SoftPLC TC2)<br />
[Text]-”ENVIAR MENSAGEM”<br />
[Input] / [Tap variable] -“Enviar_dados.B_enviar”<br />
Ecrã (HMI) do Chat em cada CX<br />
(PLC1 e PLC2).<br />
[Text] – “%s”<br />
[Variable]/[Textdisplay] -“Enviar_dados.Mensagem_a_enviar”<br />
[Text] – “%s”<br />
[Variable]/[Textdisplay] -“Receber_dados.Mensagem_a_receber”<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 75
New Automation Technology<br />
Livrarias de comunicação “<strong>Modbus</strong>RTU”<br />
PORTAS DE <strong>COM</strong>UNICAÇÃO<br />
RS232 / RS422 / RS485 / TTY<br />
Software<br />
Protocolo <strong>Modbus</strong> RTU “<strong>Modbus</strong>RTU”<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 76
New Automation Technology<br />
Livrarias de comunicação “<strong>Modbus</strong>RTU” [1]<br />
O protocolo de comunicação <strong>Modbus</strong> possui uma estrutura, de envio de<br />
mensagens entre dispositivos, de Master/Slave ou Client/Server. Foi desenvolvida<br />
pela Modicon na década de 70.<br />
A Modicon foi posteriormente adquirida pela Schneider e os direitos sobre o<br />
protocolo ficou sobre controlo da <strong>Modbus</strong> Organization (www.modbus.org).<br />
Devido à sua simplicidade e por ser um protocolo aberto (não proprietário) é muito<br />
usado em equipamentos industriais, automação residencial, instrumentação, etc<br />
Existem 3 padrões do protocolo <strong>Modbus</strong> para diversos suportes físicos :<br />
RS232/RS485/RS422<br />
Ethernet TCP/IP<br />
<strong>Modbus</strong> RTU ou <strong>Modbus</strong> ASCII<br />
<strong>Modbus</strong> TCP<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 77
New Automation Technology<br />
Livrarias de comunicação “<strong>Modbus</strong>RTU” [2]<br />
O protocolo <strong>Modbus</strong> RTU é uma<br />
estrutura, de mensagem aberta,<br />
para comunicações via porta serie<br />
(RS232,RS485,RS422 ou TTY),<br />
utilizando uma comunicação de<br />
pergunta / resposta através de<br />
uma arquitetura Master / Slave.<br />
Cada Slave será identificado por<br />
um endereço único (Slave ID)<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 78
New Automation Technology<br />
Livrarias de comunicação “<strong>Modbus</strong>RTU” [3]<br />
O protocolo de comunicação <strong>Modbus</strong> RTU é um protocolo de envio de<br />
mensagens (telegramas). Será enviado um telegrama, com uma tarefa ou<br />
pergunta, ao slave para obter um telegrama de resposta desse slave.<br />
Os telegramas (mensagens) terão um formato base.<br />
A especificação do MODBUS RTU define um intervalo temporal de “silencio” (Pause) mínimo correspondente a 3,5 carateres entre dois<br />
telegramas a serem enviados. Dentro de uma mensagem (telegrama) o intervalo temporal não poderá ser superior a 1,5 carateres.<br />
As Funções no protocolo <strong>Modbus</strong> RTU definem o tipo de tarefa a executar no<br />
slave (ler ou escrever) com um dado tamanho de dado (1bit ou 16bit/1word).<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 79
New Automation Technology<br />
Livrarias de comunicação “<strong>Modbus</strong>RTU” [4]<br />
<strong>TwinCAT</strong> 2 supplement / Communication / “TS6255-<strong>TwinCAT</strong> PLC <strong>Modbus</strong> RTU”<br />
A Livraria “<strong>Modbus</strong>RTU” poderá ser usada nas seguintes portas serie :<br />
Cartas KL** ou EL<br />
RS232 KL6001 / KL6031 ou EL6001 / EL6002<br />
RS422 ou 485 KL6021 / KL6041 ou EL6021 / EL6022<br />
Interfaces PC-<strong>COM</strong> opcionais ou “onboard” para CX<br />
RS232 CX8080, CX1xx-N30 e N40, CX9xxx-N30,<br />
CX5xxx-N30, CX2xxx-N30<br />
RS422 ou 485 CX8080, CX1xx-N31 e N41, CX9xxx-N31,<br />
CX5xxx-N31, CX2xxx-N31<br />
Controladores com MODBUS slave “onboard” *<br />
RS232 BC8150<br />
RS485 BC8050, BC7300, BK7300, BK7350<br />
(*) O protocolo <strong>Modbus</strong> RTU já vem implementado de fábrica (“onboard”) . Não é necessário desenvolver código<br />
utilizando a livraria “<strong>Modbus</strong>RTU”<br />
(**) É possível utilizar esta livraria com a carta KL6011 (TTY - loop de corrente)<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 80
New Automation Technology<br />
Livrarias de comunicação “<strong>Modbus</strong>RTU” [5]<br />
A Livraria “<strong>Modbus</strong>RTU” poderá ser usada nas seguintes plataformas :<br />
SoftPLC TC2 em PC<br />
IPC/PCe-CX “<strong>Modbus</strong>RTU.lib”<br />
PLC em BX<br />
BX9000,BX8000, “<strong>Modbus</strong>RTU.lib”<br />
BX5x00,BX3100 “TcComPortBX.lbx” *<br />
PLC BCxx00 (old)<br />
BC9000,BC9100, “<strong>Modbus</strong>RTU.lb6”<br />
BC7300,BC3100<br />
PLC BCxx50 (new)<br />
BC9050,BC9020, “<strong>Modbus</strong>RTU.lb6”<br />
BC9120,BC8x50, ou<br />
BC5x50,BC3150 “<strong>Modbus</strong>RTU.lib”<br />
(*) Esta livraria permite parametrizar e emular uma porta de comunicação do tipo PC<br />
na <strong>COM</strong>2 dos BX´s (Ex. BX9000, BX8000, BX5200, BX5100, BX3100).<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 81
New Automation Technology<br />
Livrarias de comunicação “<strong>Modbus</strong>RTU” [6]<br />
<br />
Áreas de memoria do protocolo MODBUS<br />
Área do MODBUS Tamanho dado Tipo acesso Tipo endereço Exemplo<br />
Entradas discretas<br />
(Digital inputs)<br />
1 bit Só de leitura<br />
(read only)<br />
%I<br />
(ex. %IX0.0)<br />
Saídas discretas<br />
(Digital outputs / coils)<br />
Entradas analógicas<br />
(Input registers)<br />
1 bit Leitura e<br />
escrita<br />
(read / write)<br />
16 bit Só de leitura<br />
(read only)<br />
%Q<br />
(ex. %QX0.0)<br />
%I<br />
(ex. %IW0)<br />
Saídas analógicas<br />
(Output registers)<br />
16 bit Leitura / escrita<br />
(read / write)<br />
%Q / %M<br />
(ex. %QW0 ou %MW0)<br />
<br />
Tabela das funções operacionais do protocolo MODBUS RTU na BECKHOFF<br />
Função operacional Código da função Endereço BECKHOFF (Offset+1) Funções MODBUS<br />
Read Coils status 01%Q (1bit) %Q*0x0800 (0800+1)hex / (02049)dec<br />
Read Input status 02%I (1 bit) %I* 0x0000 (0000+1)hex / (00001)dec<br />
Read Holding Registers 03%Q,M (16bit) %Q*0x0800 (0800+1)hex / (02049)dec<br />
%M*0x4000 (4000+1)hex / (16385)dec<br />
Read Input Registers 04%I (16bit) %I* 0x0000 (0000+1)hex / (00001)dec<br />
Write Single Coil 05%Q (1bit) %Q*0x0800 (0800+1)hex / (02049)dec<br />
Write Single Register 06%Q,%M (16bit) %Q*0x0800 (0800+1)hex / (02049)dec<br />
%M*0x4000 (4000+1)hex / (16385)dec<br />
Write Multiple Coils 15%Q(1bit) %Q*0x0800 (0800+1)hex / (02049)dec<br />
Write Multiple Registers 16%Q,%M (16bit) %Q*0x0800 (0800+1)hex / (02049)dec<br />
%M*0x4000 (0400+1)hex / (16385)dec<br />
Diagnostic 08 ------------------------------<br />
NOTA : Existem outras Funções como a 20, 21, 22, 23 etc.<br />
(*) O Endereço MODBUS nos sistemas BECKHOFF, na tabela anterior, é representada em Base 1 (offset+1).<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 82
New Automation Technology<br />
Livrarias de comunicação “<strong>Modbus</strong>RTU” [7]<br />
<br />
Livraria BECKHOFF para protocolo MODBUS RTU (FB´s Master) – “<strong>Modbus</strong>RTU.lib” e “*.lb6”<br />
FB MODBUS MASTER <strong>COM</strong> Ações (Actions) Funções Bloco (FB)<br />
<strong>Modbus</strong>RtuMaster_PcCom<br />
PC-<strong>COM</strong><br />
(64 BYTE)<br />
As instancias das FB´s <strong>Modbus</strong>RtuMaster_PcCom , <strong>Modbus</strong>RtuMaster_KL6x22B ou<br />
<strong>Modbus</strong>RtuMaster_KL6x5B tem atribuídas ações (“Actions”).<br />
Essas ações correspondem às Funções MODBUS standard e são as seguintes :<br />
<br />
<strong>Modbus</strong>RtuMaster.ReadCoils<br />
<strong>Modbus</strong> function 1 = Read Coils<br />
<br />
<strong>Modbus</strong>RtuMaster.ReadInputStatus<br />
<strong>Modbus</strong> function 2 = Read Input Status<br />
<strong>Modbus</strong>RtuMaster_KL6x22B<br />
KL6031<br />
KL6041<br />
EL6001<br />
EL6002<br />
EL6021<br />
EL6022<br />
(22 BYTE)<br />
<br />
<br />
<br />
<strong>Modbus</strong>RtuMaster.ReadRegs<br />
<strong>Modbus</strong> function 3 = Read Holding Registers<br />
<strong>Modbus</strong>RtuMaster.ReadInputRegs<br />
<strong>Modbus</strong> function 4 = Read Input Registers<br />
<strong>Modbus</strong>RtuMaster.WriteSingleCoil<br />
<strong>Modbus</strong> function 5 = Write Single Coil<br />
<br />
<strong>Modbus</strong>RtuMaster.WriteSingleRegister<br />
<strong>Modbus</strong> function 6 = Write Single Register<br />
<strong>Modbus</strong>RtuMaster_KL6x5B<br />
KL6001<br />
KL6011<br />
KL6021<br />
KL6031<br />
KL6041<br />
<br />
<br />
<strong>Modbus</strong>RtuMaster.WriteMultipleCoils<br />
<strong>Modbus</strong> function 15 = Write Multiple Coils<br />
<strong>Modbus</strong>RtuMaster.Write Regs<br />
<strong>Modbus</strong> function 16 = Preset Multiple Registers<br />
(5 BYTE)<br />
<br />
<strong>Modbus</strong>RtuMaster.Diagnostics<br />
<strong>Modbus</strong> function 8 = Diagnostics<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 83
New Automation Technology<br />
Livrarias de comunicação “<strong>Modbus</strong>RTU” [8]<br />
<br />
Livraria BECKHOFF para protocolo MODBUS RTU (FB´s Master) – “<strong>Modbus</strong>RTU.lib” e “*.lb6”<br />
FB MODBUS MASTER <strong>COM</strong> VAR_INPUT / VAR_OUTPUT das FB Funções Bloco (FB)<br />
<strong>Modbus</strong>RtuMaster_PcCom<br />
<strong>Modbus</strong>RtuMaster_KL6x22B<br />
PC-<strong>COM</strong><br />
(64 BYTE)<br />
KL6031<br />
KL6041<br />
EL6001<br />
EL6002<br />
EL6021<br />
EL6022<br />
(22 BYTE)<br />
VAR_INPUT<br />
UnitID - Endereço da estação slave que pretendemos comunicar (1..247). O<br />
endereço “0” corresponde a telegramas de brodcast para respostas coletivas.<br />
Quantity - Nº de dados a ser lidos ou escritos (nº de words ou nº de bits).<br />
MBAddr - Endereço do equipamento slave que pretendemos ler / escrever<br />
os dados.<br />
cbLength - Tamanho dos dados (em bytes) a ler ou a escrever no slave. Este<br />
nº deve ser maior ou igual à quantidade de dados indicadas em Quantity [ex.<br />
cbLength >= Quantity * 2 ]. O cbLength pode ser calculado com a instrução<br />
SIZEOF(variavel)<br />
pMemoryAddr - Endereço de memoria no PLC é calculado com a instrução<br />
ADR(variavel). Nas ações de leitura os dados serão armazenados em variáveis<br />
residentes no PLC master. Nas ações de escrita os dados enviados para o<br />
slave estão guardados em variáveis no PLC master.<br />
Execute - Ordem de execução com o flanco ascendente desta entrada.<br />
Timeout - Tempo máximo que o master espera pela resposta do slave.<br />
<strong>Modbus</strong>RtuMaster_KL6x5B<br />
KL6001<br />
KL6011<br />
KL6021<br />
KL6031<br />
KL6041<br />
(5 BYTE)<br />
VAR_OUTPUT<br />
BUSY - Indica que a função bloco se encontra ativa e em execução. Esta<br />
saída passa a TRUE logo que dê inicio à execução da mesma, através da<br />
ordem de Execute. Passa a FALSE depois de completar a ação.<br />
Error - Indica que ocorreu um erro na execução da ação.<br />
ErrorId - Nº que indica o tipo de erro (ENUM “<strong>Modbus</strong>_Errors”).<br />
cbRead - Indica o nº de dados lidos.<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 84
New Automation Technology<br />
Livrarias de comunicação “<strong>Modbus</strong>RTU” [9]<br />
<br />
Livraria BECKHOFF para protocolo MODBUS RTU (FB´s Slave) – “<strong>Modbus</strong>RTU.lib e “*.lb6”<br />
FB MODBUS SLAVE <strong>COM</strong> VAR_INPUT / VAR_OUTPUT das FB Funções Bloco (FB)<br />
<strong>Modbus</strong>RtuSlave_PcCom<br />
NOTA : Esta FB só existe na<br />
livraria “<strong>Modbus</strong>RTU.lib”.<br />
(para IPC, CX e BX e BCxx50)<br />
<strong>Modbus</strong>RtuSlave_KL6x22B<br />
<strong>Modbus</strong>RtuSlave_KL6x5B<br />
PC-<strong>COM</strong><br />
(64 BYTE)<br />
KL6031<br />
KL6041<br />
EL6001<br />
EL6002<br />
EL6021<br />
EL6022<br />
(22 BYTE)<br />
KL6001<br />
KL6011<br />
KL6021<br />
KL6031<br />
KL6041<br />
(5 BYTE)<br />
VAR_INPUT<br />
UnitID - Endereço desta estação slave (1..127). O equipamento slave só<br />
responde ao pedido se o telegrama recebido tem o endereço correto.<br />
É possível ter um endereço coletivo (End. “0”, para ordem de broadcast) em<br />
que todas as estações slave respondem.<br />
AdrInputs - Endereço do começo do ARRAY das entradas (%I - <strong>Modbus</strong> input<br />
array), utilizando a instrução ADR(varivel_entrada). Terá de ser declarada<br />
uma variável do tipo ARRAY no programa do PLC.<br />
SizeInputBytes - Tamanho do ARRAY das entradas (em nº de bytes) usando<br />
a instrução SIZEOF(variável_entrada).<br />
AdrOutputs - Endereço de inicio do ARRAY das saídas (%Q -<strong>Modbus</strong> output<br />
array), utilizando a instrução ADR(varivel_saida). Terá de ser declarada uma<br />
variável do tipo ARRAY no programa do PLC.<br />
SizeOutputBytes - Tamanho do ARRAY das saídas (em nº de bytes) usando<br />
a instrução SIZEOF(variável_saida).<br />
AdrMemory - Endereço de inicio do ARRAY das memorias (%M - <strong>Modbus</strong><br />
memory array), utilizando a instrução ADR(varivel_memoria). Terá de ser<br />
declarada uma variável do tipo ARRAY no programa do PLC.<br />
SizeMemoryBytes - Tamanho do ARRAY das memorias (em nº de bytes)<br />
usando a instrução SIZEOF(variável_memoria).<br />
VAR_OUTPUT<br />
ErrorId - Nº que indica o tipo de erro (ENUM “<strong>Modbus</strong>_Errors”).<br />
NOTA - Os endereços de 248 e 257 não podem ser usados como endereços<br />
para os equipamentos <strong>Modbus</strong> Slave. Reservados para o sistema.<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 85
New Automation Technology<br />
Livrarias de comunicação “<strong>Modbus</strong>RTU” [10]<br />
<br />
Livraria BECKHOFF para protocolo MODBUS RTU (FB´s Slave) – “<strong>Modbus</strong>RTU.lib e “*.lb6”<br />
FB MODBUS SLAVE <strong>COM</strong> VAR_INPUT / VAR_OUTPUT das FB Funções Bloco (FB)<br />
<strong>Modbus</strong>RtuSlave_PcCom<br />
NOTA : Esta FB só existe na<br />
livraria “<strong>Modbus</strong>RTU.lib”.<br />
(para IPC, CX e BX e BCxx50)<br />
PC-<strong>COM</strong><br />
(64 BYTE)<br />
AREAS DE MEMORIA A DECLARAR NO PROGRAMA DO PLC ”Slave”<br />
INPUT [Funções 2,4] AdrInputs [ADR()] / SizeInputBytes [SIZEOF()]<br />
O ARRAY de Inputs , declarado no programa do PLC, permite a leitura do<br />
estado logico (bit) ou analógico (word) das entradas %I* no PLC (ou não).<br />
<strong>Modbus</strong>RtuSlave_KL6x22B<br />
KL6031<br />
KL6041<br />
EL6001<br />
EL6002<br />
EL6021<br />
EL6022<br />
(22 BYTE)<br />
OUTPUT [Funções 1,3,5,6,15,16] AdrOutputs / SizeOutputBytes<br />
O ARRAY de Outputs , declarado no programa do PLC, permite a leitura<br />
do estado logico (bit) ou analógico (word) das saidas %Q* do PLC (ou não).<br />
<strong>Modbus</strong>RtuSlave_KL6x5B<br />
KL6001<br />
KL6011<br />
KL6021<br />
KL6031<br />
KL6041<br />
(5 BYTE)<br />
MEMORY [Funções 3,6,16] AdrMemory / SizeMemoryBytes<br />
O ARRAY de Memories, declarado no programa do PLC, permite a leitura do<br />
estado logico(bit) ou analógico(word) das memorias %M* do PLC (ou não).<br />
NOTA : Nas VAR_INPUT das instancias utiliza-se as instruções ADR() e SIZE()<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 86
New Automation Technology<br />
Livrarias de comunicação “<strong>Modbus</strong>RTU” [11]<br />
<br />
Tabela das funções operacionais do protocolo MODBUS RTU Master<br />
Função operacional Código da função Endereço <strong>Modbus</strong> - Offset (Hex) / [Dec] Funções <strong>Modbus</strong> – <strong>Modbus</strong>Master.(actions)<br />
Read Coils status 01%Q (1bit) %Q*0x0800 (0x0000+0800+1) / [0x02049] <strong>Modbus</strong>Master.ReadCoils<br />
Read Input status 02%I (1 bit) %I* 0x0000 (1x0000+0000+1) / [1x00001] <strong>Modbus</strong>Master.ReadInputsStatus<br />
Read Holding Registers 03%Q,M (16bit) %Q*0x0800 (4x0000+0800+1) / [4x02049]<br />
%M*0x4000 (4x0000+4000+1) / [4x16385]<br />
<strong>Modbus</strong>Master.ReadRegs<br />
Read Input Registers 04%I (16bit) %I* 0x0000 (3x0000+0000+1) / [3x00001] <strong>Modbus</strong>Master.ReadInputRegs<br />
Write Single Coil 05%Q (1bit) %Q*0x0800 (0x0000+0800+1) / [0x02049] <strong>Modbus</strong>Master.WriteSingleCoil<br />
Write Single Register<br />
06%Q,%M<br />
(16bit)<br />
%Q*0x0800 (4x0000+0800+1) / [4x02049]<br />
%M*0x4000 (4x0000+4000+1) / [4x16385]<br />
<strong>Modbus</strong>Master.WriteSingleReg<br />
Write Multiple Coils 15%Q(1bit) %Q*0x0800 (0x0000+0800+1) / [0x02049] <strong>Modbus</strong>Master.WriteMultipleCoils<br />
Write Multiple Registers<br />
16%Q,%M<br />
(16bit)<br />
%Q*0x0800 (4x0000+0800+1) / [4x02049]<br />
%M*0x4000 (4x0000+4000+1) / [4x16385]<br />
<strong>Modbus</strong>Master.WriteRegs<br />
Diagnostic 08 ------------------------------ FB_MBDiagnose<br />
(*) O Endereço <strong>Modbus</strong> na tabela anterior é representada em Base 1 (offset+1).<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 87
New Automation Technology<br />
Controladores com MODBUS RTU Slave “Onboard” [1]<br />
<br />
Controladores BECKHOFF BC´s e BK´s com protocolo MODBUS RTU ou ASCII “onboard”<br />
MODELO TIPO PORTA TABELA DE MODBUS RTU / ASCII (endereços em Hex / Dec)<br />
BC7300 PLC RS485<br />
BC8050 PLC RS485<br />
BC8150 PLC RS232<br />
BK7300 I/O RS485<br />
RS485<br />
BK7350 I/O RS485<br />
BK8000 I/O RS485<br />
BK8100 I/O RS232<br />
RS232<br />
ILxxxx-B730 I/O RS485<br />
IP230x-B730 I/O RS485<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 88
New Automation Technology<br />
Controladores com MODBUS RTU Slave “Onboard” [2]<br />
Controladores BECKHOFF BC´s e BK´s com protocolo MODBUS RTU ou ASCII “onboard” (*)<br />
MODELO TIPO PORTA TABELA DE MODBUS RTU / ASCII (endereços em Hex / Dec)<br />
BC7300 PLC RS485<br />
BC8050 PLC RS485<br />
BC8150 PLC RS232<br />
<strong>Modbus</strong> RTU (hex / dec) Controlador BC<br />
3x00000+1 / 3x00001 [BC7300 - %QB0128]<br />
3x000FF+1 / 3x00256 [BC8x50 - %QB1000]<br />
4x00800+1 / 4x02049 [BC7300 - %IB 0128 ]<br />
4x008FF+1 / 4x02304 [BC8x50 - %IB1000 ]<br />
BK7300 I/O RS485<br />
BK7350 I/O RS485<br />
BK8000 I/O RS485<br />
BK8100 I/O RS232<br />
ILxxxx-B730 I/O RS485<br />
IP230x-B730 I/O RS485<br />
4x04000+1 / 4x16385 [BCxxxx - %MB000]<br />
4x040FF+1 / 4x16640 [BCxxxx - %MB511]<br />
(*) Só PLC´s (BC7300,BC8x50,IL230x-C730) – O tamanho dos registos no <strong>Modbus</strong> são de dois bytes (2 x %MBx)<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 89
New Automation Technology<br />
Exemplos práticos com “<strong>Modbus</strong>RTU” [1]<br />
EXEMPLO Nº01 - Programa com BC9100(<strong>Modbus</strong> Slave)+KL6031+KL9010<br />
<strong>Modbus</strong> RTU Master<br />
<strong>Modbus</strong> RTU Slave<br />
NOTA : Neste exemplo será usado o software <strong>Modbus</strong> Poll da Witte<br />
Software, a correr no PC, como <strong>Modbus</strong> RTU Master.<br />
A carta KL6031 (RS232) irá funcionar com os parâmetros de fábrica<br />
[22 bytes de dados, RTS/CTS ativo] e [Baudrate 9600, 8 bit de dados,<br />
sem bit de paridade e 1 bit de stop (9600 8N1)]<br />
KS2000<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 90
New Automation Technology<br />
Exemplos práticos com “<strong>Modbus</strong>RTU” [2]<br />
EXEMPLO Nº01 - Programa com BC9100(<strong>Modbus</strong> Slave)+KL6031+KL9010<br />
“System Manager”<br />
“Export Variable info…”<br />
1º Passo :<br />
Instalar no projeto a<br />
livraria “<strong>Modbus</strong>RTU.lb6”<br />
“PLC Control”<br />
NOTA : Ficheiro exportado do System Manager (comando “Export Variable Info…”) e que poderá ser importado<br />
no PLC Control . No KL6031-RS232 podemos ter configurações de 3, 5 e 22 (valor de defeito) bytes de dados.<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 91
New Automation Technology<br />
Exemplos práticos com “<strong>Modbus</strong>RTU” [3]<br />
EXEMPLO Nº01 - Programa com BC9100(<strong>Modbus</strong> Slave)+KL6031+KL9010<br />
=> Programa de configuração d <strong>Modbus</strong> RTU Slave “<strong>Modbus</strong>RTU_Slave( )”
New Automation Technology<br />
Exemplos práticos com “<strong>Modbus</strong>RTU” [4]<br />
EXEMPLO Nº01 - Programa com BC9100(<strong>Modbus</strong> Slave)+KL6031+KL9010<br />
=> Definição das variáveis globais Estrutura de dados
New Automation Technology<br />
Exemplos práticos com “<strong>Modbus</strong>RTU” [5]<br />
EXEMPLO Nº01 - Programa com BC9100(<strong>Modbus</strong> Slave)+KL6031+KL9010<br />
[Text] – “%i”<br />
[Variable]/[Textdisplay] –<br />
“<strong>Modbus</strong>RTU_Slave.HoldingRegs[0]”<br />
“<strong>Modbus</strong>RTU.Slave.HoldingRegs[7]”<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 94
New Automation Technology<br />
Exemplos práticos com “<strong>Modbus</strong>RTU” [6]<br />
EXEMPLO Nº01 - Programa <strong>Modbus</strong> Poll (<strong>Modbus</strong> RTU Master) instalado no PC<br />
1º Passo : “Setup”<br />
2º Passo : “Connection”<br />
End. 16384 dec<br />
NOTA : Endereços a utilizar para cada Array [0..7] do<br />
protocolo <strong>Modbus</strong> RTU Slave no PLC usando a função<br />
“03 Read Holding Registers (4x)”.<br />
Endereços com “Protocolo Address (Base0)”<br />
InputsRegs [0..7] [Address: 00000 dec]<br />
OutputsRegs [0..7] [Address: 02048 dec]<br />
HoldingRegs [0..7] [Address: 16384 dec]<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 95
New Automation Technology<br />
Exemplos práticos com “<strong>Modbus</strong>RTU” [7]<br />
EXEMPLO Nº01 - Programa <strong>Modbus</strong> Poll (<strong>Modbus</strong> RTU Master) instalado no PC<br />
Endereços com “Protocolo Address (Base0)”<br />
00000 dec<br />
Funções 2 e 4<br />
00008 dec<br />
Funções 1,3,5,6,15 e 16<br />
16384 dec<br />
Funções 3,6 e 16<br />
02048-02055 dec<br />
End.16390 dec<br />
End.16391 dec<br />
16391 dec<br />
End.16384 dec<br />
End.16389 dec<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 96
New Automation Technology<br />
Exemplos práticos com “<strong>Modbus</strong>RTU” [8]<br />
<strong>Modbus</strong>Poll.zip<br />
EX01-BCxx_KL_<strong>Modbus</strong>RTU_Slave.zip<br />
EXEMPLO Nº01 - Programa <strong>Modbus</strong> Poll (<strong>Modbus</strong> RTU Master) instalado no PC<br />
End. 16390 dec<br />
End. 16391 dec<br />
End. 16384 dec<br />
End. 16389 dec<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 97
New Automation Technology<br />
Exemplos práticos com “<strong>Modbus</strong>RTU” [9]<br />
EXEMPLO Nº02 - Programa com BC9100(<strong>Modbus</strong> Master)+KL6031+KL9010<br />
<strong>Modbus</strong> RTU Slave<br />
<strong>Modbus</strong> RTU Master<br />
NOTA : Neste exemplo será usado o software <strong>Modbus</strong> Slave da Witte<br />
Software, a correr no PC, como <strong>Modbus</strong> RTU Slave.<br />
A carta KL6031 (RS232) irá funcionar com os parâmetros de fábrica<br />
[22 bytes de dados, RTS/CTS ativo] e [Baudrate 9600, 8 bit de dados,<br />
sem bit de paridade e 1 bit de stop (9600 8N1)]<br />
KS2000<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 98
New Automation Technology<br />
Exemplos práticos com “<strong>Modbus</strong>RTU” [10]<br />
EXEMPLO Nº02 - Programa com BC9100(<strong>Modbus</strong> Master)+KL6031+KL9010<br />
“System Manager”<br />
“Export Variable info…”<br />
1º Passo :<br />
Instalar no projeto a<br />
livraria “<strong>Modbus</strong>RTU.lb6”<br />
“PLC Control”<br />
NOTA : Ficheiro exportado do System Manager (comando “Export Variable Info…”) e que poderá ser importado<br />
no PLC Control . No KL6031-RS232 podemos ter configurações de 3, 5 e 22 (valor de defeito) bytes de dados.<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 99
New Automation Technology<br />
Exemplos práticos com “<strong>Modbus</strong>RTU” [11]<br />
EXEMPLO Nº02 - Programa com BC9100(<strong>Modbus</strong> Master)+KL6031+KL9010<br />
=> Programa de configuração d <strong>Modbus</strong> RTU Master “<strong>Modbus</strong>RTU_Master( )”
New Automation Technology<br />
Exemplos práticos com “<strong>Modbus</strong>RTU” [12]<br />
EXEMPLO Nº02 - Programa com BC9100(<strong>Modbus</strong> Master)+KL6031+KL9010<br />
=> Definição das variáveis globais Estrutura de dados
New Automation Technology<br />
Exemplos práticos com “<strong>Modbus</strong>RTU” [13]<br />
EXEMPLO Nº02 - Programa com BC9100(<strong>Modbus</strong> Master)+KL6031+KL9010<br />
[Table]<br />
[Data array:] – “<strong>Modbus</strong>RTU_Master.dReadData”<br />
[Slider size:] – “8”<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 102
New Automation Technology<br />
Exemplos práticos com “<strong>Modbus</strong>RTU” [14]<br />
EXEMPLO Nº02 - Programa <strong>Modbus</strong> Slave (<strong>Modbus</strong> RTU Slave) instalado no PC<br />
End. 16384 dec<br />
1º Passo : “Setup”<br />
2º Passo : “Connection”<br />
NOTA : Endereços a utilizar para cada Array [0..7] do<br />
protocolo <strong>Modbus</strong> RTU Slave no PLC usando a função<br />
“03 Read Holding Registers (4x)”.<br />
Endereços com “Protocolo Address (Base0)”<br />
InputsRegs [0..7] [Address: 00000 dec]<br />
OutputsRegs [0..7] [Address: 02048 dec]<br />
HoldingRegs [0..7] [Address: 16384 dec]<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 103
New Automation Technology<br />
Exemplos práticos com “<strong>Modbus</strong>RTU” [15]<br />
EXEMPLO Nº02 - Programa <strong>Modbus</strong> Slave (<strong>Modbus</strong> RTU Slave) instalado no PC<br />
Endereços com “Protocolo Address (Base0)”<br />
End.16384 dec<br />
End.16391 dec<br />
End.16384 dec<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 104
New Automation Technology<br />
Exemplos práticos com “<strong>Modbus</strong>RTU” <strong>Modbus</strong>Slave.zip EX02-BCxx_KL_<strong>Modbus</strong>RTU_Master.zip [16]<br />
EXEMPLO Nº02 - Programa <strong>Modbus</strong> Slave (<strong>Modbus</strong> RTU Slave) instalado no PC<br />
End. 16390 dec<br />
End. 16391 dec<br />
End. 16384 dec<br />
End. 16389 dec<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 105
New Automation Technology<br />
Exemplos práticos com “<strong>Modbus</strong>RTU” [17]<br />
EXEMPLO Nº03 – CP66xx(SoftPLC TC2- <strong>Modbus</strong> Master)EK1100+EL6022<br />
<strong>Modbus</strong> RTU Master<br />
NOTA : A carta EtherCAT EL6022 (RS422/RS485) irão funcionar com os parâmetros [22 bytes de dados] e [Baudrate 19,2kBaud, 8 bit de dados, sem bit<br />
paridade e 1 bit stop (19200,8N1)]. A interligação entre as duas portas <strong>COM</strong> RS485 deverá feito com um cabo de 3 fios (pino 2-3,7-8 e 5 da ficha D da EL).<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 106
New Automation Technology<br />
Exemplos práticos com “<strong>Modbus</strong>RTU” [18]<br />
EXEMPLO Nº03 – CP66xx(SoftPLC TC2- <strong>Modbus</strong> Master)EK1100+EL6022<br />
“System Manager”<br />
2º Passo :<br />
Configurar a porta <strong>COM</strong><br />
1º Passo :<br />
Scan automático do hardware<br />
NOTA : Na CP66xx não é necessário inserir os devices manualmente. É detetado automaticamente quando é efetuado o “Scan Devices”.<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 107
New Automation Technology<br />
Exemplos práticos com “<strong>Modbus</strong>RTU” [19]<br />
EXEMPLO Nº03 – CP66xx(SoftPLC TC2- <strong>Modbus</strong> Master)EK1100+EL6022<br />
Ex. CP66xx<br />
“PLC Control”<br />
3º Passo :<br />
Instalar no projeto a<br />
livraria “<strong>Modbus</strong>RTU.lib”<br />
“System Manager”<br />
NOTA : A carta RS422/RS485 EL6022 possui duas portas <strong>COM</strong> com o formato de dados de 22 bytes Inputs / 22 bytes<br />
Outputs<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 108
New Automation Technology<br />
Exemplos práticos com “<strong>Modbus</strong>RTU” [20]<br />
EXEMPLO Nº03 – CP66xx(SoftPLC TC2- <strong>Modbus</strong> Master)EK1100+EL6022<br />
=> Programa de configuração do <strong>Modbus</strong> RTU Master “PLC_<strong>Modbus</strong>Master”<br />
New Automation Technology<br />
Exemplos práticos com “<strong>Modbus</strong>RTU” BECKHOFF_<strong>Modbus</strong>_Step-by-step_examples.zip [21]<br />
EXEMPLO Nº03 – CP66xx(SoftPLC TC2- <strong>Modbus</strong> Master)EK1100+EL6022<br />
End. 16384 dec<br />
1º Passo : “Setup”<br />
19200 Baud<br />
2º Passo : “Connection”<br />
NOTA : Para testar o programa anterior utilize o software<br />
<strong>Modbus</strong> Slave da Witte Software. No PC deverá utilizar<br />
um conversor USB/RS485<br />
Para ler os dados do slave (“dReaddata”) iremos utilizar<br />
a função “03 Read Holding Registers (4x)” no PLC.<br />
3º Passo : Dados online<br />
Endereços com “Protocolo Address (Base0)”<br />
HoldingRegs [0..7] [Address: 16384 dec / 4000 hex ]<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 110
New Automation Technology<br />
Exemplos práticos com “<strong>Modbus</strong>RTU” [22]<br />
EXEMPLO Nº04 – CP66xx(SoftPLC TC2- <strong>Modbus</strong> Slave)EK1100+EL6022<br />
<strong>Modbus</strong> RTU Slave<br />
NOTA : A carta EtherCAT EL6022 (RS422/RS485) irão funcionar com os parâmetros [22 bytes de dados] e [Baudrate 19,2k Baud, 8 bit de dados, sem bit<br />
paridade e 1 bit stop (19200,8N1)]. A interligação entre as duas portas <strong>COM</strong> RS485 deverá feito com um cabo de 3 fios (pino 2-3,7-8 e 5 da ficha D da EL).<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 111
New Automation Technology<br />
Exemplos práticos com “<strong>Modbus</strong>RTU” [23]<br />
EXEMPLO Nº04 – CP66xx(SoftPLC TC2- <strong>Modbus</strong> Slave)EK1100+EL6022<br />
“System Manager”<br />
2º Passo :<br />
Configurar a porta <strong>COM</strong><br />
1º Passo :<br />
Scan automático do hardware<br />
NOTA : Na CP66xx não é necessário inserir os devices manualmente. É detetado automaticamente quando é efetuado o “Scan Devices”.<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 112
New Automation Technology<br />
Exemplos práticos com “<strong>Modbus</strong>RTU” [24]<br />
EXEMPLO Nº04 – CP66xx(SoftPLC TC2- <strong>Modbus</strong> Slave)EK1100+EL6022<br />
Ex. CP66xx<br />
“PLC Control”<br />
3º Passo :<br />
Instalar no projeto a<br />
livraria “<strong>Modbus</strong>RTU.lib”<br />
“System Manager”<br />
NOTA : A carta RS422/RS485 EL6022 possui duas portas <strong>COM</strong> com o formato de dados de 22 bytes Inputs / 22 bytes<br />
Outputs<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 113
New Automation Technology<br />
Exemplos práticos com “<strong>Modbus</strong>RTU” [25]<br />
EXEMPLO Nº04 – CP66xx(SoftPLC TC2- <strong>Modbus</strong> Slave)EK1100+EL6022<br />
=> Programa de configuração do <strong>Modbus</strong> RTU Slave “PLC_<strong>Modbus</strong>Slave”
New Automation Technology<br />
Exemplos práticos com “<strong>Modbus</strong>RTU” BECKHOFF_<strong>Modbus</strong>_Step-by-step_examples.zip [26]<br />
EXEMPLO Nº04 - Programa <strong>Modbus</strong> Poll (<strong>Modbus</strong> RTU Master) instalado no PC<br />
1º Passo : “Setup”<br />
2º Passo : “Connection”<br />
End. 16384 dec<br />
19200Baud<br />
NOTA : Para testar o programa anterior utilize o software<br />
<strong>Modbus</strong> Poll da Witte Software. No PC deverá utilizar<br />
um conversor USB/RS485<br />
Para ler os dados do slave (“dReaddata”) iremos utilizar<br />
a função “03 Read Holding Registers (4x)” no software.<br />
Endereços com “Protocolo Address (Base0)”<br />
HoldingRegs [0..7] [Address: 16384 dec / 4000 hex ]<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 115
New Automation Technology<br />
Exemplos práticos com “<strong>Modbus</strong>RTU” [27]<br />
EXEMPLO Nº05 - BC9100 (<strong>Modbus</strong> Master) BC9100 (<strong>Modbus</strong> Slave)<br />
<strong>Modbus</strong> RTU Master<br />
<strong>Modbus</strong> RTU Slave<br />
NOTA : As cartas KL6031 (RS232) irão funcionar com os parâmetros de fábrica [22 bytes de dados, RTS/CTS ativo] e [Baudrate 9600, 8 bit de dados, sem<br />
bit de paridade e 1 bit de stop (9600,8N1)]. A interligação entre as duas portas <strong>COM</strong> RS232 deverá feito com um cabo cruzado serie (null modem).<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 116
New Automation Technology<br />
Exemplos práticos com “<strong>Modbus</strong>RTU” [28]<br />
EXEMPLO Nº05 - BC9100 (<strong>Modbus</strong> Master) BC9100 (<strong>Modbus</strong> Slave)<br />
A executar pelos formandos<br />
NOTA : As cartas KL6031 (RS232) irão funcionar com os parâmetros de fábrica [22 bytes de dados, RTS/CTS ativo] e [Baudrate 9600, 8 bit de dados, sem<br />
bit de paridade e 1 bit de stop (9600,8N1)]. A interligação entre as duas portas <strong>COM</strong> RS232 deverá feito com um cabo cruzado serie (null modem).<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 117
New Automation Technology<br />
FIM<br />
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 118