S7-300的集成DP接口在S7连接中只能作单向通信的服务器。在下面的例程中,S7-300和S7-400分别作为服务器和客户机。S7-400 CPU调用SFB 14(GET)和SFB 15(PUT),读写S7-300的数据。
1.硬件组态
在STEP 7中创建一个项目PB_S7_A(见随书光盘的文件夹“\Project\PB_S7”中的同名例程)。在HW Config中,将电源模块、CPU 413-2DP和信号模块插入机架。插入CPU模块时,在自动打开的DP接口属性对话框中,点击“新建”按钮,在出现的“属性新建子网PROFIBUS”对话框的“网络设置”选项卡中,设置传输速率为默认的1.5M bit/s,配置文件为“标准”。传输速率和配置文件将用于整个PROFIBUS子网络。
返回DP接口属性对话框,可以看到生成的名为“PROFIBUS(1)”的网络。CPU集成的DP接口和MPI接口默认的地址均为2,默认的工作模式为DP主站。
在SIMATIC管理器中生成一个S7-300站。在HW Config中,将CPU 313C-2DP插入机架,在自动打开的“属性-PROFIBUS接口”对话框的“参数”选项卡中,设置站地址为3,选中“子网”列表中的“PROFIBUS(1)”(见图4-1),将CPU 313C-2DP连接到DP网络上,默认的工作方式为DP主站。在CPU属性对话框的“常规”选项卡中,设置MPI地址为3。将电源模块和信号模块插入机架。组态好硬件后,点击工具栏上的按钮,编译并保存组态信息。
图4-2是该项目组态和编程结束后的SIMATIC管理器。
图4-1 DP接口属性对话框
图4-2 SIMATIC管理器
2.S7连接的组态
点击SIMATIC管理器工具栏上的按钮,打开网络组态工具NetPro,可以看到两个站已经连接到DP网络上。选中CPU 413-2DP所在的小方框,在NetPro下面的窗口出现连接表(见图4-3)。双击连接表的第1行,在出现的“插入新连接”对话框中,系统默认的通信伙伴为同一项目中的CPU 313-2DP,默认的连接类型为S7连接。
图4-3 网络与连接的组态
点击“确定”按钮,确认默认的设置,出现“属性-S7连接”对话框(见图4-4),“本地连接端点”区中的“单向”复选框被自动选中,并且不能更改,因此默认的连接方式为“单向”。在调用通信SFB时,将会使用“块参数”区的“本地ID”(本地标识符)的值。
图4-4 S7连接属性对话框
S7-300和S7-400集成的DP接口之间只能建立单向连接。因为是单向连接,连接表中没有通信伙伴的ID(见图4-3),选中CPU 313C-2DP所在的小方框,连接表中没有连接信息。
组态好连接后,点击工具栏上的按钮,编译并保存网络组态信息。
在单向S7连接中,仅需将网络组态信息下载到S7通信的客户机。
3.S7通信编程
在单向S7连接中,CPU 413-2DP和CPU 313C-2DP分别作为客户机和服务器,客户机调用单向通信功能块GET和PUT,读、写服务器的存储区。服务器是通信中的被动方,不需要调用通信功能块。
S7-400使用的S7通信系统功能块(SFB)在程序编辑器左边窗口的文件夹“\库\Standard Library\System Function Blocks”中,S7-300使用的S7通信功能块(FB)在文件夹“\库\SIMATIC_NET_CP\CP 300中”。SFB PUT/GET可以读取和写入4个数据区,FB PUT/GET只能读取和写入一个数据区。
GET、PUT在通信请求信号REQ的上升沿时激活数据传输,这种通信方式属于事件驱动的通信方式。因为是上升沿时启动通信功能,可以将通信程序放置在主程序OB1或周期执行的OB35中。为了减少中断程序的执行时间,本书将S7通信的程序放在OB1。
如果要实现周期性的数据传输,最简单的方法是用时钟存储器位提供的时钟脉冲作REQ信号。时钟存储器的组态方法如下:打开HWConfig,双击机架中CPU 413-2DP所在的行,在出现的CPU属性对话框的“周期/时钟存储器”选项卡中(见图4-5),点击复选框“时钟存储器”,设置用于时钟存储器的存储器字节为MB8。
点击“帮助”按钮,或按计算机的〈F1〉键,在出现的帮助信息中,点击绿色的“时钟存储器”。再点击时钟存储器帮助信息中的“周期性”,可以看到时钟存储器字节每一位的周期或频率。MB8的第1位M8.1的周期为200ms(ON 100ms,OFF 100ms)。第0位M8.0的周期为100ms(ON50ms,OFF50ms)。
图4-5 设置时钟存储器
CPU 413-2DP的OB1的程序段1中的两条语句,使M10.0和M8.1的相位相反。它们分别作系统功能块GET和PUT的REQ(通信请求)信号,它们的上升沿互差100ms。下面是OB1中的程序:
程序段1:将时钟脉冲信号反相(www.xing528.com)
程序段2:读取通信伙伴的数据
程序段3:向通信伙伴的数据区写入数据
在调用SFB PUT和GET时,允许只使用4个地址区中的部分地址区。
ERROR和STATUS均为0时,没有警告和错误;ERROR为0、STATUS非0时,有警告信息;ERROR为1时通信出错。SFB的在线帮助给出了STATUS的警告或错误代码的意义。
下面是CPU 413-2DP的OB35中的程序:
程序段1:
4.初始化程序
在CPU 413-2DP的初始化程序OB100中,调用SFC 21,将DB1、DB3和M区中的数据发送区的各个字分别预置为16#1111、16#3333和16#4444,将DB2、DB4和M区中的数据接收区的各个字清零。程序中的LW20和LW22是OB100的局部变量字。
下面是CPU 413-2DP的OB100中的程序:
程序段1:初始化存放要发送的数据的地址区
程序段2:将存放接收的数据的地址区清零
CPU 313C-2DP和CPU 413-2DP的OB100中的程序基本上相同,其区别在于前者分别将DB1、DB3和M区中的数据发送区的数据初始化为W#16#1010、W#16#3030和W#16#4040。CPU313C-2DP的OB1中没有通信程序,OB35每100ms分别将DB1.DBW0和DB3.DBW0加3和加4。
5.通信的监控
用PROFIBUS电缆将两块CPU和CP 5613的MPI接口连接到一起,将组态信息和程序分别下载到两台PLC。运行时用电缆将两块CPU集成的DP接口连接到一起,可以用MPI网络或PROFIBUS网络对通信过程进行监控。
运行时通信双方的OB35使DB1.DBW0和DB3.DBW0的值不断增大,然后发送到对方的DB2.DBW0和DB4.DBW0。在时钟脉冲M8.1的上升沿,每200ms读取一次CPU313C-2DP的数据;在时钟脉冲M10.0的上升沿,每200ms将数据写入CPU313C-2DP的数据区。
同时打开通信双方的变量表,将它们调节到适当的大小。点击工具栏上的按钮,变量表进入监控状态,“状态值”列显示的是PLC中变量的值。图4-6和图4-7是在运行时复制的通信双方的变量表。在变量表中可以看到双方接收到的DB2.DBW0和DB4.DBW0的值在不断地增大,此外可以看到各数据接收区接收到的第一个字和最后一个字。
图4-6 CPU 413-2DP的变量表
图4-7 CPU 313C-2DP的变量表
通过CPU 413-2DP读、写CPU 313C-2DP中的数据,实现了用两个站的ID0分别控制对方的QD0或QD4。在运行时用外接的小开关改变ID0的状态,可以看到通信伙伴对应的输出点的状态随之而变。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。