首页 理论教育 S7-300与S7-200之间的Profibus-DP通信详解

S7-300与S7-200之间的Profibus-DP通信详解

时间:2023-06-16 理论教育 版权反馈
【摘要】:西门子S7-200系列CPU自带的串口并不支持Profibus-DP协议,要将S7-200PLC连入Profibus-DP网络,需要外加EM277模块来实现。

S7-300与S7-200之间的Profibus-DP通信详解

西门子S7-200系列CPU自带的串口并不支持Profibus-DP协议,要将S7-200PLC连入Profibus-DP网络,需要外加EM277模块来实现。并且,在Profibus-DP网络中,S7-200系列CPU只能作为从站。

1.硬件配置

S7-300与S7-200之间组成Profibus-DP网络是通过EM277来实现的,完成接线后,需要在EM277上设置拨码开关来设定从站的地址。每个EM277模块均带有上下两个拨码表,下面的表示个位,上面的表示十位。例如,某EM277所在的S7-200PLC系统的从站地址应为3,那么应将EM277下方的拨码表置位3,上方的拨码表置位0。地址设定完成后,也需要对系统进行循环上电。

2.软件设计

S7-300若与S7-200通过EM277进行Profibus通信,在S7-200系统中不需要对通信进行组态,仅需要在STEP7中进行S7-300主站的组态。在STEP7中进行组态时,一个Profibus-DP主站的组态应包含自身Profibus-DP网络地址、从站类型以及从站需要的任何参数信息,与此同时,也应告诉主站由从站(输入)读入的数据应放置于何处以及从何处获得写入从站(输出)的数据等。

(1)组态主站 在STEP7中新建一个工程后,插入300站点,进入硬件组态界面,依次添加机架、电源、CPU,双击DP接口,在弹出的DP属性对话框中将300 CPU设为主站,将地址设为2,并选择传输速度、波特率等参数。主站参数设置界面如图9-26、图9-27所示。

978-7-111-42922-7-Part03-126.jpg

图9-26 主站参数设置界面一

设置完成后,点击“确定”后,在硬件组态界面中会显示出已组态好的Profibus网络。硬件组态效果如图9-28所示。

(2)组态从站 由于从站S7-200是通过EM277连入网络的,所以对从站的组态实际上就是对EM277组态。EM277不在STEP7的标准库之中,所以在组态前应先导入EM277的GSD文件。选中STEP7的硬件组态窗口中的菜单“选项”→“安装GSD文件”,导入SI-EM089D.GSD,并点击“安装”。GSD文件安装界面如图9-29所示。

GSD文件安装完成后,在硬件组态界面右侧的目录菜单中,选择列表中展开Profibus-DP目录,然后依序展开其下的“Additional Field Devices”、“PLC”和“SIMATIC”目录,可以看到EM277 Profibus-DP,如图9-29所示。

978-7-111-42922-7-Part03-127.jpg

图9-27 主站参数设置界面二

978-7-111-42922-7-Part03-128.jpg

图9-28 硬件组态效果图

将EM277 Profibus-DP拖入到Profibus-DP网络,将从站地址设为3。从站地址的设定必须和EM277硬件拨码表所设定的地址一致,由于本例将EM277的硬件地址设为3,所以在软件中的地址也为3。EM277添加界面如图9-30所示。

EM277可以根据实际的需要灵活设定通信的字节数,本例选择32Bytes in/32Bytes out的方式,通信缓存区选择界面如图9-31所示。EM277作为从站可接收从主站发来的多种不同I/O数据,并向主站发送和接收不同数量的数据。该特性使用户能灵活修改传输的数据量,以满足实际应用的需求。

978-7-111-42922-7-Part03-129.jpg

图9-29 GSD文件安装界面

图9-31对应的地址是主站的通信地址区,输入区为IB0~IB31,输出区为QB0~QB31,各占32个字节。对应的S7-200的通信接口区为V区,占用64个字节,前32个字节为接收区,后32个字节为发送区。V区默认的起始地址为0,从站的通信接口区为VB0~VB63。S7-200的通信接口区起始地址按实际要求可以修改,在主站硬件组态中双击EM277图标,在弹出的对话框中将“I/O Offset in the V-memory”设置为1000,如图9-32所示。

