New Automation Technology [3]
Exemplos práticos com “COMlibV2”
EXEMPLO Nº01 - Programa PC/USB (SoftPLC TC2) BK9500+KL6001+KL9010
=> Definição das variáveis globais <=
2º Passo :
Declarar as VARIÁVEIS GLOBAIS
=> Estrutura de dados <=
NOTA : A carta KL6001 tem 2 formatos
de dados de 3 e 5 bytes. Neste exemplo
usamos o formato de 3 bytes.
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 51
New Automation Technology [4]
Exemplos práticos com “COMlibV2”
EXEMPLO Nº01 - Programa PC/USB (SoftPLC TC2) BK9500+KL6001+KL9010
=> Programa “MAIN” <=
NOTA : O programa “MAIN” é criado automaticamente quando se cria o projeto.
A escrita do código, no programa “MAIN”, com a chamada dos programas PRG
“Enviar_dados_KL6001()” e “Receber_dados_KL6001()” só poderá ser feita
depois destes dois PRG´s terem sido criados.
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 52
New Automation Technology [5]
Exemplos práticos com “COMlibV2”
EXEMPLO Nº01 - Programa PC/USB (SoftPLC TC2) BK9500+KL6001+KL9010
=> Programa “MAIN_rapida” <=
3º Passo :
Criar uma “Task rapida”
NOTA : A criação de um 2º programa “MAIN” “Main_rápida”, chamado
por uma Task temporal mais rápida (2mS) que o standard (10mS) , terá a
função de chamar o programa com a instancia da FB de background.
Esta técnica permite aumentar o baudrate das comunicações, sem falhas.
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 53
New Automation Technology [6]
Exemplos práticos com “COMlibV2”
EXEMPLO Nº01 - Programa PC/USB (SoftPLC TC2) BK9500+KL6001+KL9010
=> Programa “MAIN_rapida” <=
4º Passo :
Criar instância da FB de “background”
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 54
New Automation Technology [7]
Exemplos práticos com “COMlibV2”
EXEMPLO Nº01 - Programa PC/USB (SoftPLC TC2) BK9500+KL6001+KL9010
=> Programa “Enviar_dados_KL6001( )” <=
5º Passo :
Escrever programa com instância da FB
de enviar mensagem (“string”)
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 55
New Automation Technology [8]
Exemplos práticos com “COMlibV2”
EXEMPLO Nº01 - Programa PC/USB (SoftPLC TC2) BK9500+KL6001+KL9010
=> Programa “Receber_dados_KL6001( )” <=
6º Passo :
Escrever programa com a instância
da FB de receber mensagem (“string”)
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 56
New Automation Technology hyperterminal.zip EX01-PC_BK9500(usb).zip [9]
Exemplos práticos com “COMlibV2”
EXEMPLO Nº01 - Programa PC/USB (SoftPLC TC2) BK9500+KL6001+KL9010
[Text] – “%s”
[Text] – “%i” [Variable]/[Textdisplay] - ”Enviar_dados_Kl6001.Man_Aut_mensagem”
[Variable]/[Textdisplay] - “Enviar_dados_KL6001.Tempo_intervalo” [Input]/[Toggle variable]-“Enviar_dados_KL6001.Man_Aut”
[Input]/[Text input of variable ‘Textdisplay’] - Numpad (Min. 0 , Max. 10000)
[Text] – “%s”
[Variable]/[Textdisplay] -“Enviar_dados_KL6001.Mensagem_a_enviar”
[Text] – “%s” [Input]/[Tap variable]-“Enviar_dados_KL6001.B_enviar”
[Variable]/[Textdisplay] -“Receber_dados_KL6001.Mensagem_a_receber” [Input]/[Toggle variable]-“Receber_dados_KL6001.Parar_receber”
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 57
New Automation Technology [10]
Exemplos práticos com “COMlibV2”
EXEMPLO Nº02 - Programa com BC9100(PLC)+KL6031+KL9010
KS2000
NOTA : Neste exemplo o controlo de handshake não se faz
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 58
New Automation Technology [11]
Exemplos práticos com “COMlibV2”
EXEMPLO Nº02 - Programa com BC9100(PLC)+KL6031+KL9010
“System Manager” “Export Variable info…” 1º Passo :
Instalar no projeto a
livraria “COMlibV2.lb6”
“PLC Control”
NOTA : Ficheiro exportado do System Manager (comando “Export Variable Info…”) e que poderá ser importado
no PLC Control . No KL6031-RS232 podemos ter configurações de 3, 5 e 22 (valor de defeito) bytes de dados.
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 59
New Automation Technology [12]
Exemplos práticos com “COMlibV2”
EXEMPLO Nº02 - Programa com BC9100(PLC)+KL6031+KL9010
=> Definição das variáveis globais <= 2º Passo :
Declarar as VARIÁVEIS GLOBAIS
=> Estrutura de dados <=
NOTA : A carta KL6031-RS232 vem de fabrica com o formato 22 bytes
de dados. Neste exemplo iremos usar 5 bytes de dados. A configuração
para 5 bytes é feita no programa, a correr no BC9100.
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 60
New Automation Technology [13]
Exemplos práticos com “COMlibV2”
EXEMPLO Nº02 - Programa com BC9100(PLC)+KL6031+KL9010
=> Programa “MAIN” <=
Ao contrario dos IPC e PCe/CX ,que permitem
criar diversos programas MAIN chamados por
diversas Tasks temporais, os BC900/9100 o único
programa MAIN é chamado a cada PLC Cycle
Time com um valor de defeito de 20 ms. È
possível através do KS2000 [Tabela1-R12 e 13]
ou System Manager alterar esse tempo. Este
tempo não é determinístico.
Outros BC´s tem os seguintes valores :
+ PLC Cycle Time [Tabela1-R12] - 5 ms
+ Background Time [Tabela1-R13] - 2 ms
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 61
New Automation Technology [14]
Exemplos práticos com “COMlibV2”
EXEMPLO Nº02 - Programa com BC9100(PLC)+KL6031+KL9010
=> Programa de configuração da KL6031 “Init_COM( )” <=
3º Passo :
Escrever programa que parametriza a
porta RS232/KL6001.
Sem RTS/CTS
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 62
New Automation Technology [15]
Exemplos práticos com “COMlibV2”
EXEMPLO Nº02 - Programa com BC9100(PLC)+KL6031+KL9010
=> Programa de enviar/receber “String” com RS232/KL6031 “RS232( )” <=
4º Passo : CONTROLO “background” do KL6031
Escrever programa de RECEBER “string”
enviar/receber “string”
ENVIAR “string”
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 63
New Automation Technology Realterm_2.0.0.70.zip EX02-BC9100_RS232.zip [16]
Exemplos práticos com “COMlibV2”
EXEMPLO Nº02 – Programa com BC9100(PLC)+KL6031+KL9010
NOTA : No REALTERM deverá ser configurada a Porta com o 9600 bps de
baudrate , 8 bits de dados , sem bit de paridade , 1 bit de stop [9600 8N1]
[Text] – “%s”
[Variable]/[Textdisplay] -“RS232.sReceivedString””
[Input]/[Tap variable] - “RS232.bReset” [Input]/[Toggle variable] - “RS232.bSendString”
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 64
New Automation Technology [17]
Exemplos práticos com “COMlibV2”
EXEMPLO Nº03 – CX+COM (SoftPLC TC2) CX+COM (SoftPLC TC2)
A configuração desta exemplo está
com um CX8080. Podemos aplicar
este exemplo a outros CX (CX1000
, CX9000, etc).
PLC1 PLC2
NOTA : Usada a porta COM(RS232) do CX com um cabo Null Modem e parâmetros de comunicação standard [9600 8N1].
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 65
New Automation Technology [18]
Exemplos práticos com “COMlibV2”
EXEMPLO Nº03 - CX+COM (SoftPLC TC2) CX+COM (SoftPLC TC2)
“System Manager” Ex. CX9001-1001 + CX9000-N030(2xRS232) “Programa de conversação”
Neste exemplo 03 será criado
1º Passo : um programa “Chat” com duas
Inserir manualmente novo Device portas RS232.
A configuração e o programa
apresentado, nos slides deste
exemplo, serão idênticos para
os dois CX (PLC1 e PLC2).
NOTA : No CX8080 não é necessário inserir o device manualmente.
È detetado automaticamente quando é efetuado o “Scan Devices”.
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 66
New Automation Technology [19]
Exemplos práticos com “COMlibV2”
EXEMPLO Nº03 - CX+COM (SoftPLC TC2) CX+COM (SoftPLC TC2)
2º Passo :
Configurar a porta COM 1
com o formato KL6xx1
“System Manager”
NOTA : Na carta COM do sistema CX será emulado o modo KL6xx1 com 64 Data bytes (Inputs / Outputs)
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 67
New Automation Technology [20]
Exemplos práticos com “COMlibV2”
EXEMPLO Nº03 - CX+COM (SoftPLC TC2) CX+COM (SoftPLC TC2)
Ex. CX1000 Ex. CX8080 ou CX9000
3º Passo :
Instalar no projeto a
livraria “COMlibV2.lib”
“PLC Control”
“System Manager”
NOTA : A carta COM do sistema CX tem formatos de dados de 22 bytes Inputs / 22 bytes Outputs
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 68
New Automation Technology [21]
Exemplos práticos com “COMlibV2”
EXEMPLO Nº03 - CX+COM (SoftPLC TC2) CX+COM (SoftPLC TC2)
=> Definição das variáveis globais <=
4º Passo :
Declarar as VARIÁVEIS GLOBAIS
=> Estrutura de dados <=
NOTA : Na porta COM é emulado o formato de dados de uma carta de comunicação do
tipo KL6xxx de 64 Data bytes (Input / Output)
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 69
New Automation Technology [22]
Exemplos práticos com “COMlibV2”
EXEMPLO Nº03 - CX+COM (SoftPLC TC2) CX+COM (SoftPLC TC2)
=> Programa “MAIN” <=
NOTA : O programa “MAIN” é criado automaticamente quando se cria o
projeto. A escrita do código, no programa “MAIN”, com a chamada dos
programas PRG “Enviar_dados()” e “Receber_dados()” só poderá ser
feita depois destes dois PRG´s terem sido criados.
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 70
New Automation Technology [23]
Exemplos práticos com “COMlibV2”
EXEMPLO Nº03 - CX+COM (SoftPLC TC2) CX+COM (SoftPLC TC2)
=> Programa “MAIN_rapida” <=
5º Passo :
Criar uma “Task rapida”
NOTA : A criação de um 2º programa “MAIN” “Main_rápida”, chamado
por uma Task temporal mais rápida (2mS) que o standard (10mS) , terá a
função de chamar o programa com a instancia da FB de background.
Esta técnica permite aumentar o baudrate das comunicações, sem falhas.
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 71
New Automation Technology [24]
Exemplos práticos com “COMlibV2”
EXEMPLO Nº03 - CX+COM (SoftPLC TC2) CX+COM (SoftPLC TC2)
=> Programa “MAIN_rapida” <=
6º Passo :
Criar instância da FB de “background”
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 72
New Automation Technology [25]
Exemplos práticos com “COMlibV2”
EXEMPLO Nº03 - CX+COM (SoftPLC TC2) CX+COM (SoftPLC TC2)
=> Programa “Enviar_dados( )” <=
7º Passo :
Escrever programa com instância da FB
de enviar mensagem (“string”)
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 73
New Automation Technology [26]
Exemplos práticos com “COMlibV2”
EXEMPLO Nº03 - CX+COM (SoftPLC TC2) CX+COM (SoftPLC TC2)
=> Programa “Receber_dados_KL6001( )” <=
8º Passo :
Escrever programa com a instância da
FB de receber mensagem (“string”)
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 74
New Automation Technology EX03-PC_COM1_CX(chat).zip [27]
Exemplos práticos com “COMlibV2”
EXEMPLO Nº03 - CX+COM (SoftPLC TC2) CX+COM (SoftPLC TC2)
[Text]-”ENVIAR MENSAGEM”
[Input] / [Tap variable] -“Enviar_dados.B_enviar”
Ecrã (HMI) do Chat em cada CX
(PLC1 e PLC2).
[Text] – “%s”
[Variable]/[Textdisplay] -“Enviar_dados.Mensagem_a_enviar”
[Text] – “%s”
[Variable]/[Textdisplay] -“Receber_dados.Mensagem_a_receber”
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 75
New Automation Technology
Livrarias de comunicação “ModbusRTU”
PORTAS DE COMUNICAÇÃO
RS232 / RS422 / RS485 / TTY
Software
Protocolo Modbus RTU “ModbusRTU”
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 76
New Automation Technology [1]
Livrarias de comunicação “ModbusRTU”
O protocolo de comunicação Modbus possui uma estrutura, de envio de
mensagens entre dispositivos, de Master/Slave ou Client/Server. Foi desenvolvida
pela Modicon na década de 70.
A Modicon foi posteriormente adquirida pela Schneider e os direitos sobre o
protocolo ficou sobre controlo da Modbus Organization (www.modbus.org).
Devido à sua simplicidade e por ser um protocolo aberto (não proprietário) é muito
usado em equipamentos industriais, automação residencial, instrumentação, etc
Existem 3 padrões do protocolo Modbus para diversos suportes físicos :
RS232/RS485/RS422 Modbus RTU ou Modbus ASCII
Ethernet TCP/IP Modbus TCP
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 77
New Automation Technology [2]
Livrarias de comunicação “ModbusRTU”
O protocolo Modbus RTU é uma
estrutura, de mensagem aberta,
para comunicações via porta serie
(RS232,RS485,RS422 ou TTY),
utilizando uma comunicação de
pergunta / resposta através de
uma arquitetura Master / Slave.
Cada Slave será identificado por
um endereço único (Slave ID)
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 78
New Automation Technology [3]
Livrarias de comunicação “ModbusRTU”
O protocolo de comunicação Modbus RTU é um protocolo de envio de
mensagens (telegramas). Será enviado um telegrama, com uma tarefa ou
pergunta, ao slave para obter um telegrama de resposta desse slave.
Os telegramas (mensagens) terão um formato base.
A especificação do MODBUS RTU define um intervalo temporal de “silencio” (Pause) mínimo correspondente a 3,5 carateres entre dois
telegramas a serem enviados. Dentro de uma mensagem (telegrama) o intervalo temporal não poderá ser superior a 1,5 carateres.
As Funções no protocolo Modbus RTU definem o tipo de tarefa a executar no
slave (ler ou escrever) com um dado tamanho de dado (1bit ou 16bit/1word).
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 79
New Automation Technology [4]
Livrarias de comunicação “ModbusRTU”
TwinCAT 2 supplement / Communication / “TS6255-TwinCAT PLC Modbus RTU”
A Livraria “ModbusRTU” poderá ser usada nas seguintes portas serie :
Cartas KL** ou EL
RS232 KL6001 / KL6031 ou EL6001 / EL6002
RS422 ou 485 KL6021 / KL6041 ou EL6021 / EL6022
Interfaces PC-COM opcionais ou “onboard” para CX
RS232 CX8080, CX1xx-N30 e N40, CX9xxx-N30,
CX5xxx-N30, CX2xxx-N30
RS422 ou 485 CX8080, CX1xx-N31 e N41, CX9xxx-N31,
CX5xxx-N31, CX2xxx-N31
Controladores com MODBUS slave “onboard” *
RS232 BC8150
RS485 BC8050, BC7300, BK7300, BK7350
(*) O protocolo Modbus RTU já vem implementado de fábrica (“onboard”) . Não é necessário desenvolver código
utilizando a livraria “ModbusRTU”
(**) É possível utilizar esta livraria com a carta KL6011 (TTY - loop de corrente)
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 80
New Automation Technology [5]
Livrarias de comunicação “ModbusRTU”
A Livraria “ModbusRTU” poderá ser usada nas seguintes plataformas :
SoftPLC TC2 em PC
IPC/PCe-CX “ModbusRTU.lib”
PLC em BX
BX9000,BX8000, “ModbusRTU.lib”
BX5x00,BX3100 “TcComPortBX.lbx” *
PLC BCxx00 (old)
BC9000,BC9100, “ModbusRTU.lb6”
BC7300,BC3100
PLC BCxx50 (new)
BC9050,BC9020, “ModbusRTU.lb6”
BC9120,BC8x50, ou
BC5x50,BC3150 “ModbusRTU.lib”
(*) Esta livraria permite parametrizar e emular uma porta de comunicação do tipo PC
na COM2 dos BX´s (Ex. BX9000, BX8000, BX5200, BX5100, BX3100).
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 81
New Automation Technology [6]
Livrarias de comunicação “ModbusRTU”
Áreas de memoria do protocolo MODBUS
Área do MODBUS Tamanho dado Tipo acesso Tipo endereço Exemplo
Entradas discretas 1 bit Só de leitura %I
(Digital inputs) (read only) (ex. %IX0.0)
Saídas discretas 1 bit Leitura e %Q
(Digital outputs / coils) 16 bit escrita (ex. %QX0.0)
(read / write)
Entradas analógicas %I
(Input registers) Só de leitura (ex. %IW0)
(read only)
Saídas analógicas 16 bit Leitura / escrita %Q / %M
(Output registers) (read / write) (ex. %QW0 ou %MW0)
Tabela das funções operacionais do protocolo MODBUS RTU na BECKHOFF
Função operacional Código da função Endereço BECKHOFF (Offset+1) Funções MODBUS
Read Coils status 01%Q (1bit) %Q*0x0800 (0800+1)hex / (02049)dec
Read Input status 02%I (1 bit) %I* 0x0000 (0000+1)hex / (00001)dec
Read Holding Registers 03%Q,M (16bit) %Q*0x0800 (0800+1)hex / (02049)dec
%M*0x4000 (4000+1)hex / (16385)dec
Read Input Registers 04%I (16bit) %I* 0x0000 (0000+1)hex / (00001)dec
Write Single Coil 05%Q (1bit) %Q*0x0800 (0800+1)hex / (02049)dec
Write Single Register 06%Q,%M (16bit) %Q*0x0800 (0800+1)hex / (02049)dec
%M*0x4000 (4000+1)hex / (16385)dec
Write Multiple Coils 15%Q(1bit) %Q*0x0800 (0800+1)hex / (02049)dec
Write Multiple Registers 16%Q,%M (16bit) %Q*0x0800 (0800+1)hex / (02049)dec
%M*0x4000 (0400+1)hex / (16385)dec
Diagnostic 08 ------------------------------ NOTA : Existem outras Funções como a 20, 21, 22, 23 etc.
(*) O Endereço MODBUS nos sistemas BECKHOFF, na tabela anterior, é representada em Base 1 (offset+1).
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 82
New Automation Technology [7]
Livrarias de comunicação “ModbusRTU”
Livraria BECKHOFF para protocolo MODBUS RTU (FB´s Master) – “ModbusRTU.lib” e “*.lb6”
FB MODBUS MASTER COM Ações (Actions) Funções Bloco (FB)
ModbusRtuMaster_PcCom PC-COM As instancias das FB´s ModbusRtuMaster_PcCom , ModbusRtuMaster_KL6x22B ou
(64 BYTE) ModbusRtuMaster_KL6x5B tem atribuídas ações (“Actions”).
Essas ações correspondem às Funções MODBUS standard e são as seguintes :
ModbusRtuMaster.ReadCoils
Modbus function 1 = Read Coils
ModbusRtuMaster.ReadInputStatus
Modbus function 2 = Read Input Status
ModbusRtuMaster_KL6x22B KL6031 ModbusRtuMaster.ReadRegs
KL6041 Modbus function 3 = Read Holding Registers
EL6001
EL6002 ModbusRtuMaster.ReadInputRegs
EL6021 Modbus function 4 = Read Input Registers
EL6022
ModbusRtuMaster.WriteSingleCoil
(22 BYTE) Modbus function 5 = Write Single Coil
ModbusRtuMaster.WriteSingleRegister
Modbus function 6 = Write Single Register
ModbusRtuMaster_KL6x5B KL6001 ModbusRtuMaster.WriteMultipleCoils
KL6011 Modbus function 15 = Write Multiple Coils
KL6021
KL6031 ModbusRtuMaster.Write Regs
KL6041 Modbus function 16 = Preset Multiple Registers
(5 BYTE) ModbusRtuMaster.Diagnostics
Modbus function 8 = Diagnostics
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 83
New Automation Technology [8]
Livrarias de comunicação “ModbusRTU”
Livraria BECKHOFF para protocolo MODBUS RTU (FB´s Master) – “ModbusRTU.lib” e “*.lb6”
FB MODBUS MASTER COM VAR_INPUT / VAR_OUTPUT das FB Funções Bloco (FB)
ModbusRtuMaster_PcCom PC-COM VAR_INPUT
ModbusRtuMaster_KL6x22B (64 BYTE) UnitID - Endereço da estação slave que pretendemos comunicar (1..247). O
endereço “0” corresponde a telegramas de brodcast para respostas coletivas.
KL6031 Quantity - Nº de dados a ser lidos ou escritos (nº de words ou nº de bits).
KL6041 MBAddr - Endereço do equipamento slave que pretendemos ler / escrever
EL6001 os dados.
EL6002 cbLength - Tamanho dos dados (em bytes) a ler ou a escrever no slave. Este
EL6021 nº deve ser maior ou igual à quantidade de dados indicadas em Quantity [ex.
EL6022 cbLength >= Quantity * 2 ]. O cbLength pode ser calculado com a instrução
(22 BYTE) SIZEOF(variavel)
pMemoryAddr - Endereço de memoria no PLC é calculado com a instrução
ADR(variavel). Nas ações de leitura os dados serão armazenados em variáveis
residentes no PLC master. Nas ações de escrita os dados enviados para o
slave estão guardados em variáveis no PLC master.
Execute - Ordem de execução com o flanco ascendente desta entrada.
Timeout - Tempo máximo que o master espera pela resposta do slave.
ModbusRtuMaster_KL6x5B KL6001 VAR_OUTPUT
KL6011 BUSY - Indica que a função bloco se encontra ativa e em execução. Esta
KL6021 saída passa a TRUE logo que dê inicio à execução da mesma, através da
KL6031 ordem de Execute. Passa a FALSE depois de completar a ação.
KL6041 Error - Indica que ocorreu um erro na execução da ação.
ErrorId - Nº que indica o tipo de erro (ENUM “Modbus_Errors”).
(5 BYTE) cbRead - Indica o nº de dados lidos.
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 84
New Automation Technology [9]
Livrarias de comunicação “ModbusRTU”
Livraria BECKHOFF para protocolo MODBUS RTU (FB´s Slave) – “ModbusRTU.lib e “*.lb6”
FB MODBUS SLAVE COM VAR_INPUT / VAR_OUTPUT das FB Funções Bloco (FB)
ModbusRtuSlave_PcCom PC-COM VAR_INPUT
NOTA : Esta FB só existe na (64 BYTE) UnitID - Endereço desta estação slave (1..127). O equipamento slave só
livraria “ModbusRTU.lib”. responde ao pedido se o telegrama recebido tem o endereço correto.
(para IPC, CX e BX e BCxx50) KL6031 É possível ter um endereço coletivo (End. “0”, para ordem de broadcast) em
KL6041 que todas as estações slave respondem.
ModbusRtuSlave_KL6x22B EL6001 AdrInputs - Endereço do começo do ARRAY das entradas (%I - Modbus input
EL6002 array), utilizando a instrução ADR(varivel_entrada). Terá de ser declarada
ModbusRtuSlave_KL6x5B EL6021 uma variável do tipo ARRAY no programa do PLC.
EL6022 SizeInputBytes - Tamanho do ARRAY das entradas (em nº de bytes) usando
(22 BYTE) a instrução SIZEOF(variável_entrada).
AdrOutputs - Endereço de inicio do ARRAY das saídas (%Q -Modbus output
KL6001 array), utilizando a instrução ADR(varivel_saida). Terá de ser declarada uma
KL6011 variável do tipo ARRAY no programa do PLC.
KL6021 SizeOutputBytes - Tamanho do ARRAY das saídas (em nº de bytes) usando
KL6031 a instrução SIZEOF(variável_saida).
KL6041 AdrMemory - Endereço de inicio do ARRAY das memorias (%M - Modbus
(5 BYTE) memory array), utilizando a instrução ADR(varivel_memoria). Terá de ser
declarada uma variável do tipo ARRAY no programa do PLC.
SizeMemoryBytes - Tamanho do ARRAY das memorias (em nº de bytes)
usando a instrução SIZEOF(variável_memoria).
VAR_OUTPUT
ErrorId - Nº que indica o tipo de erro (ENUM “Modbus_Errors”).
NOTA - Os endereços de 248 e 257 não podem ser usados como endereços
para os equipamentos Modbus Slave. Reservados para o sistema.
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 85
New Automation Technology [10]
Livrarias de comunicação “ModbusRTU”
Livraria BECKHOFF para protocolo MODBUS RTU (FB´s Slave) – “ModbusRTU.lib e “*.lb6”
FB MODBUS SLAVE COM VAR_INPUT / VAR_OUTPUT das FB Funções Bloco (FB)
ModbusRtuSlave_PcCom PC-COM AREAS DE MEMORIA A DECLARAR NO PROGRAMA DO PLC ”Slave”
(64 BYTE)
NOTA : Esta FB só existe na INPUT [Funções 2,4] AdrInputs [ADR()] / SizeInputBytes [SIZEOF()]
livraria “ModbusRTU.lib”. O ARRAY de Inputs , declarado no programa do PLC, permite a leitura do
(para IPC, CX e BX e BCxx50) estado logico (bit) ou analógico (word) das entradas %I* no PLC (ou não).
ModbusRtuSlave_KL6x22B KL6031
KL6041
EL6001 OUTPUT [Funções 1,3,5,6,15,16] AdrOutputs / SizeOutputBytes
EL6002 O ARRAY de Outputs , declarado no programa do PLC, permite a leitura
EL6021 do estado logico (bit) ou analógico (word) das saidas %Q* do PLC (ou não).
EL6022
(22 BYTE)
ModbusRtuSlave_KL6x5B KL6001 MEMORY [Funções 3,6,16] AdrMemory / SizeMemoryBytes
KL6011 O ARRAY de Memories, declarado no programa do PLC, permite a leitura do
KL6021 estado logico(bit) ou analógico(word) das memorias %M* do PLC (ou não).
KL6031
KL6041
(5 BYTE)
NOTA : Nas VAR_INPUT das instancias utiliza-se as instruções ADR() e SIZE()
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 86
New Automation Technology [11]
Livrarias de comunicação “ModbusRTU”
Tabela das funções operacionais do protocolo MODBUS RTU Master
Função operacional Código da função Endereço Modbus - Offset (Hex) / [Dec] Funções Modbus – ModbusMaster.(actions)
Read Coils status ModbusMaster.ReadCoils
Read Input status 01%Q (1bit) %Q*0x0800 (0x0000+0800+1) / [0x02049]
02%I (1 bit) ModbusMaster.ReadInputsStatus
Read Holding Registers 03%Q,M (16bit) %I* 0x0000 (1x0000+0000+1) / [1x00001] ModbusMaster.ReadRegs
Read Input Registers 04%I (16bit) %Q*0x0800 (4x0000+0800+1) / [4x02049] ModbusMaster.ReadInputRegs
Write Single Coil 05%Q (1bit) %M*0x4000 (4x0000+4000+1) / [4x16385] ModbusMaster.WriteSingleCoil
06%Q,%M ModbusMaster.WriteSingleReg
Write Single Register (16bit) %I* 0x0000 (3x0000+0000+1) / [3x00001]
15%Q(1bit) ModbusMaster.WriteMultipleCoils
Write Multiple Coils 16%Q,%M %Q*0x0800 (0x0000+0800+1) / [0x02049] ModbusMaster.WriteRegs
Write Multiple Registers (16bit)
08 %Q*0x0800 (4x0000+0800+1) / [4x02049] FB_MBDiagnose
Diagnostic %M*0x4000 (4x0000+4000+1) / [4x16385]
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 87
%Q*0x0800 (0x0000+0800+1) / [0x02049]
%Q*0x0800 (4x0000+0800+1) / [4x02049]
%M*0x4000 (4x0000+4000+1) / [4x16385]
------------------------------
(*) O Endereço Modbus na tabela anterior é representada em Base 1 (offset+1).
New Automation Technology [1]
Controladores com MODBUS RTU Slave “Onboard”
Controladores BECKHOFF BC´s e BK´s com protocolo MODBUS RTU ou ASCII “onboard”
MODELO TIPO PORTA TABELA DE MODBUS RTU / ASCII (endereços em Hex / Dec)
BC7300 PLC RS485
BC8050 PLC RS485
BC8150 PLC RS232 RS485
BK7300 I/O RS485
BK7350 I/O RS485
BK8000 I/O RS485 RS232
BK8100 I/O RS232
ILxxxx-B730 I/O RS485
IP230x-B730 I/O RS485
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 88
New Automation Technology [2]
Controladores com MODBUS RTU Slave “Onboard”
Controladores BECKHOFF BC´s e BK´s com protocolo MODBUS RTU ou ASCII “onboard” (*)
MODELO TIPO PORTA TABELA DE MODBUS RTU / ASCII (endereços em Hex / Dec)
BC7300 PLC RS485
Modbus RTU (hex / dec) Controlador BC
BC8050 PLC RS485
3x00000+1 / 3x00001 [BC7300 - %QB0128]
3x000FF+1 / 3x00256 [BC8x50 - %QB1000]
4x00800+1 / 4x02049 [BC7300 - %IB 0128 ]
4x008FF+1 / 4x02304 [BC8x50 - %IB1000 ]
BC8150 PLC RS232
BK7300 I/O RS485
BK7350 I/O RS485
BK8000 I/O RS485
BK8100 I/O RS232
ILxxxx-B730 I/O RS485
IP230x-B730 I/O RS485 4x04000+1 / 4x16385 [BCxxxx - %MB000]
4x040FF+1 / 4x16640 [BCxxxx - %MB511]
(*) Só PLC´s (BC7300,BC8x50,IL230x-C730) – O tamanho dos registos no Modbus são de dois bytes (2 x %MBx)
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 89
New Automation Technology [1]
Exemplos práticos com “ModbusRTU”
EXEMPLO Nº01 - Programa com BC9100(Modbus Slave)+KL6031+KL9010
Modbus RTU Master
Modbus RTU Slave
NOTA : Neste exemplo será usado o software Modbus Poll da Witte KS2000
Software, a correr no PC, como Modbus RTU Master. Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 90
A carta KL6031 (RS232) irá funcionar com os parâmetros de fábrica
[22 bytes de dados, RTS/CTS ativo] e [Baudrate 9600, 8 bit de dados,
sem bit de paridade e 1 bit de stop (9600 8N1)]
New Automation Technology [2]
Exemplos práticos com “ModbusRTU”
EXEMPLO Nº01 - Programa com BC9100(Modbus Slave)+KL6031+KL9010
“System Manager” “Export Variable info…” 1º Passo :
Instalar no projeto a
livraria “ModbusRTU.lb6”
“PLC Control”
NOTA : Ficheiro exportado do System Manager (comando “Export Variable Info…”) e que poderá ser importado
no PLC Control . No KL6031-RS232 podemos ter configurações de 3, 5 e 22 (valor de defeito) bytes de dados.
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 91
New Automation Technology [3]
Exemplos práticos com “ModbusRTU”
EXEMPLO Nº01 - Programa com BC9100(Modbus Slave)+KL6031+KL9010
=> Programa de configuração d Modbus RTU Slave “ModbusRTU_Slave( )” <=
3º Passo :
No programa MAIN chame o
“ModbusRtu_Slave”(PRG).
2º Passo :
Escrever programa com a instancia
da FB de Modbus RTU Slave.
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 92
New Automation Technology [4]
Exemplos práticos com “ModbusRTU”
EXEMPLO Nº01 - Programa com BC9100(Modbus Slave)+KL6031+KL9010
=> Definição das variáveis globais <=
=> Estrutura de dados <= NOTA : A declaração das variáveis globais, depois de criado todo o
programa e compilado, poderá ser gerado automaticamente usando
os comandos <Insert> / <All Instance Paths>. Os endereços
absolutos %I* e %Q* terão de ser introduzidos manualmente.
4º Passo :
Declarar as VARIÁVEIS GLOBAIS
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 93
New Automation Technology [5]
Exemplos práticos com “ModbusRTU”
EXEMPLO Nº01 - Programa com BC9100(Modbus Slave)+KL6031+KL9010
[Text] – “%i”
[Variable]/[Textdisplay] –
“ModbusRTU_Slave.HoldingRegs[0]”
“ModbusRTU.Slave.HoldingRegs[7]”
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 94
New Automation Technology [6]
Exemplos práticos com “ModbusRTU”
EXEMPLO Nº01 - Programa Modbus Poll (Modbus RTU Master) instalado no PC
1º Passo : “Setup”
2º Passo : “Connection”
End. 16384 dec
NOTA : Endereços a utilizar para cada Array [0..7] do
protocolo Modbus RTU Slave no PLC usando a função
“03 Read Holding Registers (4x)”.
Endereços com “Protocolo Address (Base0)”
InputsRegs [0..7] [Address: 00000 dec]
OutputsRegs [0..7] [Address: 02048 dec]
HoldingRegs [0..7] [Address: 16384 dec]
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 95
New Automation Technology [7]
Exemplos práticos com “ModbusRTU”
EXEMPLO Nº01 - Programa Modbus Poll (Modbus RTU Master) instalado no PC
Endereços com “Protocolo Address (Base0)”
00000 dec 02048-02055 dec
Funções 2 e 4 End.16390 dec
End.16391 dec
00008 dec
Funções 1,3,5,6,15 e 16 End.16384 dec
16384 dec
Funções 3,6 e 16
16391 dec
End.16389 dec
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 96
New Automation Technology
Exemplos práticos com “ModbusRTU” ModbusPoll.zip EX01-BCxx_KL_ModbusRTU_Slave.zip [8]
EXEMPLO Nº01 - Programa Modbus Poll (Modbus RTU Master) instalado no PC
End. 16390 dec
End. 16391 dec
End. 16384 dec
End. 16389 dec
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 97
New Automation Technology [9]
Exemplos práticos com “ModbusRTU”
EXEMPLO Nº02 - Programa com BC9100(Modbus Master)+KL6031+KL9010
Modbus RTU Slave
Modbus RTU Master
NOTA : Neste exemplo será usado o software Modbus Slave da Witte KS2000
Software, a correr no PC, como Modbus RTU Slave. Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 98
A carta KL6031 (RS232) irá funcionar com os parâmetros de fábrica
[22 bytes de dados, RTS/CTS ativo] e [Baudrate 9600, 8 bit de dados,
sem bit de paridade e 1 bit de stop (9600 8N1)]
New Automation Technology [10]
Exemplos práticos com “ModbusRTU”
EXEMPLO Nº02 - Programa com BC9100(Modbus Master)+KL6031+KL9010
“System Manager” “Export Variable info…” 1º Passo :
Instalar no projeto a
livraria “ModbusRTU.lb6”
“PLC Control”
NOTA : Ficheiro exportado do System Manager (comando “Export Variable Info…”) e que poderá ser importado
no PLC Control . No KL6031-RS232 podemos ter configurações de 3, 5 e 22 (valor de defeito) bytes de dados.
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 99
New Automation Technology [11]
Exemplos práticos com “ModbusRTU”
EXEMPLO Nº02 - Programa com BC9100(Modbus Master)+KL6031+KL9010
=> Programa de configuração d Modbus RTU Master “ModbusRTU_Master( )” <=
3º Passo :
No programa MAIN chame o
“ModbusRtu_Master”(PRG).
2º Passo :
Escrever programa com a instancia
da FB de Modbus RTU Master.
Bresimar Automação, S.A. ( J.Andril ) 22.02.2019 100