作为自动化专业人员,你可能需要使用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控制器变量中读取值。





