1.S7通信
S7通信是专为SIMATIC S7优化设计的通信协议,它主要用于S7 CPU之间的主-主通信、CPU与西门子人机界面和组态软件WinCC之间的通信。S7通信可以用于工业以太网、PROFIBUS或MPI网络。这些网络的S7通信的组态和编程方法基本上相同。
2.客户机与服务器
S7连接分为单向连接和双向连接,在单向连接通信中客户机(Client)是主动的,需要调用通信块GET和PUT来读、写服务器的存储区。通信服务经客户机要求而启动。服务器(Server)是通信中的被动方,不需编写通信程序,通信功能由它的操作系统来执行。单向连接只需要客户机组态连接、下载组态信息和编写通信程序。
双向连接(在两端组态的连接)的通信双方都需要下载连接组态,一方调用发送块U_SEND或B_SEND来发送数据,另一方调用接收块U_RCV或B_RCV来接收数据。
用于S7通信的SFB/FB见表6-6。
表6-6 用于S7通信的SFB/FB
(续)
S7-400调用SFB进行S7通信(见表6-6),S7-300的CPU 31x-2PN/DP调用\Standard Library\Communication Blocks库里的FB进行S7通信。使用CP模块的CPU 31x调用\SIMATICLNETLCP\CP 300库里的FB进行S7通信。
有S7-300集成的DP、MPI通信接口参与时,只能进行单向S7通信,S7-300集成的DP、MPI通信接口在通信中只能作服务器。S7-400 CPU集成的DP、MPI、以太网接口和S7-300 CPU集成的以太网接口在单向S7通信中既可以作服务器,也可以作客户机。它们之间还可以进行双向S7通信。
网络组态工具NetPro有很强的防止出错的功能,它会禁止建立那些选用的硬件不支持的通信连接组态。PLCSIM V5.4 SP3及更高的版本支持对S7通信的仿真。
3.组态硬件
在STEP 7中创建一个名为“S7LDP”的项目(见随书光盘的同名例程),CPU为CPU 412-2DP。打开硬件组态工具HW Config,将电源模块和信号模块插入机架。
双击机架中CPU 412-2DP下面“DP”所在的行,打开DP属性对话框,新建一条PRO-FIBUS网络,传输速率为默认的1.5Mbit/s,配置文件为“标准”(主从通信时配置文件为“DP”)。CPU集成的DP接口和MPI接口默认的地址均为2,默认的工作模式为DP主站。单击工具栏上的 按钮,编译并保存组态信息
在SIMATIC管理器中生成一个S7-300站。在HW Config中,将CPU 313C-2DP插入机架,在自动打开的“属性-PROFIBUS接口”对话框的“参数”选项卡中,设置站地址为3,选中“子网”列表中的“PROFIBUS(1)”,将CPU 313C-2DP连接到DP网络上,默认的工作方式为DP主站。在CPU属性对话框的“常规”选项卡中,设置MPI地址为3。将电源模块和信号模块插入机架。组态好硬件后,单击工具栏上的 按钮,编译并保存组态信息。
4.组态S7连接
单击SIMATIC管理器工具栏上的 按钮,打开网络组态工具NetPro,可以看到两个站已经连接到DP网络上。选中CPU 412-2DP所在的小方框,在NetPro下面的窗口出现连接表(见图6-36)。双击连接表的第1行,在出现的“插入新连接”对话框中(见图6-37的左图),系统默认的通信伙伴为同一项目中的CPU 313C-2DP,默认的连接类型为S7连接。
单击“确定”按钮,确认默认的设置,出现S7连接属性对话框。因为S7-300集成的DP接口不支持双向S7通信,“本地连接端点”区中的“在一端配置”复选框被自动选中,并且不能更改,因此默认的连接方式为单向连接。在调用通信SFB时,将会使用“块参数”区的“本地ID”(本地标识符)的值。因为是单向连接,连接表中没有通信伙伴的ID(标识符),选中图6-36中CPU 313C-2DP所在的小方框,下面的连接表中没有连接信息。在单向S7连接中,仅需将网络组态信息下载到S7通信的客户机(CPU 412-2DP)。
图6-36 网络与连接组态(www.xing528.com)
图6-37中的复选框“建立主动连接”被自动选中,连接表的“激活的连接伙伴”列显示“是”。在运行时,由本地站点SIMATIC 400建立连接。
图6-37 “插入新连接”对话框与S7连接属性对话框
组态好连接后,单击工具栏上的 按钮,编译并保存网络组态信息。
5.S7通信编程
为两台CPU生成数据块DB1和DB2,分别在数据块中创建一个有20个字节元素的数组ARAY。CPU 412-2DP作为客户机,在它的OB1中调用单向通信功能块GET和PUT,读、写服务器的存储区。CPU 313C-2DP作为服务器,不需要调用通信功能块。
在通信请求信号REQ的上升沿时激活SFB GET、PUT的数据传输。为了实现周期性的数据传输,用时钟存储器位提供的时钟脉冲作REQ信号。组态时双击HW Config的机架中的CPU 412-2DP,在出现的CPU属性对话框的“周期/时钟存储器”选项卡中,设置时钟存储器字节为MB8。MB8的第1位M8.1的周期为200ms(0状态和1状态各100ms)。下面是CPU 412-2DP的OB1中的程序,程序段1中的两条指令使M10.0和M8.1的相位相反,它们的上升沿互差100 ms。它们分别用来做SFB GET和PUT的通信请求信号REQ的实参。
SFB GET/PUT最多可以读、写4个数据区,本例程只读、写了两个数据区。
SFB的在线帮助给出了STATUS中的警告或错误代码的意义。在CPU 412-2DP的OB35中,每100 ms将要发送的第一个字DB1.DBW0加1。在CPU 412-2DP的初始化程序OB100中调用SFC21,将数据发送区DB1和MB40~MB59中的各个字分别预置为16#4001和16#4002,将DB2和MB20~MB39中的数据接收区的各个字清零。
CPU313C-2DP和CPU 412-2DP的OB100中的程序基本上相同,其区别在于前者将数据发送区DB1和MB40~MB59中的各个字分别预置为16#3001和16#3002。CPU 313C-2DP的OB1中没有通信程序,其OB35每100 ms将DB1.DBW0加2。
6.通信的仿真实验
图6-38是该项目组态和编程结束后的SIMATIC管理器。单击工具栏上的 按钮,打开PLCSIM,出现名为S7-PLCSIM1的窗口(见图6-39的左图),可以将它视为一台仿真PLC。
图6-38 SIMATIC管理器
图6-39 用PLCSIM仿真两台PLC
选中SIMATIC管理器左边窗口CPU 412-2DP的“块”,单击工具栏上的 按钮,下载“块”文件夹中的系统数据和用户程序。下载后S7-PLCSIM1的标题栏出现了下载的PLC站点的名称SIMATIC 400(1)和CPU的型号CPU 412-2DP。生成一个视图对象,将它的地址改为DB2.DBW0。
单击PLCSIM工具栏上的按钮,生成一个名为S7-PLCSIM2的新的仿真PLC(见图6-39的右图)。选中SIMATIC管理器左边窗口CPU 313C-2DP的“块”,单击工具栏上的 按钮,下载“块”文件夹中的系统数据和用户程序。下载后S7-PLCSIM2的标题栏出现了下载的PLC站点的名称SIMATIC 300(1)和CPU的型号CPU 313C-2DP。生成一个视图对象,将它的地址改为DB2.DBW0。
在时钟脉冲M8.1的上升沿,CPU 412-2DP每200ms读取一次CPU 313C-2DP的数据;在时钟脉冲M10.0的上升沿,每200ms将数据写入CPU 313C-2DP的数据区。运行时通信双方的OB35使DB1.DBW0的值不断增大,然后发送给对方的DB2.DBW0。下载后将两台仿真PLC切换到RUN-P模式,可以看到双方接收到的第一个字DB2.DBW0的值在不断增大。
为两个站点分别生成一个变量表,用它们监控接收到的两个数据区的第一个字和最后一个字。同时打开两个变量表,调节它们的位置和大小,保证能同时看到其中的全部变量。启动两个变量表进入监控状态,可以看到双方DB2中接收到的数据与对方DB1中的值相同。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。