亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 工业技术

基于伪 TTY 的 PLCnext PLC 远程 RS232/RS485 连接方案

本 Maker 博客文章讨论 Com Server 为 PLCnext 平台提供的可能性和优势。基于伪 TTY 的 PLCnext PLC 远程 RS232/RS485 连接方案

简介

Phoenix Contact 为其 PLC 提供的扩展模块包括串口适配器,如:

所有扩展模块共同点:可通过过程数据周期性访问。这提供从实时应用直接与串口设备交互的可能性。

某些情况下这非所需。我们想复用现有 (C/C++) 库且不需要实时上下文。但这些库通常编程为直接访问 COM 或 TTY 接口。

为 PLCnext Control 创建 TTY 接口有两种选择:

  1. 实现一些函数 (C++ / C#) 在 PLCnext Runtime 内部为 AXL 或 IL 串口适配器创建 TTY 接口。
  2. 使用 GW Device Server 等 COM-Server 设备

GW Device Server 提供透明 TCP to Serial 接口。借助 Socat 等工具可将串口/TCP 流量直接转发到伪 TTY 接口。使用 GW Device Server 还提供通过 TLS 加密通道与远程位置串口设备通信的可能性。

注意

本教程中,PLC 作为客户端建立到 GW Device Server 的连接。

(不过也可将 PLC Socat 切为监听模式,让 GW 作为客户端主动连接 PLC。)

设置

基于伪 TTY 的 PLCnext PLC 远程 RS232/RS485 连接方案

设置 GW Device Server

通过基于 Web 的管理连接 GW Device Server。默认 IP 为 192.168.254.254。

使用以下设置:

LAN 设置 — 安全
串口设置

测试 GW Device Server

测试设置是否正确,先用以太网连接 PLC 到 GW Device Server。再将 GW Device Server 两个 DSUB 适配器互连。

可用 Telnet 工具快速测试。用此工具从 PLC 发送数据到 GW Device Server 端口 8000/COM1,经串口线到端口 8001/COM2,最后在 PLC 接收回来。

使用以下命令:

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
基于伪 TTY 的 PLCnext PLC 远程 RS232/RS485 连接方案

构建 Socat

在 Linux OS 上轻松构建 Socat 使用以下命令:

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

部署安装 Socat

部署 Socat 安装执行以下脚本:

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"

部署后,现可 ssh 到 PLC。因此先在 PLC 运行以下命令准备目录和配置文件:

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

现在修改 socat.conf 文件配置串口参数。

nano /etc/default/socat/socat.conf

文件内容如下。

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=""

若需修改更多参数,需修改 SocatDaemon 文件。更多 TTY 参数见 stty 手册页。

现在创建 SocatDaemon 文件,用 Socat 守护进程自动连接 GW Device Server。

注意:

此 SocatDaemon 文件为无错误/断线管理等的示例,请自行完善。

nano /etc/init.d/SocatDaemon

文件内容如下。(点击显示/隐藏代码)

所有配置文件就位后,继续设置 Socat 二进制文件并注册 Socat 守护进程。

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

若设置正确,可用 ps -e | grep socat 等命令看到运行中的守护进程。也可查 Socat 日志 cat /var/log/socat.log。

从终端访问 TTY 接口

现可通过 TTY 接口发送消息。

sudo echo "PLC to GW $var" > /dev/GWDeviceServer

持续测试伪 TTY 可用:

while true; do sleep 5 && sudo echo "PLC to GW $var" >/dev/ttyUSB0 && var=$((var+1)); done

执行 cat /dev/GWDeviceServer 显示接收流量。现在任何应用可像直接连接到 PLC 一样访问连接到 GW Device Server 的串口设备。


工业技术

  1. 电气原理图导线连接约定:清晰指南
  2. 工业PLC驱动变频器:核心控制与协同
  3. PCB 过孔盖油详解:优势、工艺与最佳实践
  4. 云监控:实时资产管理的远程控制系统
  5. 现代工业远程生产控制的5大核心优势
  6. 在PLCnext设备上用grpcurl安全远程访问gRPC
  7. 利用 SNMP 优化 PLCnext Control 设备:实用指南
  8. PLCnext 集群管理:利用 Kubernetes 赋能工业自动化
  9. 基于 Tableau 打造 PLCnext 实时监控仪表板
  10. 从 PLCnext 云数据创建 Power BI 仪表板
  11. 在 Azure IoT Hub 中为 PLCnext Control 构建实时 Grafana 仪表板
  12. 利用 Jlink 优化 PLCnext Control 上的 Java 9+ 应用