存储PLCNext社区PLCNext. on LinkedInPLCNext. on Instagram  PLCNext. on YouTube github plcnext社区存储PLCNext社区

 

 如何创建博客条目

制造商博客
Hits: 1499

如何使用rsync从plcnext控制设备备份文件

PLCNext控件固件(2020.3.1)的最新版本介绍了Linux命令行实用程序"rsync"。 rsync可用于备份或同步在同一网络上的设备之间的文件,或跨远程网络同步文件。本文演示了如何使用rsync来同步PLCNext控制设备和PC之间的文件。

背景

许多自动化应用需要记录时间序列处理数据,例如温度,压力,流速,电平和阀门位置。 PLC通常可以以更高的频率和精度记录时间戳的数据,而不是进一步从过程(例如OPC UA客户端)的设备,因此PLC通常会授予此任务。

可以存储由PLC生成的时间序列处理数据的两个位置,可以存储:

  1. 在PLC本身上。将数据直接存储在PLCNext控制设备上的应用程序包括:

  2. 在外部设备或服务器上,在网络中断情况下可能有一些有限的本地缓冲。例子包括:

本文不会讨论每个数据存储方法的相对优势,但将考虑上面的选项1,其中数据直接存储在PLC上。

问题

PLC不设计为大容量存储设备,因此可以存储在PLCNext控制设备上的数据量是有限的。所有良好数据记录器都提供机制,以确保可用的存储容量不会耗尽,例如通过超过已超过某个时间或数据数量阈值,删除最旧数据。

在Plcnext社区论坛上,有 讨论 关于如何增加PLCNext控制设备的存储容量,例如通过使用较大可移除的SD卡,或可能包含大容量固态存储器的左侧扩展模块。但是,在某些时候,在PLC上直接存储越来越多的数据的成本成为一个问题。此外,其他计算机可能需要此数据进行分析和/或长期归档。

那么,问题变成:如何最好地将数据文件从PLC转移到另一个网络设备?可以使用安全副本(SCP)和安全文件传输协议(SFTP)等标准Linux实用程序,但是PLCNext控制设备现在提供另一种解决方案:rsync。

什么是rsync?

要引用Rysnc Man Page(链接到ME添加的Delta-Transfer算法):

rsync.是一个快速而异的多功能文件复制工具。它可以在本地复制到/从另一个远程shell或从远程rsync守护程序中的另一个主机复制。它提供了大量选项,可控制其行为的每个方面,并允许复制一组文件的非常灵活的规范。它以其而闻名 三角洲转移算法,它通过仅在源文件和目的地中的现有文件之间发送差异来减少网络上发送的数据量。 rsync广泛用于备份和镜像,并作为日常使用的改进副本命令。

类似于SCP工作的方式,rsync客户端可以与设置为rsync服务器的任何设备交换数据。 rsync服务器可能是:

  • 网络可访问存储(NAS)设备,也许安装在PLC旁边的控制柜中。许多NAS设备包括标准的rsync服务器功能。
  • 运行Windows或Linux的操作员工作站。
  • 可从PLC访问的安全,高可用性公司服务器。
  • 托管(例如)在AWS,Azure或Google云上托管的云服务器。

示例:使用Linux PC同步文件

此示例演示了PLC上的文件如何传输到运行Linux的PC。您需要运行Linux发行版的PC(例如Debian或Ubuntu)以及运行固件2020.3.1或更高版本的PLCNext控制设备。两个设备都需要在同一以太网上。

  1. 设置Linux PC。

    • If not already installed, use apt to install openssh-server and rsync.

      $ sudo apt install openssh-server rsync
    • 创建一个用于从PLC接收数据文件的目录,例如,

      $ mkdir ~/plcnext-archive
  2. 设置PLCNext控制设备。

    • 检查SSH服务器是否通过从PLC打开安全shell会话:

      $ # Change the user name and IP address in the following command
      $ # to the user name and IP address of your Linux PC.
      $ ssh This email address is being protected from spambots. You need JavaScript enabled to view it..1.5

      After entering the password for the PC user, you should see the command prompt on the PC. Use exit to close the shell session and return to the PLC command prompt.

    • 创建一个包含要发送到PC的数据文件的目录:

      $ mkdir ~/my-data-files
    • 创建包含几个时间序列进程数据项的文件:

      $ { date --rfc-3339=ns; echo "Temp: 42"; } | sed 'N;s/\n/ /' >> ~/my-data-files/data.txt
      $ { date --rfc-3339=ns; echo "Temp: 43"; } | sed 'N;s/\n/ /' >> ~/my-data-files/data.txt
      $ { date --rfc-3339=ns; echo "Temp: 44"; } | sed 'N;s/\n/ /' >> ~/my-data-files/data.txt
  3. 将文件从PLC转移到PC。

    • 在PLC上,使用rsync将源目录中的所有文件发送到目标目录:

      $ # Change the user name and IP address in the following command
      $ # to the user name and IP address of your Linux PC.
      $ rsync -av -e ssh ~/my-data-files/ This email address is being protected from spambots. You need JavaScript enabled to view it..1.5:~/plcnext-archive/

      -a option uses "archive"模式(转发到目录中,将Symlinks复制为Symlinks,保留权限等。查看手册页以获取完整的详细信息)。
      -v option gives verbose output.
      -e option specifies the remote shell to use, in this case ssh. This ensures that the rsync transfer is done securely, just like scp.

    • 在PC上,检查文件已被传输:

      $ ls -lsah ~/plcnext-archive/
      $ cat ~/plcnext-archive/data.txt
  4. 探索各种场景:

    • 将数据添加到PLC上的文件Data.txt。
      这将在归档到PC之后模拟将记录添加到日志文件。
      Repeat the rsync. command.
      =>使用新数据更新PC上的文件。

    • 在PLC的“我的数据文件目录”目录中创建一个新文件
      这模拟了自动"roll over"记录到新文件,例如当前日志文件的大小超过一定限制时。
      Repeat the rsync. command.
      =>新文件将传输到PC。

    • Delete the original data.txt file on the PLC
      这模拟了自动deletion of an old log file, e.g. when the number of log files has exceeded a certain limit.
      Repeat the rsync. command.
      => The new file is transferred to the PC, but the original data.txt file remains on the PC.

下一步

您可以安排一个或多个rsync命令以自动运行 cr。这些命令的频率将取决于(例如,PLC上的日志文件填充,翻转并删除的频率;日志文件应归档日志文件以用于离线分析或保管。

它超出了本文的范围,以解释如何使用cron,但有很多 在线资源 这可以帮助解决这个任务。

如果您使用的是使用rsync(并且您应该!),那么您还需要在PLC和PC之间设置可信关系,以便在重复执行rsync命令时不需要密码,特别是在Cron作业中。再次,有很多 在线资源 帮助解决这个任务。

潜在的应用

PLCNext控制设备上有许多潜在的rsync应用程序 - 以下是一些:

  • 数据记录器文件备份。
  • 控制程序备份。
  • 在另一个方向上使用rsync:将服务器从服务器拉到PLC,就像智能​​手机上的应用更新一样!

如果您有其他想法如何在PLCNext控件项目中使用rsync,请告诉我们在评论中。