首页 理论教育 ControlLogix系统组态编程实现主从通信

ControlLogix系统组态编程实现主从通信

时间:2023-11-19 理论教育 版权反馈
【摘要】:如图4-127所示,ControlLogix控制器通过1756-DNB模块与SLC500控制器通过1761-NET-DNI模块建立起主从通信。注意本例中使用的是B系列的1761-NET-DNI模块,其允许映射的数据区域大小有别于A系列。图4-128 选择DeviceNet网络所在的位置扫描结束后,双击1761-NET-DNI模块图标对该模块进行需要的配置。图4-130 将“I/O Scan Enable”参数“Disable”以修改参数1761-NET-DNI模块参数列表的各参数含义见表4-5。1761-NET-DNI模块将输出数据的监测信号位置1,送给控制器。脉冲监测次数取决于1761-NET-DNI模块需要循环监测位的频率。

ControlLogix系统组态编程实现主从通信

本实验要实现ControlLogix控制器与SLC500控制器在DeviceNet上的主从通信,而SLC500控制器本身没有DeviceNet通信口,因此它与DeviceNet设备通信时,需要将串口的DF1通信协议转换成DeviceNet通信协议,1761-NET-DNI模块提供了这一功能。如图4-127所示,ControlLogix控制器通过1756-DNB模块与SLC500控制器通过1761-NET-DNI模块建立起主从通信。

实验中SLC500控制器和1761-NET-DNI模块均使用DF1通信方式,使用串口通信,所以这里需要在RSLogix500中设置SLC500控制器的波特率等信息,建立用于实验的输入映像区N9文件(32个字),用于输出SLC500中的数据到ControlLogix控制器中;和输出映像区N10文件(32个字),用于接收Control-Logix控制器的输出数据。而1761-NET-DNI需要在RSNetWorx for DeviceNet软件中设置波特率、DF1通信设备类型、数据扫描延时和设备监测脉冲等参数。注意本例中使用的是B系列的1761-NET-DNI模块,其允许映射的数据区域大小有别于A系列。

978-7-111-42627-1-Chapter04-134.jpg

图4-127 DeviceNet网络扫描结果

另外在SLC500控制器中还需要编写一条设备检测脉冲程序,在组态1761-NET-DNI模块时将会介绍程序内容及其作用。

使用RSLogix5000软件组态ControlLogix控制器的主要工作是组态1756-DNB模块,给模块分配数据映像区。

该例主要部分是主从通信,建立主从通信可分为两个步骤:一是1761-NET-DNI模块与SLC500控制器之间的DF1串行通信,控制器的部分整型文件(或位文件)与1761-NET-DNI的输入/输出数据区建立映射关系;二是1756-DNB模块与1761-NET-DNI模块之间的Devi-ceNet主从通信,1761-NET-DNI输入/输出数据映射到1756-DNB的输入/输出映像表中。因此,SLC500控制器通过程序将输入/输出文件的数据传送到整型文件(或位文件)中,经过两次映射与1756-DNB模块建立了从站与主站的通信关系。

1.配置1761-NET-DNI模块

在RSNetWorx for DeviceNet软件中找到扫描按钮,弹出如图4-128所示的配置网络位置对话框,在树状展开图中找到本实验使用的1756-DNB模块,展开模块所带的网络,选择“DeviceNet”。

978-7-111-42627-1-Chapter04-135.jpg

图4-128 选择DeviceNet网络所在的位置

扫描结束后,双击1761-NET-DNI模块图标对该模块进行需要的配置。1761-NET-DNI模块的节点地址配置界面如图4-129所示,该节点地址即模块在DeviceNet网络中的地址。

978-7-111-42627-1-Chapter04-136.jpg

图4-129 1761-NET-DNI模块的节点地址配置界面

节点配置结束后,点击“Parameters”选项卡,将会弹出参数上/下载对话框,选择上载参数(upload),然后根据需要进行变更。

