工控智汇

工控智汇

怎么把plc的数据写到excel,老周一步一步教你

admin 40 21

作为自动化专业人员,你可能需要使用Excel电子表格中的工厂数据进行监视,控制或测试。此数据对于需要实时数据进行决策的管理人员,研究人员和其他部门人员也可能会有所帮助。我们将向你展示如何使用MicrosoftExcel和动态数据交换(DDE)和VisualBasicforApplications(VBA)的通信来实现此目标以及更多内容。

将使用哪种软件?

我们将使用MicrosoftExcel通过RSLinxClassic和Studio5000LogixEmulate软件将数据写入RockwellAutomationStudio5000。

程序如何互连的总体框图如下所示。

什么是DDE?

让我们回顾一下什么是DDE?DDE是一种Windows机制,使应用程序可以相互通信。DDE通信被称为启动对话的客户端和响应请求的服务器之间的通讯。

要启动DDE对话,客户端需要指定以下三个项目:

Studio5000Logix设计器LogixDesigner示例程序

因此,让我们从上一个示例PLC程序开始。我们已经创建了一个称为RealPars_Excel的Studio5000LogixDesigner程序。

REAL和DINT数组

在上一篇文章中,我们打开了ControllerTags文件夹,以创建两个名为DINT_array和REAL_array的标签数组。

因此,当我们在Excel中选择“读取”和“写入”操作时,便可以在Excel中看到这些值。我们将在REAL和DINT数组中设置值。

在DINT_array和REAL_array标签旁边,选择标签旁边的+号。

一旦选择了+号,标签数组将展开以显示该数组中的所有元素。

该DINT_阵列和REAL_array,他们每个人有10个元素

DINT是整数类型值,而REAL是浮点类型值。

现在,保存Studio5000程序。

运行Studio5000Logix仿真软件

现在启动Studio5000LogixEmulate软件。该仿真软件将在个人计算机上仿真虚拟的RockwellSoftwarePLC。

通过选择Windows“开始”菜单找到Studio5000LogixEmulate图标,然后键入Emulate以从列表中查找Studio5000LogixEmulate软件应用程序。

设置仿真器模块

我们已经设置了仿真器,在插槽2中安装了Emulator5570控制器,在插槽0和1中安装了RSLinx,在插槽3中安装了1789-Sim32点I/O模块。

运行RSLinxClassic通讯软件

现在,让我们再次选择Windows“开始”按钮以启动RSLinxClassic通信软件。

选择Windows“开始”菜单按钮,然后键入RSLinx以查找RSLinxClassic桌面应用程序。

从列表中选择RSLinxClassic应用程序。

RSLinx将启动。

Studio5000LogixEmulator的通信驱动程序需要配置。

选择“通讯”菜单,然后选择“配置驱动程序”。

在上一篇文章中,我们创建了一个名为RealPars_VBP-1的虚拟驱动程序,它具有“运行”状态。

现在,如果我们选择DDE/OPC菜单,然后从下拉列表中选择“主题配置”,则会看到我们在上一篇文章中创建的主题,称为RealParsExcel。

好的,到目前为止,我们已经完成了RSLinxClassic。

我们将Studio5000LogixDesigner程序下载到虚拟PLC。

在Studio5000LogixDesigner软件中,从“通讯”菜单中,选择“谁是活跃用户”。

将显示WhoActive窗口,其中显示所有已配置的驱动程序,在本例中为Realpars_VBP-1驱动程序。

从列表中选择Studio5000LogixEmulate,然后按GoOnline按钮。

将程序下载到模拟器

要将程序下载到仿真器,请在“已连接到联机”窗口中,按“下载”。

将显示下载警告弹出窗口;再次选择下载以开始下载过程。

下载后,进度条将完成为100%。

现在,返回Studio5000LogixDesigner程序。

请注意,该控制器位于“远程程序”中,这意味着该控制器未运行。

将“远程程序”状态更改为“远程运行”。

选择“远程程序”指示器旁边的图标,然后从列表中选择“运行模式”。

出现一个配置窗口,询问确认将控制器置于“远程运行”状态,然后选择“是”。

现在,让我们看一下之前添加的Controller标记DINT_array和REAL_array,并准备对其进行可视化监视,以了解Excel的读写操作。

