为了让刚刚从事DeviceNet开发的朋友能够对DeviceNet网络的总体架构及工作方式有一个大致的了解,并同时提供给从事工程项目的朋友作为项目规划中的参考,DND推出此文章以期为各位DeviceNet开发及应用的朋友带来方便,本文分为如下几个部分: 一 软件需求环境; 二 网络组成; 三 连接工具RsLinx; 四 DeviceNet组态; 五 简单的SLC梯形图程序以实现简单任务; 六 实验网络架构的总结; 本文的写作是基于Rockwell Automation Allen-Bradley的SLC500 PLC系统,组建一个简单的电机驱动器控制系统,通过IO节点可以给变频器发送启动,停止等控制命令,使用模拟量模块作为变频器的频率给定,同时IO模块也有数字输出的部分,可以显示变频器的运行与停止状态。也有很多DeviceNet的系统是基于OMRON的DeviceNet系统,但原理大同小异。 五 简单的SLC梯形图程序以实现简单任务 有关SLC系列PLC的应用编程工具RSLogix 500,是一个功能强大且复杂的工具,在此我们不准备做详细的介绍,但我们会完成一个简单的例子,来达成通过DeviceNet上的I/O控制变频器的启动与停止,并且在IO模块的输出上显示变频器的运行/停止状态。 在启动RSLogix之前请认真参阅此文第三部分:RSLinx的使用。以保证已经正确的配置好了PLC与PC的连接。其结果应该是可以在驱动列表里看到AB_DF1....类似的连接处于RUNNING状态,为避免发生错误,如果你是在同一台PC上进行的,可以先删除1770-KFD的连接驱动后再增加RS232的连接驱动。 确认RSLinx的连接没有问题后,可以按如下的步骤进入RSLogix编程。 1、点击“开始”—“程序”—“Rockwell Software”—"RSLogix 500 English"—"RSLogix 500 English"以启动RSLogix 500。启动后的主界面如下面所示。首先需要新建一个文件,点击新建图标出现处理器选择对话框。在此对话框中选择你的CPU,此例中的CPU为“1747-L531 5/03”,选中此CPU,然后在对话框下方的“Communication setting”里设定通讯的驱动为“AB_DF1.....”,点OK确认。 2、新生成的项目文件有两个部分,一个是项目管理,位于左边的窗口,一个为梯形图编辑器,位于右边。在左边的列表中,可以看到有许多能使用的资源,但我们首先要对“Controller”的部分进行配置,不然项目管理程序不知道当前PLC的插槽上都插有哪些卡?也就无法正确的对各扩充卡进行寻址。双击左边项目列表里“Controller”下的“IO Configuration”,可以看到一个配置对话框。选择“Racks”为:1746-A4 4-slot rack,以选定所使用的机架。在下方的列表中,可以看到已经把CPU插入了第一个插槽中。 3、现在要将另外的扩充卡也加入到此项目中来,点击旁边的“Read IO Configuration”,出现读取确认框,这时可以看到驱动里面已经选中了AB-DF1,如果你在第一步里忘了选择,也可以在这里选择驱动。 4、点击上图中的“Read IO Configuration”,出现“Confirm Change Processor Type”对话框,点击OK。 5、这时可以很清楚的看到机架上所插入的模块,第二槽为模拟量输入模块,第四槽为DeviceNet Scanner。 7、当这此模块都配置好后,就可以进行PLC梯形图程序的编写了,这部分不准备对如何编写梯形图做介绍,详细的编程手册请到Rockwell AB的网站上找寻或参考购买产品时所附带的手册。但我们需要一个简单的例子程序来完成对变频器的操作,频率给定和状态监控。 有关各节点在master中的地址映射如下表: 1)在Scanner模块中,提供了一个指令控制字,就是可以让CPU对扫描模块进行控制,要想CPU在运行的时候使扫描模块把数据送到总线上,必须在梯形图中先对扫描模块的这个控制字进行设置,在扫描模块安装手册中有讲到此字Bit 0为1表示扫描模块为RUN MODE,否则为IDLE MODE,所以应先将此位元设为有效,否则扫描模块总会显示80代码,表示处于IDLE状态。下面是梯形图程序的一个示例: 说明:在此例中,因为扫描模块是插到第四插槽的,所以槽号为3(0~3),控制字的寻址方式为O:S.1,其中的S表示扫描模块所在的槽号。 2)变频器启动与停止的控制。 参考1305变频器的手册,设置其控制指令来源为通讯适配置器,以选择使用通讯来控制变频器。1305变频器的Control Command字的bit0 表示停止,bit1表示启动。故实际的操作中我们可以通过送控制字到1305的端口来控制变频器.下面是梯形图程序的一个示例: 启动变频器:bit1 置1 停止变频器:bit0 置1 说明:上例中,输入的信号I:3.3/1来自IO模块的bit 1,表示按下启动按钮;O:3.1/1是映射到1203-GU6模块的通讯地址上面的,GU6会将其送到变频器的控制端口,实现启动的操作;停止变频器的操作同理。 3)变频器频率给定。 此例中我们使用模拟量输入模块来获取频率给定值,模拟量输入模块外部需要接入一电位器产生可调节的电压信号送入模块中(相关的详细说明参阅手册)。在GU6模块默认的2WORDS的INPUT数据中,后一个字表示为频率给定值,故只要在梯形图中将模拟量模块的输出值送到GU6第二个字当中,GU6即会将其送到变频器。下面是梯形图的一个示例: 读取模拟量模块的值,并送到GU6的第二个字上面 为了降低模拟量变化的精度,以降低网络对变频器频率给定的频繁程度(就是去掉频率值的低位部分不关心),你可以把读取的模拟量模块的值先送到整形文件N中,然后再换成二进制B,然后与0XFF00相与,就可以去掉频率值的低八位,这样只有频率值高八位产生变化时才会引起变频器频率值的改变。这点在这里不再做详细叙述。 4)接下来我们需要在IO模块上显示变频器的运行/停止状态。 在变频器返回到DeviceNet的数据(Input Data)中,前一个字为变频器的状态值,读取Bit 1位可以获取当前变频器是否在运行。下面是梯形图的一个示例: I:3.1/1表示变频器返回的第一个字的Bit 1位,O:3.3/0表示IO模块的输出数据的Bit 0,在节点中表示上面的一个LED灯。 由此,我们就实现了一个简单的IO控制变频器启动/停止,模拟量模块给定变频器的频率的一个SLC梯形图程序,通过此程序,在网络上的表现为:按IO上的启动按钮实现变频器启动,按IO上的停止按钮实现变频器停止,调整模拟量模块的电位器(需要外接)可以调整变频器的频率,当变频器处于RUNNING,则IO模块上的LED会亮,当变频器停止,则LED会灭。 有关RSLogix的使用请参阅使用手册。