设置完后,S7-200的通信接口区起始地址变为1000,对应的通信接口区则变为VB1000~VB1063。在DP网络中,S7-300是通过对外设输入/输出镜像区(PI/PQ)的读写来实现通信的,即输入用PI来表示,输出用PQ来表示,那么S7-200与S7-300之间的通信对应关系如图9-33所示。

外设输入/输出镜像区(PI/PQ)可以按字节、字、双字来寻址,但不能按位寻址。

978-7-111-42922-7-Part03-130.jpg

图9-30 EM277添加界面

978-7-111-42922-7-Part03-131.jpg

图9-31 通信缓存区选择界面

978-7-111-42922-7-Part03-132.jpg

图9-32 通信偏移地址设置界面

978-7-111-42922-7-Part03-133.jpg

图9-33 通信对应关系

待上述组态完成后,点击“保存”并编译,然后将硬件组态下载至S7-300 CPU,就完成了S7-300与S7-200PLC之间Profibus-DP通信的硬件组态配置。如果需要组态多个S7-200PLC,只需要以上述方法依次添加,并设置好从站地址和通信缓存区的偏移量即可。

3.通信程序设计

在S7-300与S7-200PLC之间Profibus-DP网络中,通信程序设计主要涉及从站通信程序和主站通信程序两个方面。另外,基于系统的合理性与安全性方面考虑,还应涉及通信故障诊断程序。

(1)通信程序 与许多DP站不同的是,EM277模块不仅仅是传输I/O数据,也能读写S7-200中定义的变量数据块,这样用户就能与主站交换I/O值、计数值、定时器值或其他计算数值等任何类型的数据。首先需将数据移到S7-200中的预定变量存储区,然后数据就会由EM277自动发送到主站。类似地,从主站发送来的数据也自动存储在S7-200中的预定变量存储区内,并可移到其他数据区。在S7-200系统中不需要对通信进行组态和编程,但必须将通信数据整理存放在预定的V存储区,并与组态EM277从站时的硬件I/O地址相对应。在建立S7-200通信程序时,必须知道V存储区的开始地址和大小。从主站来的输出数据必须通过S7-200的用户程序将其从接收缓冲区转移到其他所用的数据区。传送到主站的输入数据也必须通过用户程序从各种数据区转移到发送缓冲区,进而传送到DP主站。

在上述案例中,S7-300要读取S7-200PLC中的I0.0~I0.7、Q1.0~Q1.7、M3.0~M3.7以及VW10、VB12、VD14等内容,在S7-200侧需要设计程序如图9-34所示。(www.xing528.com)

978-7-111-42922-7-Part03-134.jpg

图9-34 S7-200通信程序一

如果S7-200需要发送一些地址不连续的位信号,那么在程序设计时,应将这些信号按位输送到通信缓存区,比如若要将M0.0、I0.2、Q0.3等信号传送至S7-300,那么所做程序如图9-35所示。

通过上述程序将需要发送的数据先存储至通信缓存区,然后再由Profibus-DP网络发送至S7-300侧相对应的通信地址中。上述S7-200的所要发送的数据将存储在S7-300中的PIB0、PIB1、PIB2、PIB3、PIW4、PID6和PIB10中,S7-300PLC要使用这些数据,只需要将上述地址中的数据转移至相应的地址区就行。需要注意的是,PI是不能按位寻址的,所以如果要在S7-300中使用S7-200发送过来的位数据,需要先将相应PI的内容转移至可以按位寻址的存储区中。例如,在STEP7中将PIB10传送至MB0,那么S7-300中的M0.0、M0.1、M0.2则分别对应的是S7-200中的M0.0、I0.2、Q0.3。

如果要将S7-300中的I0.0~I0.7、Q1.0~Q1.7、M3.0~M3.7以及DB1.DBB10、DB1.DBW12、DB1.DBD14等内容写入S7-200,那么在S7-300侧需要设计程序如图9-36所示。

