版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、date: 2021-5-13 第第3部分部分: simatic plc之间以及之间以及plc与从站通讯任务与从站通讯任务 学习第学习第3部分之后,学员将部分之后,学员将 . . 了解simatic 通讯网络与服务 . 熟悉plc 与plc之间mpi的全局数据通讯 . 掌握使用 sfc 进行 s7 基本通信 . 掌握使用 sfb 进行 s7 扩展通信 . 了解主站系统的fdl通讯组态 . 掌握profibus-dp主从通讯 . 了解西门子驱动通讯ppo的概念 . 掌握通过profibus与驱动装置的通讯 date: 2021-5-13 自动化系统网络体系自动化系统网络体系 执行器执行器-传感传
2、感 器级器级 设备级设备级 车间级车间级 工厂级工厂级 as-i date: 2021-5-13 程序控制 使用mpi、 k-bus、 profibus 或工业以太网 程序控制 使用mpi 或 k-bus 面向面向 s7-300/400 的的 s7 通信服务通信服务 全局数据全局数据 无需组态连接的基本通信无需组态连接的基本通信使用组态连接的扩展通信使用组态连接的扩展通信 cpu 的的 操作系统操作系统 cpu 的的 操作系统操作系统 循环和/或程序控制 使用 mpi 或者 k-bus sfcsfcsfbsfb pg 和和 hmi 的功能的功能 cpu 的的 操作系统操作系统 由操作系统控制
3、使用 mpi、k-bus、profibus 和 工业以太网 p g 720 date: 2021-5-13 使用以太网的使用以太网的 s7 连接连接 p g 720 使用使用 mpi 的的 pg 连接连接 s7-400 s7-300 使用使用 profibus 的的 op 连接连接 通信各方之间的连接通信各方之间的连接 cp cpu 1 cp profibus industrial ethernet 工业以太网 mpi profibus 工业以太网工业以太网 cp cpu 2 使用使用 mpi 的的 s7 连接连接 使用使用 profibus 的的 s7 连接连接 date: 2021-5-1
4、3 全局数据:概述全局数据:概述 全局数据全局数据 cpu 1 mw 10 cpu 2 mw 20 cpu 3 mw 30 硬件成本低; 使用简单,不需要编程; s7-400可以实现事件驱动的全局数据通讯; 传输数据量少,22b/54b; 广播方式传输数据。 date: 2021-5-13 2 全局数据循环全局数据循环 cpu1cpu2cpu3cpu4cpu5 全局数据循环全局数据循环 1 3 4 5 6 s=发送方;r=接收方;gd x.y=全局数据循环 x 中的全局数据包 y s gd 1.1 r gd 1.2 r gd 1.1 s gd 1.2 r gd 2.1s gd 2.1r gd
5、2.1r gd 2.1r gd 2.1 s gd 3.1 r gd 3.2 r gd 3.1 s gd 3.2 r gd 4.1 s gd 4.1 r gd 4.1 s gd 5.1r gd 5.1r gd 5.1 r gd 6.1s gd 6.1r gd 6.1 date: 2021-5-13 全局数据:组态过程全局数据:组态过程 q在项目内创建硬件站点 使用simatic manager q创建和下载每个 cpu 的组态数据 (mpi 地址) 使用“hw config” 工具 q组态全局数据表 使用“defining global data” 工具 date: 2021-5-13 全局数据
6、:配置硬件全局数据:配置硬件 设置设置 mpi 地址地址 cpu 的逻辑网络的逻辑网络 创建站点创建站点 可访问节点可访问节点 date: 2021-5-13 编辑全局数据表编辑全局数据表 打开全局数据表打开全局数据表 选择选择 cpu 复制因子复制因子 定义全局数据定义全局数据 date: 2021-5-13 设置扫描速率设置扫描速率 扫描速率的单位是扫描速率的单位是cpu的扫描周期,的扫描周期,s7-300默认为默认为8,s7-400默认为默认为22,可以修改,可以修改1-255;如果;如果s7- 400扫描速率为扫描速率为0,表示事件驱动的,表示事件驱动的gd数据传输。数据传输。 发送器
7、的扫描速率发送器的扫描速率22,表示每,表示每22个扫描周期发送一次个扫描周期发送一次gd包,接收器的扫描速率包,接收器的扫描速率8,表示每,表示每8个扫描个扫描 周期接收一次周期接收一次gd包。包。 一般采用默认速率,以免网络通讯超载。一般采用默认速率,以免网络通讯超载。 date: 2021-5-13 gd状态双字状态双字 给每个数据包指定一个用于状态双字的地址。给每个数据包指定一个用于状态双字的地址。 状态双字使用户程序能及时了解通讯的有效性状态双字使用户程序能及时了解通讯的有效性 和及时性,增强了系统的故障诊断能力。和及时性,增强了系统的故障诊断能力。 状态字位 对应的错误状态 状态字
8、位 对应的错误状态 第1位发送区长度错误 第7位发送区与接收区数据对象长度不一致 第2位发送区数据块不存在 第8位 接收区长度错误 第4位全局数据块丢失 第9位接收区数据块不存在 第5位全局数据块语法错误 第12位发送方重新启动 第6位全局数据块数据对象丢失 第32位接收区接收到新数据 date: 2021-5-13 编译全局数据表(编译全局数据表(1) 参与收发全局数据的cpu组成了全局数据环(gd circle),cpu可以向同一个环内的其他cpu发送或 接收数据,在一个mpi网络中,可以建立16个全局数据环(gd circle),每个环最多15个cpu参与。 具有相同发送站和接收站的全局
9、数据字节数值和称之为一个全局数据包。 gd 1.1.1: 1号gd环的1号gd包中的1号数据。 date: 2021-5-13 编译全局数据表(编译全局数据表(2) date: 2021-5-13 下载下载 gd 组态数据组态数据 下载下载 gd 组态数据组态数据 gd_mpi_1 例程例程 date: 2021-5-13 事件驱动的事件驱动的gd数据通讯数据通讯 事件触发的数据传送:如果需要控制数据的发送与接收,比如在某一事件或某一时刻,接收和发送所需 要的数据,这时将用到事件触发的数据传送方式。 这种通信方式是通过调用cpu的系统功能sfc60(gd_snd)和sfc61(gd_rcv)来
10、完成的,而且 只支持s7-400的cpu,并且相应设置cpu的sr(扫描频率)为0。 系统功能sfc60(gd_snd)和 sfc61(gd_rcv)可以在用户程序 中任何一点被调用,在gd数据表中的 扫描速率不受系统功能sfc60( gd_snd)和sfc61(gd_rcv)的 影响。系统功能sfc60(gd_snd) 和sfc61(gd_rcv)可能被更高优 先级的程序块中断,为了保持gd数据 的连续性,在调用sfc60之前,调用 sfc39 “dis_irt”或sfc41 “dis_airt”来禁止或延迟更高优先级的 中断和异步错误。执行完sfc60后,调 用sfc 40 “en_irt
11、”或sfc 42 “en_airt”允许更高优先级的中断和异 步错误。 date: 2021-5-13 事件驱动的事件驱动的gd数据通讯的编程数据通讯的编程 站点站点3 站点站点2 gd环编号环编号 1 gd包编号包编号 1 i 0.0上升沿才发送接收数据。上升沿才发送接收数据。 mpi_gd_b例程例程 date: 2021-5-13 全局数据通讯的练习全局数据通讯的练习 组态组态3个站之间的全局数据通讯:个站之间的全局数据通讯:cpu400/ cpu300/cpu300 (2/3/4) 要求:站点要求:站点3的的id0,传输给站点,传输给站点4的的qd4;站点;站点2的的qd0传给站点传给
12、站点4的的id0;站点;站点3的的db2.dbb0开始的开始的10 个字节传给站点个字节传给站点4的的db1,从,从dbb0开始存放数据;站点开始存放数据;站点3的的mb10开始的开始的10个字节传给站点个字节传给站点4的的db1,从,从 dbb10开始存放数据;站点开始存放数据;站点3的数据的数据db1.dbb0开始开始22个字节,传送给站点个字节,传送给站点2,和站点,和站点4的的db2,从,从 dbb0开始存放数据。开始存放数据。 建立硬件组态,建立硬件组态,gd组态表。组态表。 date: 2021-5-13 使用使用 sfc 进行进行 s7 基本通信:概述基本通信:概述 l使用使用
13、mpi 子网内进行数据交换子网内进行数据交换 l与与 sfb 通信相比,无需组态连接通信相比,无需组态连接 l动态建立和断开与对方的连接动态建立和断开与对方的连接 l可传输多达可传输多达 76 个数据字节个数据字节 l可以用于所有的可以用于所有的 s7-300/400 cpu l在在 s7-200 中可通过中可通过 mpi 接口读写变量接口读写变量 (x_get、x_put) l也可在另一个也可在另一个 s7 项目中找到通信伙伴项目中找到通信伙伴 date: 2021-5-13 使用使用 sfc 进行进行 s7 基本通信:块概述基本通信:块概述 sfc sfc 65 名称名称 x_send s
14、fc 66x_rcv x_getsfc 67 x_putsfc 68 x_abortsfc 69 i_getsfc 72 i_putsfc 73 i_abortsfc 74 简介简介 发送块,向发送块,向 x_rcv (客户端客户端) 块发送数据块发送数据 接收块,接收接收块,接收 x_send 块的数据块的数据 从伙伴从伙伴 plc 读数据读数据 向伙伴向伙伴 plc 写数据写数据 中止现有连接中止现有连接 从伙伴从伙伴 cpu 读数据读数据 向伙伴向伙伴 cpu 写数据写数据 中止与伙伴中止与伙伴 cpu 的连接的连接 date: 2021-5-13 使用使用 sfc 进行进行 s7 基本
15、通信:基本通信:x_send (sfc 65) 块块 带参数赋值示例 call sfc 65 req:= m4.0/触发器,通过req=1来触发数据传送作业 cont:= false/数据传送作业传送结束之后是否保持与通讯伙伴的连接 dest_id:= w#16#4/接收数据站点的mpi_addr req_id:= dw#16#1/用于标识数据作业的标识符,用于识别通讯伙伴的数据 sd:= p#m20.0 byte 10 /变量,指向发送区域的一个指针 ret_val:= mw40/出错码 busy:= m 4.1/=1sfc 激活,=0发送作业已经结束或者不存在激活的发送作业 说明说明使用
16、sfc 65 (x_send),可以向不在同一个本地 s7 站内的通信伙伴发送数据。通信伙 伴方的数据接收通过 sfc 66 (x_rcv) 实现。 可以用输入参数 req_id 标识要发送的数据。该作业标识符也将被传递,可以在通信伙 伴方检测该标识,以便确定数据的起始位置。 通过 req=1 调用 sfc 之后,开始发送操作。 必须确保通过参数 sd 定义的发送区域 (位于发送 cpu 上) 小于或等于由 rd 参数定义的 接收区域 (位于通信伙伴方)。 date: 2021-5-13 使用使用 sfc 进行进行 s7 基本通信:基本通信:x_rcv (sfc 66) 块块 带参数赋值示例
17、call sfc 66 en_dt:= true/触发数据传输,=1,复制队列中最早的数据块到rd指定的工作存储 区域。 ret_val:= mw 50/出错码 req_id:= md52/作业 id,接收到的数据包的标识符 nda:= m40.0/数据存在,指示是否有新的数据到达 rd:= p#m20.0 byte 10 /变量,指向接收区域的指针 通过sfc66 “x_rcv”,接收本地s7站以外的一个或多个通讯伙伴通过sfc65 “x_send”发送的数据。 说明说明 通过 sfc 66 (x_rcv) 可以接收一个或者多个通信伙伴使 用 sfc 65 (x_send) 发送的数据。该
18、(这些) 通信伙伴不在当前 s7 站内。使用 sfc 66 (x_rcv) 可以: 确定此时发送数据是否可用。必要的话,操作系统可以将这些 数据放到一个内部队列中。 从队列中将最早的数据块复制到一个指定的输入区域中。通过 输入参数 en_dt (使能数据传输) 进行选择。 date: 2021-5-13 发送接收数据程序发送接收数据程序 call x_send /调用调用sfc 65 req :=m1.0 /发送请求,该参数为发送请求,该参数为1时候发送时候发送 cont :=true /发送完成后保持连接发送完成后保持连接 dest_id:=w#16#3 /接收方的接收方的mpi地址地址 r
19、eq_id :=dw#16#1 /数据包标识符数据包标识符 sd :=p#db1.dbx0.0 byte 76 /存放要发送的数据的地址区域存放要发送的数据的地址区域 ret_val:=mw12 /通讯状态字,返回的故障信息通讯状态字,返回的故障信息 busy :=m1.1 /为为1时正在发送,为时正在发送,为0时完成发送时完成发送 call “x_rcv” /调用调用sfc 66 en_dt :=m0.0 /接收使能位接收使能位 ret_val:=mw2 /接收状态字,返回状态信息接收状态字,返回状态信息 req_id :=md4 /接收到的数据包的标识符接收到的数据包的标识符 nda :=
20、m0.1 /为为1时表示有新的数据包时表示有新的数据包 rd :=p#db3.dbx0.0 byte 76 /存放接收的数据的地址区域存放接收的数据的地址区域 mpi_uc_1例程例程 date: 2021-5-13 双边通讯数据流通讯的双边通讯数据流通讯的s7编程练习编程练习 组态组态2个站之间的全局数据通讯:个站之间的全局数据通讯:cpu400/ cpu300 (2/3) 要求:站点要求:站点3的的id0,控制站点,控制站点2的的qd4; 站点站点3的的db2.dbb0开始的开始的76个字节传给站点个字节传给站点2的的db1,从,从dbb0开始存放数据。开始存放数据。 date: 2021
21、-5-13 s7-300之间通过之间通过sfc67_68实现实现mpi通讯通讯 s7-300与s7-300之间采用mpi通讯方式时,其中一台cpu不需要编写任何与通讯有关的程 序,只需将交换的数据整理到一个连续的db块中存储即可;而另外一台s7-300中需要在 ob1(也可以在ob35循环中断组织快)中调用sfc67 x_get和sfc68 x_put,实现两台 cpu之间的通讯。 调用sfc67 x_get和sfc68 x_put时,var_addr参数填写通讯伙伴的数据地址区,这 里需要填写:p#db1.xxx byte n对应的就是对方cpu的db存储区域中的数据区。 通过sfc67 “
22、x_get”,可以从本地s7站以外的通讯伙伴中读取数据。在通讯伙伴上没有相 应sfc。 在通过req=1调用sfc之后,读作业被激活。此后,可以继续调用sfc,直到busy=0指 示数据接收为止。然后,ret_val便包含了以字节为单位的、已接收的数据块的长度。 必须要确保由rd参数定义的接收区(在接收cpu上)至少和由var_addr参数定义的要读取 的区域(在通讯伙伴上)一样大。rd的数据类型还必须和var_addr的数据类型相匹配。 date: 2021-5-13 单边通讯的编程组态(单边通讯的编程组态(1) date: 2021-5-13 单边通讯的编程组态(单边通讯的编程组态(2)
23、active 客户机客户机/服务器服务器 mpi_uc_2 例程例程 date: 2021-5-13 sfc67/sfc68编程调用编程调用 用用sfc 68写对方的数据区写对方的数据区 call x_put /sfc 68 req :=m0.0 /写数据使能信号写数据使能信号 cont :=true /发送完成后保持连接发送完成后保持连接 dest_id :=w#16#3 /对方的对方的mpi地址地址 var_addr:=p#db2.dbx0.0 byte 76 /通信伙伴要写入数据的地址区域通信伙伴要写入数据的地址区域 sd :=p#db1.dbx0.0 byte 76 /存放本站要发送的
24、数据的地址区域存放本站要发送的数据的地址区域 ret_val :=mw2 /通讯状态字,返回错误信息通讯状态字,返回错误信息 busy :=m0.1 /为为1时写数据未完成时写数据未完成 用用sfc 67读对方的数据区读对方的数据区 call x_get /sfc 67 req :=m0.2 /读数据使能信号读数据使能信号 cont :=true /读数据完成后保持连接读数据完成后保持连接 dest_id :=w#16#3 /对方的对方的mpi站地址站地址 var_addr:=p#db1.dbx0.0 byte 76 / 要读取的通讯伙伴的地址区域要读取的通讯伙伴的地址区域 ret_val :
25、=mw4 /通讯状态字,返回错误信息通讯状态字,返回错误信息 busy :=m0.3 / 为为1时写数据未完成时写数据未完成 rd :=p#db2.dbx0.0 byte 76 / 本站存放读取的数据的地址区域本站存放读取的数据的地址区域 l db2.dbd 2 t qd 0 date: 2021-5-13 sfc67/sfc68单边编程的练习单边编程的练习 任务:组态任务:组态2号站和号站和3号站,号站,m4.0为为1则则2号站点的号站点的db10.dbd10的数据传送的数据传送 给给3号站点的号站点的md50; 如果如果m5.0为为1,读取,读取3号站点的号站点的mw40内的数据,并存放在
26、内的数据,并存放在2号站点的号站点的 db20.dbw10内。内。 date: 2021-5-13 扩展扩展 s7 通信:概述通信:概述 l使用使用 mpi、k-bus、profibus 或工业以太网进行数据交换或工业以太网进行数据交换 l通过连接表组态连接通过连接表组态连接 l连接在暖启动时建立组态并永久存在连接在暖启动时建立组态并永久存在 (即使是即使是 stop 模式模式) l用户数据大小高达用户数据大小高达 64 k 字节字节 l通信服务也可用于控制通信服务也可用于控制 (停止、启动停止、启动) 通信伙伴通信伙伴 lsfb只存在于只存在于s7-400-cpu ,s7-300-cpu可使
27、用库中的同号码的可使用库中的同号码的fb(仅支持(仅支持 profibus 或工业以太网)或工业以太网) l可使用可使用get/put 对对s7-300进行数据的读和写进行数据的读和写 l通过一个连接可以处理不同的任务通过一个连接可以处理不同的任务 用户数据用户数据用户数据的大小取决于使用的块 和通信伙伴: put/get:160 字节 (与 s7-31x 通信); 180 字节 (与 s7-31xc 通信); 400 字节 (与 s7-400/m7 通信)。 usend/urec:最多 440 字节 bsend/brcv:最多 64k 字节 date: 2021-5-13 sfb 通信:块概
28、况通信:块概况 sfb/sfc sfb 8 名称名称 usend sfb 9urcv bsendsfb 12 brcvsfb 13 getsfb 14 通信类型通信类型 双向双向 双向双向 双向双向 双向双向 单向单向 putsfb 15单向单向 printsfb 16单向单向 startsfb 19单向单向 stopsfb 20单向单向 resumesfb 21单向单向 statussfb 22单向单向 ustatussfb 23单向单向 controlsfc 62- 简述简述 发送块,用于向发送块,用于向 urcv (客户端客户端) 块发送数据块发送数据 接收块,接收接收块,接收 usen
29、d 的数据的数据 发送块,用于向发送块,用于向 brcv 块发送较大数据块块发送较大数据块 (最多最多 64k 字节字节) 接收块,用于接收较大数据块接收块,用于接收较大数据块 (最多最多 64k 字节字节) 从伙伴从伙伴 plc 读数据读数据 向伙伴向伙伴 plc 写数据写数据 向远程打印机发送数据向远程打印机发送数据 在通信伙伴上执行完全重启动在通信伙伴上执行完全重启动 将通信伙伴置为将通信伙伴置为 stop 状态状态 在通信伙伴上执行重启动在通信伙伴上执行重启动 通信伙伴的状态扫描通信伙伴的状态扫描 (run、stop、start-up、hold) 接收通信伙伴的状态信息接收通信伙伴的状
30、态信息 扫描扫描 s7 连接连接 + sfb 的内部状态的内部状态 date: 2021-5-13 用于用于s7通讯数据交换的通讯数据交换的sfb/fb以及支持通讯的功能以及支持通讯的功能 编号助记符号可传输字节描述 s7-400s7-300s7-400s7-300 sfb8fb8u_send440b160b与接收方通信功能u_rcv执行序列无关的快速的无需要 确认的数据交换,对方接收到的数据可能被新的数据覆 盖。 sfb9fb9u_rcv sfb12fb12b_send64kb32kb将数据块安全的传输到通讯伙伴,直到通信伙伴的接收 功能b_rcv接收完数据,数据传输才结束。 sfb13fb
31、13b_rcv sfb14fb14get400b400b程序控制读取远方cpu的变量,通讯伙伴不需要编写通 讯程序。 sfb15fb15put程序控制把变量写到远方的cpu,通讯伙伴不需要编写 通讯程序。 不同dp口之间允许的s7通讯功能 s7-300集成 dp口 s7-400集 成dp口 cp-342-5 的dp口 cp-443-5 ext的dp口 s7-300集成dp口不支持单向通讯单向通讯单向通讯 s7-400集成dp口单/双向通 讯 单/双向通 讯 单/双向通讯 cp-342-5的dp口单/双向通 讯 单/双向通讯 cp-443-5 ext的dp口单/双向通讯 date: 2021-5
32、-13 使用使用 netpro 组态网络组态网络 双击双击 插入硬件站点插入硬件站点 双击双击 双击双击 date: 2021-5-13 组态组态 s7 连接连接 插入连接插入连接 远程站点远程站点 远程远程 cpu 选择选择 date: 2021-5-13 建立连接属性建立连接属性 date: 2021-5-13 编译和下载组态数据编译和下载组态数据 下载下载 保存并编译保存并编译 date: 2021-5-13 测试连接状态测试连接状态 连接状态连接状态 date: 2021-5-13 使用使用 s7 连接进行单向通信服务连接进行单向通信服务 s7-400 mpi=3 s7-300/400
33、 逻辑逻辑 s7 连接连接 (单向或双向单向或双向) mpi=2 cpu mpi=2 cpu mpi=2 1 本地本地 id 物理连接,如物理连接,如 mpi sfb: - get - put - stop - start - status cpu 的的 操作系统操作系统 1 单向单向 s7 通信通信 从 s7-400 到 s7-300 的单向 s7 连接可通过组态工具自动地设置。对于单向连接,只需 在 s7-400 上分配一个本地连接 id 来标识该连接,即通信伙伴和传输介质。不需要在 s7-300 上分配连 接 id,因为用于寻址通信连接的 sfb 不在 s7-300 cpu 的操作系统中
34、。 date: 2021-5-13 s7单向通讯的组态(单向通讯的组态(1) date: 2021-5-13 s7单向通讯的组态(单向通讯的组态(2) 默认连接为单向,默认连接为单向, 在调用在调用sfc时候,会使用时候,会使用“块参数块参数”中的中的“本地本地id”的值。的值。 s7-300/s7-400集成的集成的dp口只能建立单向的连接,所以没有通讯伙伴的口只能建立单向的连接,所以没有通讯伙伴的id。 date: 2021-5-13 s7单向通讯的编程(单向通讯的编程(1) 单向通讯只需要通讯的一方编写通讯程序,编写程序的一方的单向通讯只需要通讯的一方编写通讯程序,编写程序的一方的cpu
35、为客户机,不需要编写程序的一方的为客户机,不需要编写程序的一方的 cpu为服务器,客户机是向服务器请求服务的设备,是主动的,需要调用通讯块对服务器的数据进行读为服务器,客户机是向服务器请求服务的设备,是主动的,需要调用通讯块对服务器的数据进行读 写操作。服务器是提供特定服务的设备,是被动的。写操作。服务器是提供特定服务的设备,是被动的。 s7-400作为客户机,调用作为客户机,调用get, put程序块读写服务器的存储区。程序块读写服务器的存储区。 s7-400的的s7通讯块通讯块 s7-300的的s7通讯块通讯块 date: 2021-5-13 s7单向通讯的编程(单向通讯的编程(2) ca
36、ll get , db14 /sfb14 req :=m8.1 / 上升沿时激活数据传输,每200ms读取一次 id :=w#16#1 /s7的连接id号 ndr :=m0.1 /每次读取完,产生一个脉冲 error :=m0.2 /错误标志,出错时为1 status:=mw2 /状态字,0为没有错误和警告 addr_1:=p#db1.dbx0.0 byte 20 /要读取的通讯伙伴的1号地址区域 addr_2:=p#db3.dbx0.0 byte 20 /要读取的通讯伙伴的2号地址区域 addr_3:=id0 /要读取的通讯伙伴的id0双字 addr_4:=p#m 40.0 byte 20
37、/要读取的通讯伙伴的4号地址区域 rd_1 :=p#db2.dbx0.0 byte 20 /本站存放读取的数据的1号地址区域 rd_2 :=p#db4.dbx0.0 byte 20 /本站存放读取的数据的2号地址区域 rd_3 :=qd0 /通讯伙伴的id0控制本站的qd0 rd_4 :=p#m 20.0 byte 20 /本站存放读取的数据的4号地址区域 call put , db15 /sfb15 req :=m10.0 / 上升沿时激活数据传输,每200ms读取一次 id :=w#16#1 /s7的连接id号 done :=m10.1 /每次读取完,产生一个脉冲 error :=m10.
38、2 /错误标志,出错时为1 status:=mw12 /状态字,0为没有错误和警告 addr_1:=p#db2.dbx0.0 byte 20 /要写入数据的通讯伙伴的1号地址区域 addr_2:=p#db4.dbx0.0 byte 20 /要写入数据的通讯伙伴的2号地址区域 addr_3:=qd4 /要控制通讯伙伴的qd4双字 addr_4:=p#m 20.0 byte 20 /要写入数据的通讯伙伴的4号地址区域 sd_1 :=p#db1.dbx0.0 byte 20 /存放本站要发送的数据的1号地址区域 sd_2 :=p#db3.dbx0.0 byte 20 /存放本站要发送的数据的1号地址
39、区域 sd_3 :=id0 /用本站的id0控制通讯伙伴的qd4 sd_4 :=p#m 40.0 byte 20 /存放本站要发送的数据的1号地址区域 pb_s7_a例程例程 date: 2021-5-13 s7编程单向连接练习编程单向连接练习 任务:组态实现任务:组态实现cpu413-2dp(2号站)与号站)与cpu315-2dp(3号站)号站)cp342-5(4号站)的单向号站)的单向s7通讯。通讯。 要求:要求:2号站点读取通讯伙伴的地址区域号站点读取通讯伙伴的地址区域db1.dbx0.0 开始开始20个字节,存放到个字节,存放到mb0开始的开始的20个字节中;个字节中; 2号站把号站把
40、db1.dbx0.0开始开始20个字节写入数据到通讯伙伴的地址区域个字节写入数据到通讯伙伴的地址区域db2.dbx0.0开始的开始的20个字节。个字节。 在程序中必须初始化数据块。在程序中必须初始化数据块。 date: 2021-5-13 使用使用 s7 连接进行双向通信服务连接进行双向通信服务 s7-400 mpi=3 s7-400 逻辑逻辑 s7 连接连接 (双向双向) mpi=2 cpu mpi=2 cpu mpi=2 2 本地本地 id 物理连接,如物理连接,如 mpi 1 sfb: - usend - urcv - bsend - brcv sfb: - urcv - usend -
41、 brcv - bsend 2 1 在两个 s7-400 cpu 之间组态 s7 连接时,自动建立双向 s7 连接,双向连接中的连接双方都分配有一个 连接 id,因而双方都可以使用这个 id 来指向这个连接。伙伴双方的任何一方都可以作为通信服务的发起 者 (客户机)。 date: 2021-5-13 usend/urcv双向通讯组态双向通讯组态 使用使用usend/urcv,可以进行快速、不可靠的数据传输,比如事件消息或报警消息的传送,通讯双方,可以进行快速、不可靠的数据传输,比如事件消息或报警消息的传送,通讯双方 都需要调用通讯功能。都需要调用通讯功能。 pb_s7_b例程例程 在进行实际数
42、据传送 之前,必须通过两个 伙伴中的一个建立(初 始化)连接。 始终为本地方激活建 立激活连接复选框, 并自动在伙伴方取消 激活该复选框。 date: 2021-5-13 usend/urcv双向通讯编程双向通讯编程 call usend , db8 /sfb 8 req :=m8.0 /100ms时钟脉冲上升沿时发送时钟脉冲上升沿时发送 id :=w#16#1 /s7连接连接id号号 r_id :=dw#16#1 /发送与接收请求号,用于区分同一连接中不同的发送与接收请求号,用于区分同一连接中不同的sfb/fb调用,发送方调用,发送方 与接收方的与接收方的r_id应相同。应相同。 done
43、:=m10.1 /任务被正确执行为任务被正确执行为1 error :=m10.2 /错误标记位,错误标记位,1为出错为出错 status:=mw12 /状态字状态字 sd_1 :=p#db1.dbx0.0 byte 20 /存放要发送的数据的存放要发送的数据的1号地址区域号地址区域 sd_2 :=p#m 40.0 byte 20 /存放要发送的数据的存放要发送的数据的2号地址区域号地址区域 sd_3 :=id0 /用本站的用本站的id0字节控制通讯伙伴的字节控制通讯伙伴的qd0 sd_4 := call urcv , db9 /sfb9 en_r :=m0.0 /为为1时接收时接收 id :=
44、w#16#1 /s7连接连接id号号 r_id :=dw#16#2 /发送与接收请求号,用于区分同一连接中不同的发送与接收请求号,用于区分同一连接中不同的sfb/fb调用,发送调用,发送 方方 与接收方的与接收方的r_id应相同。应相同。 ndr :=m0.1 /任务被正确执行为任务被正确执行为1 error :=m0.2 /错误标记位,错误标记位,1为出错为出错 status:=mw2 /状态字状态字 rd_1 :=p#db2.dbx0.0 byte 20 /存放接收的数据的存放接收的数据的1号地址区域号地址区域 rd_2 :=p#m 20.0 byte 20 /存放接收的数据的存放接收的数
45、据的1号地址区域号地址区域 rd_3 :=qd0 /用通讯伙伴的用通讯伙伴的id0控制本站的控制本站的qd0 rd_4 := 站点站点3的程序基的程序基 本相同本相同 date: 2021-5-13 bsend/brcv的的s7通讯通讯 使用使用bsend/brcv,可以进行快速的、可靠的数据传送。,可以进行快速的、可靠的数据传送。 l id 0 t db1.dbd 2 /用本站的用本站的id0控制通讯伙伴的控制通讯伙伴的qd0 call bsend , db12 /sfb12 req :=m8.0 /100ms时钟脉冲上升沿时发送时钟脉冲上升沿时发送 r :=m10.1 /上升沿时中断正在进
46、行的数据交换上升沿时中断正在进行的数据交换 id :=w#16#1 /s7连接连接id号号 r_id :=dw#16#1 /发送与请求号发送与请求号 done :=m10.2 /任务正确执行为任务正确执行为1 error :=m10.3 /错误标记位错误标记位 status:=mw12 /状态字状态字 sd_1 :=p#db1.dbx0.0 byte 200 /存放要发送的数据的地址区域存放要发送的数据的地址区域 len :=mw14 /要发送的数据字节数要发送的数据字节数200 call brcv , db13 /sfb13 en_r :=m0.0 /为为1时接收时接收 id :=w#16#
47、1 /s7连接连接id号号 r_id :=dw#16#2 /发送与请求号发送与请求号 ndr :=m0.1 /任务正确执行为任务正确执行为1 error :=m0.2 /错误标记位错误标记位 status:=mw2 /状态字状态字 rd_1 :=p#db2.dbx0.0 byte 200 /存放接收的数据的地址区域存放接收的数据的地址区域 len :=mw4 /已经接收的数据字节数已经接收的数据字节数 l db2.dbd 2 t qd 0 /用对方的用对方的id0控制本站的控制本站的qd0 站点站点3的程序基的程序基 本相同本相同 pb_s7_c例程例程 date: 2021-5-13 s7通
48、讯双向编程的练习通讯双向编程的练习 要求进行快速、可靠的数据传输,站点要求进行快速、可靠的数据传输,站点cpu413-2dp分别为分别为2号站点和号站点和3号站点。号站点。 任务:建立组态,通过调用程序块实现通讯。任务:建立组态,通过调用程序块实现通讯。 2号站点的数据号站点的数据db1.dbx0.0开始的开始的10个字节,发送到个字节,发送到3号站点的数据块号站点的数据块db2,从,从dbb0开始存储。开始存储。 date: 2021-5-13 通过通过s7连接控制和监视远程连接控制和监视远程plc的运行模式的运行模式 调用sfb19 “start”使远程设备热启动或冷启动,如果在sfb 1
49、9start的控制输入req上有上升 沿,则这将激活由id寻址的远程设备上的暖启动或冷启动。 远程plc必须满足条件:cpu必须处于stop模式;cpu的钥匙开关必须设置为“run”或“run-p”。 一旦完成暖启动或冷启动,设备切换到run模式,并发送一个肯定执行应答。接收到肯定应答之后, 状态参数done置位为1,如果发生任何错误,则通过状态参数error和status来指示这些出错。 调用sfb20”stop”将远程设备切换到stop模式 如果在sfb 20“stop”的控制输入req上有上升沿,则将由id寻址的远程设备切换到stop模式。当设 备处于run、hold或startup模式
50、时,可以进行模式切换。 pi_name 参数指向存储要启动的程序的名称(ascii代码)的存储区域。此名称所包含的字符不能超过 32个。 对于s7 plc,名称必须是p_program。 io_state参数,如果通讯伙伴是s7可编程控制器,则不给这个参数分配任何数值。 sfb19-sfb23可以用于mpi、profibus-dp、工业以太网的远程站点监控。 pb_ctrl例程例程 date: 2021-5-13 远程将设备切换到远程将设备切换到run/stop 将远程设备切换到将远程设备切换到run模式模式 call “start” , db19 /调用调用sfb19 req :=m20.6
51、 /请求通讯,上升沿时激活请求通讯,上升沿时激活sfb id :=w#16#1 /s7连接号连接号 done :=db1.dbx10.1 /操作正确完成后为操作正确完成后为1 error :=db1.dbx10.2 /错误标志错误标志 status :=db1.dbw14 /状态字状态字 pi_name :=data.pi_name /字符串字符串p_program arg := /未设置该参数为热启动,分配未设置该参数为热启动,分配c为冷启动为冷启动 io_state:= /s7 plc未使用此参数未使用此参数 将远程设备切换到将远程设备切换到stop模式模式 call stop , db2
52、0 /调用调用sfb20 req :=m20.7 /请求通讯,上升沿时激活请求通讯,上升沿时激活sfb id :=w#16#1 /s7连接号连接号 done :=db1.dbx17.1 /操作正确完成后为操作正确完成后为1 error :=db1.dbx17.2 /错误标志错误标志 status :=db1.dbw20 /状态字状态字 pi_name :=data.pi_name /字符串字符串p_program io_state:= /s7 plc未使用此参数未使用此参数 ob100 l p_ t data.pi_name1 l pr t data.pi_name2 l og t data.
53、pi_name3 l ra t data.pi_name4 l m t data.pi_name5 date: 2021-5-13 查询远程伙伴的状态查询远程伙伴的状态/接收操作模式变换信息接收操作模式变换信息 查询远程伙伴的状态查询远程伙伴的状态 call “status” , db22 /调用调用sfb22 req :=m21.1 /通讯请求,上升沿激活通讯请求,上升沿激活sfb id :=w#16#1 /s7连接号连接号 ndr :=db1.dbx30.1 /操作正确完成后为操作正确完成后为1 error :=db1.dbx30.2 /错误标志错误标志 status:=db1.dbw32
54、 /状态字状态字 phys :=db1.dbb34 /物理状态,物理状态,10h为正在执行功能,为正在执行功能,13h为服务请求为服务请求 log :=db1.dbb36 /逻辑状态,逻辑状态,00h为允许状态改变为允许状态改变 local :=db1.dbw38 /第一个字节是通讯伙伴的当前状态第一个字节是通讯伙伴的当前状态 接收远程设备的状态变化接收远程设备的状态变化 call ustatus , db23 /调用调用sfb23 en_r :=m21.2 /为为1时,准备接收控制参数时,准备接收控制参数 id :=w#16#1 /s7连接号连接号 ndr :=db1.dbx40.1 /操作
55、正确完成后为操作正确完成后为1 error :=db1.dbx40.2 /错误标志错误标志 status:=db1.dbw42 /状态字状态字 phys :=db1.dbb44 /物理状态,物理状态,10h为正在执行功能,为正在执行功能,13h为服务请求为服务请求 log :=db1.dbb46 /逻辑状态,逻辑状态,00h为允许状态改变为允许状态改变 local :=db1.dbw48 /第一个字节是通讯伙伴的当前状态第一个字节是通讯伙伴的当前状态 local 工作模式工作模式相应标识符相应标识符 stop00h 热启动热启动01h run02h 热启动热启动03h 工作模式工作模式相应标识
56、符相应标识符 hold04h 冷启动冷启动06h run_r09h link-up0bh update0ch date: 2021-5-13 同一同一dp主站系统的主站系统的fdl通讯组态通讯组态 fdl是profibus的第2层现场总线数据链路层,用于实现profibus主站之间的通讯,是由硬件 发起、安全系数非常高的发送/接收双向通讯。只有profibus通讯处理器cp(cp342-5, cp343-5, cp443-5)才支持fdl的数据通讯。fdl通讯传输速度快,数据量小(240b)。 cp可以同时与多个主站建立通讯连接,大多数通信处理器cp的fdl连接个数最多16个。 laddr地址
57、与地址与cp342-5槽号有关槽号有关 date: 2021-5-13 同一同一dp主站系统的主站系统的fdl通讯的编程(通讯的编程(1) s5兼容通讯的双方通过调用标准库:simatic_net_cp中的fc5 ag_send, fc6 ag_recv来实现 fdl服务,s7-300,s7-400分别使用cp300和cp400中的fc,不能混用。 fc5 ag_send用于将用户数据区域的数据传送给profibus cp,再发送出去, fc6 ag_recv用于 将profibus cp接收的数据存放到用户区域中。 call ag_send /fc 5 act :=true /发送使能位 i
58、d :=1 /连接id号 laddr :=w#16#7f8 /cp443-5 ext的起始地址 send :=p#db1.dbx0.0 byte 240 /存放要发送的数据的地址区域 len :=240 /发送数据的字节数 done :=m10.2 /每次发送成功产生一个脉冲 error :=m10.3 /错误标志位 status:=mw12 /状态字 act参数状态为1时发送数据,为了实现周期性的数据发送,act为true,若在ob1中调用fc5,则每 个扫描周期发送一次数据,这过于频繁,因此在ob35中调用,每100ms发送一次数据。 ob35中调用fc5 date: 2021-5-13
59、同一同一dp主站系统的主站系统的fdl通讯的编程(通讯的编程(2) call ag_recv /fc 6 id :=1 /连接连接id号号 laddr :=w#16#7f8 /cp443-5 ext的起始地址 recv :=p#db2.dbx0.0 byte 240 /存放接收的数据的地址区域存放接收的数据的地址区域 ndr :=m0.1 /每次发送成功产生一个脉冲 error :=m0.2 /错误标记位错误标记位 status:=mw2 /状态字状态字 len :=mw4 /接收的字节数接收的字节数 cpu300的程序大体相同的程序大体相同 fdl_1例程例程 fdl通讯 的ag_send
60、(fc5)通讯功能块出现状态 0 x8302 ;意味着接收端的通讯进程没有收到任何接 收信息。如果s7-300 或者s7-400的循环周期不同(比如,发送端的扫描周期比接收端短),ag_send (fc5)就可能发生上述状态,因为fdl通讯不包括流量控制器,这是fdl通讯的正常运行模式。 基于这一点,程序中通讯模块(ag_send或者ag_recv)的输出参数并不报告错误状态。因此也不会 有相应的响应,例如,甚至在触发动作没有终止或者忙于处理错误的时候,它将都不断的被发送。 这个动作在fc5 ag_send将显示为status=0 x8302。因此这个动作肯定会在程序中重复,要使这个 状态尽量
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度海洋平台通风排烟系统安装与防腐蚀保护合同3篇
- 2024年农用拖拉机租赁合同(含农业供应链管理)3篇
- 2024年度LED广告显示屏工程承包及广告投放合同3篇
- 2024版二零二四年度生态智慧住宅区房地产开发合同3篇
- 首付房款赠与合同范例
- 2024版XX污水厂污水处理厂运营管理合同3篇
- 2024年度厦门互联网信息服务合同2篇
- 2024年度快递业务高峰期应急预案服务合同3篇
- 淘宝自营店转让合同
- 国际水质检测委托合同范例
- 2023年冬季山东高中学业水平合格考政治试题真题(含答案)
- 文艺复兴经典名著选读智慧树知到期末考试答案章节答案2024年北京大学
- 劳务派遣劳务外包服务方案(技术方案)
- 幼儿园“一岗双责”制度
- 加油站安全设施一览表
- 优秀辅警先进事迹材料
- 广州城乡居民基本养老保险待遇申请表
- 四年级算24点比赛试卷打印版难(共8页)
- 框架涵洞施工技术总结
- 毕业设计(论文)叉车液压系统设计
- 四年级语文上册文言文阅读与理解必考题部编版
评论
0/150
提交评论