现在,我们准备为Excel中的READ和WRITEControl按钮设置DDEPokeVBA(应用程序的VisualBasic)脚本。

打开MicrosoftExcel项目

现在打开我们已经创建的MicrosoftExcel项目。

你可以在此处下载此Excel文件。

从工作表1开始,我们将工作表重命名为READWRITEPLC。

我们将DE列命名为READ,将GH列命名为WRITE,以标识将在何处显示数据。

DE列将是READReal和Integer数据,GH列将是WRITEReal和Integer数据。

请记住,我们的PLC变量数组已分配了10个元素(DINT_array[0]至[9]和REAL_array[0]至[9])。

在WRITEREALCLX值G列中,我们输入了要写入PLC的浮点值,在WRITEINTEGERCLX值H列中,输入了要写入PLC的整数值。

VBA脚本

在接下来的几个步骤中,我们将使用VBA开发模式并使用VBA脚本执行写入操作。

为了将命令按钮对象放置在Excel工作表上,我们将进入开发人员模式。

创建表单控件按钮对象

为此,选择“开发人员”选项卡,然后选择“设计模式”按钮,这将使你可以将控制对象放置在图纸上。

这些控制对象实质上使我们能够创建HMI(或人机界面)。

接下来,让我们选择“插入”按钮。

此按钮为我的Excel工作表提供了各种控件。

从菜单中按“插入”按钮将显示“表单控件”下拉菜单。从此下拉菜单选择中,选择“表单控件-按钮”对象。

选择命令按钮后,在GH列下的数据下方绘制一个矩形。

将出现“分配宏”窗口,选择“新建”按钮以创建一个新按钮。

现在,将出现新按钮。让我们给按钮起一个新的名字。

完成后,将显示WriteCLXArrays按钮,并输入新名称。

VisualBasicsforApplications(VBA)窗口

好的,这就是乐趣的开始。

右键单击WRITECLXArrays按钮,将在命令按钮周围显示把手。

在ExcelDeveloper菜单区域中,选择“查看代码”项。

将出现“VisualBasicsforApplications”窗口。

VBARSLinx连接

为了简化本文,我们将编写将执行大部分VBARSLinx连接的VBA代码,并将操作写入PLC,并部分解释VBA代码。

在“模块”文件夹下,双击“模块1”,然后编写RSLinx“打开并连接”代码。

DDE戳写命令脚本

接下来,我们将在WRITECLXARRAYS按钮事件区域中编写DDEPokeWriteCommand脚本。

此WRITECLXButton事件的脚本是CLICK,它执行到RSLinx的连接以及通过RSLinxDDE与PLC的通信,最后,当单击按钮时,DDEPoke功能用于执行实际的写命令。

脚本rslinx=OpenRSlinx()将使用DDE打开与RSLINX的连接。

的FOR/NEXT循环通过每个使用FORNEXT指令,并且如果存在一个错误显示错误消息框中的Excel单元的脚本将循环。

两条DDEPokerslinx指令将获取数据并将数据写入PLC。

第一个将在G列的3+i行中获取REAL数据,并将浮点数据写入PLC。在此循环中,I=0到9,数字7代表G列。

第二个将在H列的3+i行中获取INTEGER数据,并将整数数据写入PLC。在此循环中,i=0到9,数字8代表H列。

指令DDETerminaterslinx将终止RSLINX连接

让我们测试“写入CLX阵列”按钮。

通过PLC在线,我们可以在StudioLogixDesigner控制器标签窗口中将所有值都设置为零。

现在,返回到ExcelWriteCommand按钮。

然后,左键单击命令按钮。该操作将在按钮后面运行脚本,并将值写入PLC。

现在,让我们返回Studio5000PLC程序。

现在,DINT和REAL数组标记中提供了G列和H列中的Excel值。几乎像魔术。

VBA可以非常强大并且可以执行许多操作。

DDE请求命令脚本

我们执行了与“写入CLX数组”命令按钮相同的操作,以创建“读取CLX数组”命令按钮。

右键单击READCLXARRAY命令按钮后,从“开发人员”选项卡中选择视图代码。

在READ命令按钮事件下编写代码。

与DDEPoke命令类似,我们将使用DDERequest方法从RSLinxDDE主题读取数据。

返回到Excel电子表格。

左键单击READCLXARRAY按钮。该脚本将执行并从PLC控制器变量中读取值。