Conectando PLCs PLCnext a RS232/RS485 remoto via pseudo TTY
Neste artigo do Makers Blog discutimos as possibilidades e vantagens que um Com Server proporciona à plataforma PLCnext.
Introdução
Os módulos de extensão que a Phoenix Contact oferece para seus PLCs podem ser, por exemplo, adaptadores seriais como:
- AXL F RS UNI
- IB IL RS 232-PRO
- IB IL RS 485
- IB IL RS UNI
- …
Todos os módulos de extensão têm algo em comum:podem ser acessados ciclicamente via processdata. Isso oferece a possibilidade de interagir diretamente com o dispositivo serial de nosso aplicativo em tempo real.
Em alguns casos não é isso que queremos. Em vez disso, queremos reutilizar as bibliotecas (C/C++) existentes e não precisamos do contexto em tempo real. No entanto, veremos que essas bibliotecas geralmente são programadas para ter acesso direto a uma interface COM ou TTY.
Existem duas opções para criar uma interface TTY para um
PLCnext Control
:- Implemente algumas funções (C++ / C#) que criam uma interface TTY para os adaptadores seriais AXL ou IL de dentro do
PLCnext Runtime
. - Uso de dispositivos COM-Server, como o GW Device Server
O
GW Device Server
fornece um TCP to Serial
transparente interface. Com a ajuda de uma ferramenta como Socat
podemos encaminhar o tráfego Serial/TCP diretamente para uma interface pseudo TTY. Usando GW Device Server
também oferece a possibilidade de se comunicar com o dispositivo serial em locais remotos por meio de um canal criptografado TLS. NOTA
Neste tutorial, o CP atua como cliente e estabelece conexão com um
GW Device Server
. (No entanto, também é possível alternar o PLC
Socat
a uma opção de escuta e ter o GW como cliente conectado ativamente ao PLC.) Configuração
Configurando o servidor de dispositivo GW
Nós nos conectamos ao
GW Device Server
através do Gerenciamento via Web. O endereço IP padrão do GW Device Server
é 192.168.254.254. Usamos as seguintes configurações:
Configurações da LAN – Segurança
- Ativar servidor SSH
- Ativar servidor Telnet
- Desativar o modo de dados seguro
- Desativar servidor TFTP
Configurações seriais
- Configuração da porta 1 (COM1):ative a conexão TCP na porta 8000
- Configuração da porta 2 (COM2):habilitar conexão TCP na porta 8001
Testando o servidor de dispositivo GW
Para testar se configuramos o
GW Device Server
corretamente, primeiro conectamos nosso PLC ao GW Device Server
via Ethernet. Em seguida, conectamos os dois adaptadores DSUB do GW Device Server
um com o outro. Podemos testar rapidamente a configuração usando a ferramenta
Telnet
. Com esta ferramenta, podemos enviar dados do PLC para o GW Device Server
em Port8000/COM1 através do cabo serial para Port8001/COM2 e finalmente recebê-lo de volta no PLC. Usamos os seguintes comandos:
ssh [email protected]
sudo passwd root
su root
ip addr add 192.168.254.10 dev eth0
telnet 192.168.254.254 8000
## open another shell session
telnet 192.168.254.254 8001
# Type some messages
Construindo Socat
Para construir
Socat
facilmente em um sistema operacional Linux, usamos os seguintes comandos:mkdir tmp
cd tmp
git clone git://repo.or.cz/socat.git
cd socat
## TODO: Modify to your SDK location
source /opt/pxc/release/axcf2152/2020/0/environment-setup-cortexa9t2hf-neon-pxc-linux-gnueabi
. /opt/pxc/release/axcf2152/2020/0/site-config-cortexa9t2hf-neon-pxc-linux-gnueabi
mkdir install
autoconf
./configure $CONFIGURE_FLAGS --prefix=$(pwd)/install --enable-openssl-method
make -j2
make install
Implantando e instalando o Socat
Para implantar o
Socat
instalação, executamos o seguinte script:cd tmp
mkdir -p deploy
cd deploy
mkdir -p usr
cp -r ../../Daemon/* .
cp -r ../socat/install/* usr/
# Create package
tar -cf ../socat-binaries.tar .
cd ..
scp socat-binaries.tar [email protected]:~/
ssh -ttt [email protected] \
"mkdir -p /opt/plcnext/socat-binaries && \
tar -xf /opt/plcnext/socat-binaries.tar -C /opt/plcnext/socat-binaries"
Após a implantação, agora podemos ssh para nosso PLC. Portanto, primeiro preparamos o CP configurando os diretórios e arquivos de configuração executando os seguintes comandos:
deploy$ ssh [email protected]
[email protected]:~$ su root
[email protected]$ mkdir -p /etc/default/socat
[email protected]$ touch /etc/default/socat/socat.conf
[email protected]$ touch /etc/init.d/SocatDaemon
Agora, modificamos o
socat.conf
arquivo para configurar os parâmetros da interface serial para nossas necessidades. nano /etc/default/socat/socat.conf
O conteúdo do arquivo se parece com isso.
TARGETIP="192.168.254.254"
TARGETPORT="8000"
TTYNAME="/dev/ttyGWDeviceServer"
OPTIONS="pty,link=$TTYNAME tcp-connect:$TARGETIP:$TARGETPORT,forever,interval=15"
BAUD="9600"
PARITY=""
DATABITS="csN 8"
STOPBITS="-cstopb"
FLOWCONTROLL=""
Se precisarmos modificar outros parâmetros, também precisaremos modificar o
SocatDaemon
Arquivo. Mais informações sobre os parâmetros TTY podem ser encontradas nas páginas do manual stty. Agora criamos um
SocatDaemon
arquivo para se conectar automaticamente ao GW Device Server
usando um Socat
demônio. OBSERVAÇÃO:
Este arquivo SocatDaemon é um exemplo sem gerenciamento de erros/desconexão etc. por favor.
nano /etc/init.d/SocatDaemon
O arquivo tem o seguinte conteúdo.(clique para ver/ocultar o código)
Agora que todos os arquivos de configuração estão no lugar, podemos prosseguir configurando o
Socat
binários e registrando o Socat
demônio. chmod +x /etc/init.d/SocatDaemon
cd /opt/plcnext/socat-binaries
chmod +x usr/bin/*
cp -r usr /
update-rc.d -s -v SocatDaemon 99
/etc/init.d/SocatDaemon start
Se tudo estiver configurado corretamente, podemos ver o daemon em execução usando um comando como
ps -e | grep socat
. Também podemos verificar o Socat
logs localizados em cat /var/log/socat.log
. Acessando a interface TTY de um terminal
Agora podemos enviar mensagens pela interface TTY.
sudo echo "PLC to GW $var" > /dev/GWDeviceServer
Para testar continuamente o pseudo TTY, podemos usar um comando como
while true; do sleep 5 && sudo echo "PLC to GW $var" >/dev/ttyUSB0 && var=$((var+1)); done
O tráfego de entrada pode ser exibido executando
cat /dev/GWDeviceServer
. Agora qualquer aplicação pode acessar o dispositivo Serial conectado ao GW Device Server como se estivesse conectado diretamente ao CP. Tecnologia industrial
- CLPs para acionamentos na indústria
- O que é PCB via Tenting?
- Monitoramento em nuvem, um sistema de controle remoto
- 5 vantagens do controle remoto de produção
- gRPC remoto usando grpcurl
- Gerenciando um dispositivo PLCnext Control via SNMP
- Clustermangement no PLCnext?
- Painel PLCnext Tableau
- Relatórios PLCnext Power BI
- PLCnext Grafana Dashboards