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 admin@192.168.1.10
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 admin@192.168.188.41:~/
ssh -ttt admin@192.168.188.41 \
"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 admin@192.168.1.10
admin@192.168.1.10:~$ su root
root@192.168.1.10$ mkdir -p /etc/default/socat
root@192.168.1.10$ touch /etc/default/socat/socat.conf
root@192.168.1.10$ 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