这里需要提出的是如果需要变更Input/Output Size(输入/输出大小)、Input/Output Split Point(输入/输出分隔点)等数据时需要先将“I/O Scan Enable”参数“Disable”,如图4-130所示,只有这样才能将修改的参数下载到1761-NET-DNI模块中。

修改参数后点击界面右上角978-7-111-42627-1-Chapter04-137.jpg图标将修改的参数下载到模块中。参数修改及下载结束后,需要再将“I/O Scan Enable”参数改回到“Enable”状态,然后点击“确定”。

978-7-111-42627-1-Chapter04-138.jpg

图4-130 将“I/O Scan Enable”参数“Disable”以修改参数

1761-NET-DNI模块参数列表的各参数含义见表4-5。

表4-5 1761-NET-DNI模块(B系列)参数含义

978-7-111-42627-1-Chapter04-139.jpg

(续)

978-7-111-42627-1-Chapter04-140.jpg

说明1:

SLC500数据区和1761-NET-DNI数据区的映射关系如图4-131所示,在数据映像区中会映射出主站输入/输出数据和显式数据两类数据,主站输入/输出数据主要用于主从通信时的数据交换,显式数据主要用于对等通信中,现在使用得较少。两类数据的分隔点就是用“Input Split Point”和“Output Split Point”参数来设定。

978-7-111-42627-1-Chapter04-141.jpg

图4-131 SLC500数据区和DNI数据区的映射关系

本试验中,映射了32个字的数据区,其中16个字用做主站输入/输出数据。

说明2:

DF1设备数据脉冲监测用于检测DF1设备(本例中为SLC500)与1761-NET-DNI模块之间的有效通信路径,同时也可以用于监测相关的控制器是否在扫描其逻辑程序。

注意当“I/O Scan Enable”参数使能(Enable)时,脉冲监测参数才有效。

设备监测信号位处在1761-NET-DNI模块与控制器(本例中即SLC500)互传数据包中首字节的第七位,即第8个数据位(byte 0,bit 7)。1761-NET-DNI模块将输出数据的监测信号位置1,送给控制器。控制器接收到后,用户需要在逻辑程序中将监测信号位送入输入数据包相应位中,使1761-NET-DNI模块在读取控制器的输入信息时能读到该位信息。脉冲监测次数取决于1761-NET-DNI模块需要循环监测位的频率。如图4-132所示是默认的两次脉冲监测(每隔一次读操作脉冲监测一次)信号时序图。

978-7-111-42627-1-Chapter04-142.jpg

图4-132 1761-NET-DNI监测信号时序图

图4-132中,A:DNI从控制器中读数据;B:DNI检查监测位并取反;C:DNI向控制器中写数据;D:DNI数据扫描延迟时间;E:DNI从控制器中读数据;F:DNI数据扫描延迟时间。

如图4-132所示,在设定的时间内,DNI读回的设备监测信号状态正确(即A段为1),它便将此位取反后再次发送给控制器(如图中的写操作的B段);经过相同的过程,DNI又将监测位置1,写入控制器中(图中C段),如果读回的信号位状态正确,一个循环结束(图中E、F段)。

如果检测到监测信号的状态没有改变,DNI模块认为是通信或者控制器错误,并以一个零长度数据包报告给DNI模块。

因此,设备监测脉冲可用于检测在控制器和DNI模块之间的有效通信路径,并且能够检测相连接的控制器是否循环扫描梯形图程序。

所以,按照本实验的设置,必须在SLC500控制器中编辑如图4-133所示的程序。

978-7-111-42627-1-Chapter04-143.jpg

图4-133 设备脉冲监视程序

说明3:

设置DNI在D网上的节点地址、通信速率和通信超时时间。这里需要注意的是,节点地址不要冲突,通信速率保持一致。

Input(输入)是对于DeviceNet网路主站说的,而对于串口所连设备则是输出。Output(输出)也一样。注意不要弄反了。