978-7-111-42922-7-Part03-135.jpg

图9-35 S7-200通信程序二

978-7-111-42922-7-Part03-136.jpg

图9-36 S7-300通信程序一

由于PQ不能按位寻址,所以如果S7-300要发送一些地址不连续的位信号,需要先将这些信号传送至可以按位寻址的存储区中,比如,要将S7-300的Q3.0、I3.1、M110.0等信号传送至S7-200,所做程序如图9-37所示。

978-7-111-42922-7-Part03-137.jpg

图9-37 S7-300通信程序二

PQ中的数据由Profibus-DP网络发送至S7-200侧相对应的通信地址中。上述S7-300的所要发送的数据将存储在S7-200中的VB0、VB1、VB2、VB3、VW4、VD6和VB10中,S7-200PLC要使用这些数据,只需要将上述地址中的数据转移至相应的地址区就行。VB存储区不同于PI/PQ存储区,它是可以按位寻址的,S7-200中的V10.0、V10.1、V10.2所对应的数据就是上例中S7-300的Q3.0、I3.1、M110.0。

另外,在数据传送时,通信两端数据的格式必须要统一,例如发送侧如果是浮点数格式,那么接收侧也必须是浮点数格式。

(2)通信故障诊断程序 通信诊断的方式有多种,例如使用STEP7中的硬件诊断功能和调用OB86机架诊断组织块,通过对该组织块的编程,可以将各站的故障信息读取出来。同时,在设计DP网络程序中,需要在STEP7调用OB86以避免当某个站点出现通信故障时,导致主站CPU进入停止模式。

此外,还可以通过梯形图程序设计通信故障诊断程序。

通信故障判断子程序由两个部分组成,分别为产生通信测试信号程序段和通信信号判断程序段。图9-38所示为从站的产生测试信号程序段。

978-7-111-42922-7-Part03-138.jpg

图9-38 从站的产生测试信号程序段

在该程序段中,由特殊寄存器SM0.5产生周期为1s的脉冲,取上升沿。通过加法指令使VW120累加,如果VW120的值超过32000,则置0,并重新开始累加。这样,VW120的值就在0~32000的范围内以1s为周期进行循环累加。即任何两个大于1s的时段内,VW120的值都是不同的。将VW120的值转移到Profibus通信缓冲存储区,即VW1042。通过前面的通信程序段,主站就能读取这个值。

主站通信信号判断程序段如图9-39所示。

上面程序段中的PIW16中的值就是从VW1042中读取的。由上面的分析可以知道,该值是以秒为单位不断累加的。程序将上一次读取的值存入DB1.DBW14,然后将最近一次读取的值与该值比较,若两个值相等,则说明主站没有从从站中获取新的数据。程序段中的DB1.DBW16存储的是两次数据相减的结果;若为0,则表示未得到新数据,此时触发定时器,到规定时间后则将通信故障标志位DB1.DBX46.0置位,表示相应的从站处于通信故障状态。

主站产生测试信号程序段如图9-40所示。

从站通信信号判断程序段如图9-41所示。

978-7-111-42922-7-Part03-139.jpg

图9-39 主站通信信号判断程序段

978-7-111-42922-7-Part03-140.jpg

图9-40 主站产生测试信号程序段

978-7-111-42922-7-Part03-141.jpg

图9-41 从站通信信号判断程序段

主站产生测试信号程序和从站通信信号判断程序原理与前面所述基本一致。当从站判断出处于通信故障状态时,会置位Q1.0和Q0.7,两者分别触发就地控制柜面板上的通信故障指示灯和蜂鸣器,从而产生声光报警。故障解除后,报警信息会自动复位。

S7-300本身并不带有能产生脉冲的寄存器,上面程序段中的寄存器M0.5实际上是没有产生脉冲的功能的。因此,为使M0.5能产生周期为1s的脉冲,还需要加入如图9-42所示的程序。

978-7-111-42922-7-Part03-142.jpg

图9-42 1s脉冲程序

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

我要反馈