Arthur Santos Magalhães, Heitor Lúcio Alves, Pedro dos Santos Alves Barbosa
Prática 4: Integração CODESYS e FACTORY
I/O
Belo Horizonte, Brasil
2026
1
1 Introdução
Nesta prática, foi desenvolvido o procedimento de integração entre o CODESYS e
o FACTORY I/O por meio do protocolo OPC UA, com aplicação à cena Sorting by Height
(Advanced), disponibilizada no Google Classroom. O problema consistia em controlar uma linha
de classificação automatizada na qual paletes chegam por uma esteira alimentadora, atravessam
uma esteira de entrada e atingem uma mesa giratória que os despacha alternadamente entre
as saídas esquerda e direita, garantindo distribuição uniforme entre as duas linhas. Assim,
o experimento teve como objetivos consolidar o procedimento de configuração do canal de
comunicação CODESYS–FACTORY I/O — etapa reaproveitável em projetos futuros do grupo
—, implementar o controle do processo em Structured Text e verificar o comportamento de
alternância na simulação.
Figura 1 – Cena Sorting by Height (Advanced) em execução, com a mesa giratória despa-
chando paletes para as esteiras de saída.
2 Desenvolvimento
O desenvolvimento foi organizado em duas frentes. A primeira descreve o procedimento
de integração em si — passos que se repetirão em qualquer projeto que envolva CODESYS e
FACTORY I/O via OPC UA. A segunda detalha a aplicação desse procedimento ao caso da
cena Sorting by Height (Advanced).
2.1 Procedimento de integração
O procedimento começa pela criação do projeto no CODESYS. Abre-se o ambiente,
cria-se um Standard project e seleciona-se CODESYS Control Win V3 como dispositivo e
Structured Text como linguagem do PLC_PRG. Em seguida, adiciona-se à árvore do projeto
2
uma Global Variable List, nomeada FIO, que concentrará todas as variáveis trocadas com o
simulador.
Na lista FIO, declaram-se as entradas (prefixadas com i) e saídas (prefixadas com
o) do processo como variáveis booleanas. Cada entrada corresponde a um sensor da cena, e
cada saída corresponde a um atuador. A lógica de controle é então escrita em PLC_PRG, em
Structured Text, organizada como uma máquina de estados sustentada por variáveis auxiliares
e por blocos F_TRIG de detecção de bordas.
Para habilitar a comunicação OPC UA, inicia-se o CODESYS Control Win pelo SysTray
e, em Communication Settings, faz-se a varredura da rede. Como o OPC UA exige Device
User Management ativo, cadastra-se um usuário do dispositivo e efetua-se logon. Em Change
Communication Policy, altera-se o User Management para opcional e habilita-se Allow anony-
mous login. Por fim, em Access Rights, dentro de RemoteConnections → OPCUAServer,
concedem-se as permissões Modify, View e Execute ao perfil Anonymous_OPCUAServer. Sem
essa flexibilização, o servidor recusa qualquer conexão externa.
Compila-se o projeto em Build (F11) e adiciona-se o objeto Symbol Configuration,
marcando-se a opção Support OPC UA features no momento da criação e selecionando a lista
FIO entre os símbolos exportados (Figura 2). O download para o PLC ocorre em Online →
Login, e a execução é iniciada em Debug → Start.
Figura 2 – Configuração de símbolos com a lista FIO marcada para exportação.
No FACTORY I/O, em File → Driver Configuration, seleciona-se o driver OPC Client
DA/UA e informa-se o endereço [Link]://localhost:4840 no campo OPC Server. Após a
conexão, aplica-se o filtro de nomes contendo FIO para listar apenas as variáveis exportadas pelo
CODESYS, clica-se em BROWSE e vincula-se cada tag ao sensor ou atuador correspondente
na cena (Figura 3).
3
Figura 3 – Mapeamento dos tags da lista FIO aos sensores e atuadores da cena, com o
driver OPC Client DA/UA conectado ao OPCUAServer@LAIC05.
2.2 Aplicação: Sorting by Height (Advanced)
Para a aplicação do procedimento, foi escolhida a cena Sorting by Height (Advanced),
em que uma mesa giratória posicionada entre duas esteiras de saída despacha os paletes que
chegam pela esteira de entrada. A cena exigiu a declaração de onze entradas na lista FIO,
referentes aos sensores de posição na entrada, na mesa giratória, nas posições de carga e
descarga, nas entradas e saídas das esteiras laterais e na leitura de altura das caixas, e de
sete saídas, correspondentes aos atuadores das esteiras (alimentadora, de entrada, esquerda e
direita) e aos comandos de carga, descarga e rotação da mesa.
A lógica de controle foi organizada como uma máquina de estados implementada
por variáveis booleanas. As esteiras de saída esquerda e direita são governadas por variáveis
Pallet_on_left e Pallet_on_right, setadas quando o sensor de entrada da respectiva
esteira detecta o palete e resetadas quando o sensor de saída deixa de detectá-lo. A mesa girató-
ria, por sua vez, percorre cinco estados — Idle, Charging, Turns_charged, Discharging e
Turns_Discharged —, com transições disparadas pelos sensores de posição da própria mesa.
O comportamento de alternância entre as saídas foi obtido por meio de uma variável
Discharge_direction, invertida a cada novo palete que entra na mesa (Discharge_direction
:= NOT Discharge_direction). As saídas oLoad, oUnload e oTurn são calculadas a partir
do estado atual da mesa e desse direcionamento, de modo que paletes consecutivos sejam des-
pachados para lados opostos. Um ponto importante do controle foi a variável Turntable_busy,
usada para impedir que um novo palete avance pela esteira de entrada enquanto a mesa ainda
estiver operando o palete anterior, evitando colisões.
4
3 Resultados
Com a implementação concluída, o programa foi executado em modo de monitoramento,
de modo a acompanhar o comportamento das variáveis em tempo real. A Figura 4 mostra a lista
FIO durante a operação: o sensor iAtEntry aparece em TRUE (palete detectado na entrada) e
a saída oEntryConveyor também em TRUE (esteira de entrada acionada), confirmando que a
troca de dados via OPC UA está ocorrendo a cada ciclo de varredura.
Figura 4 – Lista FIO em execução, com troca de dados ativa entre CODESYS e FACTORY
I/O.
O PLC_PRG, também em monitoramento (Figura 5), apresentou as variáveis locais e os
valores correntes nas atribuições do código, evidenciando a evolução correta da máquina de
estados — particularmente nos blocos F_TRIG de detecção de bordas e na lógica de comutação
das esteiras de saída.
Figura 5 – PLC_PRG em modo monitoramento, com as variáveis locais e os valores correntes
da máquina de estados visíveis nas atribuições.
5
No simulador, a cena operou de forma estável e contínua. A esteira alimentadora
introduziu paletes na esteira de entrada, que os transportou até a mesa giratória; a mesa, por
sua vez, despachou cada palete alternadamente para uma das duas saídas, conforme programado.
O sincronismo entre paletes consecutivos foi mantido pela variável Turntable_busy, e o ciclo
se manteve em loop durante toda a duração dos testes, sem necessidade de reinício manual.
4 Conclusão
Nesta prática, os resultados ficaram de acordo com os objetivos do experimento. O
canal de comunicação CODESYS–FACTORY I/O foi estabelecido com sucesso via OPC UA, e
a cena Sorting by Height (Advanced) operou conforme o esperado, com alternância correta
entre as saídas e reinício automático do ciclo.
As principais dificuldades estiveram concentradas na configuração da política de co-
municação do OPC UA — em especial, a necessidade de tornar o Device User Management
opcional e conceder permissões ao usuário anônimo do servidor, etapa sem a qual o FACTORY
I/O não consegue se conectar ao servidor do CODESYS. Documentar essas configurações no
procedimento foi o que permitiu que a etapa de integração deixasse de ser obstáculo e passasse
a ser uma rotina mecânica para as próximas práticas.
Além de resolver o problema proposto, a atividade consolidou um procedimento de
integração entre PLC virtual e simulador industrial, que servirá como base para os próximos
projetos da disciplina. Como valor prático, o experimento estruturou uma rotina de configuração
reutilizável; como valor teórico, exemplificou a aplicação direta do paradigma de máquina de
estados na coordenação de processos com múltiplos sensores e atuadores.