The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.

BECKHOFF-TC2_PLC-3.1-TwinCAT 2 COM Free ModbusRTU

Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by Vidal Jovan, 2020-12-08 06:32:14

BECKHOFF-TC2_PLC-3.1-TwinCAT 2 COM Free ModbusRTU

BECKHOFF-TC2_PLC-3.1-TwinCAT 2 COM Free ModbusRTU

Keywords: beckhoff,twincat,bresimar,asatek,andril

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


Click to View FlipBook Version