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

通过伪 TTY 将 PLCnext PLC 连接到远程 RS232/RS485

在这篇 Makers 博客文章中,我们讨论了 Com 服务器为 PLCnext 平台提供的可能性和优势。

简介

Phoenix Contact 为其 PLC 提供的扩展模块可以是串行适配器,例如:

所有扩展模块都有一个共同点:它们可以通过 processdata 循环访问。这提供了从我们的实时应用程序直接与串行设备交互的可能性。

在某些情况下,这不是我们想要的。相反,我们希望重用现有的 (C/C++) 库并且不需要实时上下文。但是,我们会发现这些库通常被编程为可以直接访问 COM 或 TTY 接口。

有两个选项可以为 PLCnext Control 创建 TTY 接口 :

  1. 实现一些函数(C++ / C#),从 PLCnext Runtime 内部为 AXL 或 IL 串行适配器创建 TTY 接口 .
  2. 使用 COM-Server 设备,例如 GW 设备服务器

GW Device Server 提供了一个透明的 TCP to Serial 界面。借助像 Socat 这样的工具 我们可以将 Serial/TCP 流量直接转发到伪 TTY 接口。使用 GW Device Server 还提供了通过 TLS 加密通道与远程位置的串行设备通信的可能性。

注意

在本教程中,PLC 作为客户端执行并建立到 GW Device Server 的连接 .

(不过也可以切换PLCSocat 到一个监听选项,让GW作为客户端主动连接到PLC。)

设置

设置 GW 设备服务器

我们连接到 GW Device Server 通过基于 Web 的管理。 GW Device Server的默认IP地址 是 192.168.254.254。

我们使用以下设置:

局域网设置 - 安全
串口设置

测试 GW 设备服务器

测试我们是否设置了 GW Device Server 正确,首先我们将我们的 PLC 连接到 GW Device Server 通过以太网。然后我们连接GW Device Server的两个DSUB适配器 彼此。

我们可以使用工具 Telnet 快速测试设置 .使用这个工具,我们可以将数据从PLC发送到GW Device Server 在Port8000/COM1通过串口线连接到Port8001/COM2,最后在PLC接收。

我们使用以下命令:

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

构建 Socat

构建 Socat 在 Linux 操作系统上很容易,我们使用以下命令:

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 [email protected]:~/
ssh -ttt [email protected] \
"mkdir -p /opt/plcnext/socat-binaries && \
tar -xf /opt/plcnext/socat-binaries.tar -C /opt/plcnext/socat-binaries"

部署后,我们现在可以通过 ssh 连接到我们的 PLC。因此,我们首先通过运行以下命令设置目录和配置文件来准备 PLC:

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

现在,我们修改 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 文件自动连接到 GW Device Server 使用 Socat 守护进程。

注意:

此 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来显示 .现在任何应用程序都可以访问连接到GW Device Server的Serial设备,就像直接连接到PLC一样。


工业技术

  1. 电线和连接
  2. 用于工业驱动的 PLC
  3. 什么是 PCB Via Tenting?
  4. 云监控,远程控制系统
  5. 远程生产控制的5个优点
  6. 使用 grpcurl 的远程 gRPC
  7. 通过 SNMP 管理 PLCnext 控制设备
  8. PLCnext 上的集群管理?
  9. PLCnext Tableau 仪表板
  10. PLCnext Power BI 报告
  11. PLCnext Grafana 仪表板
  12. PLCnext 控件上的 Java 应用程序