2.配置1756-DNB模块

对1761-NET-DNI模块进行需要的配置后,开始配置1756-DNB模块。查看和修改1756-DNB模块的网络节点地址。将1761-NET-DNI模块从“Available Devices”窗口组态到“Scanlist”窗口中。然后对其进行I/O分配管理。点击“Edit I/O Parameters”按钮,进入对DNI模块数据映像区的设置,如图4-134所示。

这里数据传输方式选择轮询(Polled)方式,本例中使用了16个字的主站输入和输出数据,所以在输入和输出数据配置中都写32个字节。尤其需要注意的是:在这里只需要配置主站的输入和输出映像数据,不需要配置显式数据,即数据分隔点之前的数据,不能超出分隔点分配的数据,同时也不能小于分隔点分配的数据个数,否则在1756-DNB模块中会报E#77号错误(返回到扫描器的数据大小与“Scanlist”的不匹配)。

978-7-111-42627-1-Chapter04-144.jpg(www.xing528.com)

图4-134 I/O分配管理界面

轮询频率不变,为默认的“Every Scan”,点击“OK”确定。由于数据区不是实际的I/O,所以点击“OK”后可能会提示,继续确定即可。

配置了“Scanlist”后,可以点击“Input”和“Output”选项卡查看配置的数据大小及逻辑位置,如图4-135所示。本例中配置的输入数据放在“5:I.Data[0]~[7]”的8个DINT数组中。

978-7-111-42627-1-Chapter04-145.jpg

图4-135 输入数据映像区大小及逻辑位置

两个模块都配置好后,右击网络扫描界面中的空白部分,选择下载网络信息到设备网中,如图4-136所示。下载完后,在1756-DNB模块中会出现E#86号错误,这是没有运行SLC500控制器的原因,只要运行SLC500控制器即可。

978-7-111-42627-1-Chapter04-146.jpg

图4-136 下载网络信息

3.运行控制器检验通信

所有的参数都配置好后,运行ControlLogix控制器,可以检验输入/输出映像的位置以及正确性。

如图4-137所示,为了检验设备网的通信,需要运行设备网,这在RSLogix5000程序中有设备网的使能位,将其置1即可。

978-7-111-42627-1-Chapter04-147.jpg

图4-137 运行设备网命令字

如图4-138所示,在SLC500程序中打开N9文件,可是第一个字节是有数的,它就是前面提到的状态字。该字节的第七位0和1交替变换,在传输信息时是不能使用的,但是该字节其他位可作为位数据传输用。写下图示的输入数据,然后到ControlLogix控制器的程序中检查映像结果。

978-7-111-42627-1-Chapter04-148.jpg

图4-138 N9文件中输入数据

ControlLogix控制器程序中输入数据结果如图4-139所示,注意SLC500中第一个字节第七位是状态数据;SLC500中两个字组成一个双字数据映射到ControlLogix控制器的一个DINT数据中。

同时为了检验映像数据是否如DNI模块中所设的只有16个字,可以在N9中的第15位字后的位置写入数据,检查在ControlLogix控制器程序中是否有数据。

如图4-139所示,在ControlLogix控制器程序中可以看到15位字后的数据并没有映射到ControlLogix控制器中。

同样,检查ControlLogix控制器中的输出字能否映射到SLC500控制器中。如图4-140所示,在ControlLogix控制器程序中的DNB映射文件的输出部分中写入图示的数据,同样,为了检验输出数据是否会超出设定的输出映像区,可以在ControlLogix控制器中的第8个DINT数据位置写入数据,在SLC500控制器中检查结果。注意ControlLogix控制器中第一个字(状态字)不写数据。

SLC500控制器接收数据的结果如图4-141所示,写入的第1、2、3个数据分别映射到了N10文件的第2、4、6个字中。如同前面所说,这是ControlLogix控制器和SLC500控制器数据类型不同引起的,这并不影响数据传输的正确性。在第8个DINT数据位置写入的数据没有映射到SLC500控制器N10文件中,符合之前对DNI模块的设置。

978-7-111-42627-1-Chapter04-149.jpg

图4-139 ControlLogix控制器中映射结果

978-7-111-42627-1-Chapter04-150.jpg

图4-140 ControlLogix控制器中写输出数据

978-7-111-42627-1-Chapter04-151.jpg

图4-141 SLC500中N10文件映射结果

4.数据类型转换

为了使数据映像位置一一对应而不是SLC500控制器中的两个字合并成一个双字映射到ControlLogix控制器中,可以使用RSLogix5000编程指令中的COP指令。COP指令如图4-142所示,在源(Source)一栏中填写需要复制的数据数组的首地址;在目标(Dest)栏中填写目的数据数组的首地址,在此定义目标数据的数据类型可以与源数据的数据类型不同,COP指令会将源数据按照目标数据格式存放。在本例中可以实现数据格式转换的目的。长度(Lenght)一栏填写分配的目的地址的个数,即目的数据数组的容量,注意填写足够存放转换数据的容量。

在RSLogix5000编写如图4-143所示的程序,Control-Logix控制器将接收的输入数据放入“Local:5:I.Data[0]”开始的地址中,本例中将其转换为对应SLC500中的INT类型的数据放入INT[0]开始的地址中。然后建立一个输出数据标签OUTPUT,数据类型也为INT类型,数据区大小可以设定得大一些,这里设置为100个,把OUTPUT中的数据存入“Local:5:O.Data[0]”开始的地址中,这里设定得比在DNI模块中建立的数据要长,在DNI模块中设定的16个字,在这里设定10个双字,用于检验数据传输能否超出设定的范围。

978-7-111-42627-1-Chapter04-152.jpg

图4-142 COP指令

978-7-111-42627-1-Chapter04-153.jpg

图4-143 数据类型转换程序

978-7-111-42627-1-Chapter04-154.jpg

图4-144 N9文件中输入数据

在RSLogix500中向SLC500的N9文件写入如图4-144所示的数据,同时为了检验映像数据是否如程序所设的只有16个字,可以在N9中的第15位字后的位置写入数据,以检查ControlLogix控制器中的映射结果。

ControlLogix控制器程序中输入数据结果如图4-145所示。可见SLC500中第一个字节的状态数据是没有及时映射到控制器中,这是由于控制器的扫描时间与SLC500状态字的变化周期不一致引起的;但随后的数据一对一映射到ControlLogix控制器的INT数据文件中。同时可以看到N9中的第15位字后的数据并没有映射到控制器中。

同样,也可以检查ControlLogix控制器中的OUTPUT文件中的数据能否一对一映射到SLC500控制器中。如图4-146所示,在ControlLogix控制器程序中的OUTPUT文件中写入图示的数据,在第15个OUTPUT数据位后写入数据,用于检测输出数据是否会超出设定的输出映像区,在SLC500控制器中检查结果。

978-7-111-42627-1-Chapter04-155.jpg

图4-145 映射结果

978-7-111-42627-1-Chapter04-156.jpg

图4-146 写输出数据

SLC500控制器接收数据的结果如图4-147所示,写入的数据一对一映射到了N10文件中。在第16个OUTPUT数据位置写入的数据没有映射到SLC500控制器N10文件中,这验证了数据传输的正确性。可见同前面所说,ControlLogix控制器和SLC500控制器数据类型不同引起的映射问题得到了很好的解决。

自此,本实验结束。本实验主要介绍了如何利用RSNetWorx for DeviceNet软件组态控制网设备,通过DeviceNet以及1761-NET-DNI和1756-DNB模块,ControlLogix控制器和SLC500控制器实现了主从通信,数据得到了很好的交换融合。

978-7-111-42627-1-Chapter04-157.jpg

图4-147 SLC500中N10文件映射结果

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