SFC15(发送)和SFC14(接收)组态步骤
- 格式:docx
- 大小:977.97 KB
- 文档页数:20
实验四:主站通过CPU集成PROFIBUS-DP接口与智能从站通信一、实验目的1、掌握主站与智能从站通信组态方法和参数设置;2、用SFC14和SFC15进行数据交换编程。
二、实验设备1、PROFIBUS-DP一个主站S7-300 CPU315-2DP2、两个智能从站CPU315-2DP3、MPI网卡CP56114、PROFIBUS总线连接器及电缆5、计算机(带STEP7软件)三、实验内容建一主站CPU315-2DP(站地址为2),两个从站CPU315-2DP(站地址分别为3和4),设置主从通信的通信接口区,使主站与各从站进行通信。
控制要求:2号主站按下启动按钮,使2号站皮带首先启动,5S后启动3号站皮带,5S后启动4号站皮带;2号主站按下停止按钮,4号站皮带立即停止,5S后3号站皮带停止,5S后2号主站皮带停止。
四、实验操作步骤1、组态3号从站(1)、新建一项目,名称为智能从站。
在此项目之下插入一个S7300的从站,双击HARDWARE,进入“HW Config”窗口。
依次插入UR、PS、CPU等模块。
(2)、新建PROFIBUS(1)网络:在放入CPU模块的同时,如下图按要求新建一PROFIBUS(1)网络。
系统为CPU300定义的在网络上的节点为3; PROFIBUS(1)网络的属性设置在“Network setting”选项卡中设置。
(3)、设置从站通信接口区双击CPU315-2DP下“DP”项,在出现的PROFIBUS-DP属性菜单中设置①、在“工作模式”选项卡中选择“DP 从站”②、在“组态”选项卡中点击“新建”,新建一个输入通信接口区,为1个字节。
2、组态4号从站插入新的一个S7-300的站,硬件和网络组态和3号站相同,但站号为4,且输入通信接口区地址为40。
3、组态2号主站(1)、在同一项目之下插入一S7-300的主站,双击HARDWARE ,进入“HW Config ”窗口 依次插入依次插入UR 、PS 、CPU 模块。
sfc14、SFC15、SFC20
在一套400和300的PROFIBUS通讯中,300中用SFC14、SFC15打包发送、接受。
400中没有用这两个,而是用SFC20处理。
这样也运行正常,是不是不用同时用SFC14、15也可以?
最佳答案
一般你在组态S7-400与S7-300之间的PROFIBUS-DP主从通信时,在组态PROFIBUS网络时,打开各自的DP属性界面,选择“Configuration”(组态)子项时,定义S7-400和S7-300主从站的通信接口区时,其中参数Consistence“(持续性)中可以选择Unit(单元)定义按字节或字发送,如果定义为”All“(所有)表示打包发送,每包最多32个字节,如果通信数据字节为3字节或大于4字节时,要调用SFC15给数据打包,调用SFC14给数据解包。
可以分别在OB1中编写S7-400和S7-300的通信程序,同时调用SFC14和SFC15,建立主站-从站通信数据区对应关系。
由于赋值指令MOVE只能复制字节、字或双字数据对象,而SFC20(BLKMOVE)是当用户自定义数据类型(如数组或结构)时复制数据,所有可以在S7-400PLC中调用它作为复制复杂的数据类型。
SFC15和SFC14组态步骤
一、准备方案:
1.确定控制对象,确定发送参数和接收参数。
2.根据SFC15的功能,选择合适的组态工具,明确步骤和层次结构。
3.明确发送端和接收端的I/O点,确定PLC节点地址或IP地址,分配合理的系统参数变量,布置合理的控制路径。
二、PLC组态:
1.创建“SFC15”程序块,定义相关的层次结构,设置发送参数和接收参数;
2.创建发送端I/O点,连接到SFC15程序块,并且设置相应的参数,如消息号,消息总长度等;
3.设置PLC节点地址或IP地址,并设置系统参数变量;
4.定义控制路径,将控制路径连接到SFC15程序块,使其能够正常工作;
三、编写程序:
1.打开编程软件,编写SFC15发送程序,将编程结果上传到PLC中;
2.在程序中定义相应的发送函数,以及发送参数,将发送参数与PLC 相连;
3.将控制路径和控制函数连接到SFC15程序块;
4.根据实际情况,编写相应的模块函数,组合成控制参数,以便达到发送的目的。
四、测试调试:
1.将发送程序上传到PLC,并确认程序正常运行;
2.进行在线调试,检查发送参数是否设置正确;
3.根据实际情况。
PROFIBUS教程(十三)——系统功能SFC14与SFC15关键字:PROFIBUS SFC14SFC15 教程PROFIBUS教程在STEP7中的I/O存取命令不允许用单字节、单字或双字命令去存取具有3个或大于4字节的相连续的DP数据区域(模块)。
为了存取这种封闭结构的相连续的数据区域,使用系统功能DPRD_DAT和DPWR_DAT。
一、系统功能SFC14 DPRD_DAT为了读一个DP从站的相连续的输入数据区域,使用系统功能SFC14 DPR D_DAT,每个读存取涉及一个专用输入模块。
如果一个DP从站有若干个相连续的输入模块,则必须为所要读的每个输入模块分别安排一个SFC14调用。
表1列出了你必须定义的SFC14的输入和输出参数。
表1 SFC14 DPRD_DAT的参数参数描述RECORD参数RECORD描述在S7 CPU上用于从DP从站读取的相连续输入数据的目的区域。
在这里你定义的长度必须与用HW Config程序为DP从站的输入模块所定义的长度相一致。
请注意,RECORD参数属于数据类型ANY-Pointer。
对于ANY-Pointer只允许的数据类型是BYPE。
RET_VAL表2 中指出了系统功能SFC14的参数RET_VAL的出错代码。
表2 SFC14 DPRD_DAT的参数RET_VAL返回值二、系统功能SFC15 DPWR_DAT从S7 CPU传送一个连续的输出数据到DP从站,使用系统功能SFC15 DP WR_DAT。
每个写存取涉及一个专用的输出模块。
如果DP从站有若干个连续的数据输出模块,则对每个要写入的输出模块必须分别安排一个SFC15调用。
表3指出了必须定义的SFC15的输入和输出参数。
表3 SFC15 DPWR_DAT的参数参数描述RECORD参数RECORD描述要从S7 CPU写入DP从站的连续的输出数据的源区域。
在这里指定的长度必须与用HW Confi组态的DP从站的输出模块的长度相一致。
PROFIBUS教程(十三)——系统功能SFC14与SFC15▪作者:PLC-CNC发表于:现场总线回复QQ留言收藏此帖发表日期:2010-06-0318:14▪关键字:PROFIBUS SFC14 SFC15 教程PROFIBUS教程在STEP7中的I/O存取命令不允许用单字节、单字或双字命令去存取具有3个或大于4字节的相连续的DP数据区域(模块)。
为了存取这种封闭结构的相连续的数据区域,使用系统功能DPRD_DAT和DPWR_DAT。
一、系统功能SFC14 DPRD_DAT为了读一个DP从站的相连续的输入数据区域,使用系统功能SFC14 DPR D_DAT,每个读存取涉及一个专用输入模块。
如果一个DP从站有若干个相连续的输入模块,则必须为所要读的每个输入模块分别安排一个SFC14调用。
表1列出了你必须定义的SFC14的输入和输出参数。
表1 SFC14 DPRD_DAT的参数参数描述RECORD参数RECORD描述在S7 CPU上用于从DP从站读取的相连续输入数据的目的区域。
在这里你定义的长度必须与用HW Config程序为DP从站的输入模块所定义的长度相一致。
请注意,RECORD参数属于数据类型ANY-Pointer。
对于ANY-Pointer只允许的数据类型是BYPE。
RET_VAL表2 中指出了系统功能SFC14的参数RET_VAL的出错代码。
表2 SFC14 DPRD_DAT的参数RET_VAL返回值二、系统功能SFC15 DPWR_DAT从S7 CPU传送一个连续的输出数据到DP从站,使用系统功能SFC15 DP WR_DAT。
每个写存取涉及一个专用的输出模块。
如果DP从站有若干个连续的数据输出模块,则对每个要写入的输出模块必须分别安排一个SFC15调用。
表3指出了必须定义的SFC15的输入和输出参数。
表3 SFC15 DPWR_DAT的参数参数描述RECORD参数RECORD描述要从S7 CPU写入DP从站的连续的输出数据的源区域。
PROFIBUS教程(十三)——系统功能SFC14与SFC15▪作者:PLC-CNC发表于:现场总线回复QQ留言收藏此帖发表日期:2010-06-0318:14▪关键字:PROFIBUS SFC14 SFC15 教程PROFIBUS教程在STEP7中的I/O存取命令不允许用单字节、单字或双字命令去存取具有3个或大于4字节的相连续的DP数据区域(模块)。
为了存取这种封闭结构的相连续的数据区域,使用系统功能DPRD_DAT和DPWR_DAT。
一、系统功能SFC14 DPRD_DAT为了读一个DP从站的相连续的输入数据区域,使用系统功能SFC14 DPR D_DAT,每个读存取涉及一个专用输入模块。
如果一个DP从站有若干个相连续的输入模块,则必须为所要读的每个输入模块分别安排一个SFC14调用。
表1列出了你必须定义的SFC14的输入和输出参数。
表1 SFC14 DPRD_DAT的参数参数描述RECORD参数RECORD描述在S7 CPU上用于从DP从站读取的相连续输入数据的目的区域。
在这里你定义的长度必须与用HW Config程序为DP从站的输入模块所定义的长度相一致。
请注意,RECORD参数属于数据类型ANY-Pointer。
对于ANY-Pointer只允许的数据类型是BYPE。
RET_VAL表2 中指出了系统功能SFC14的参数RET_VAL的出错代码。
表2 SFC14 DPRD_DAT的参数RET_VAL返回值二、系统功能SFC15 DPWR_DAT从S7 CPU传送一个连续的输出数据到DP从站,使用系统功能SFC15 DP WR_DAT。
每个写存取涉及一个专用的输出模块。
如果DP从站有若干个连续的数据输出模块,则对每个要写入的输出模块必须分别安排一个SFC15调用。
表3指出了必须定义的SFC15的输入和输出参数。
表3 SFC15 DPWR_DAT的参数参数描述RECORD参数RECORD描述要从S7 CPU写入DP从站的连续的输出数据的源区域。
在STEP7中的I/O存取命令不允许用单字节、单字或双字命令去存取具有3个或大于4字节的相连续的DP数据区域(模块)。
为了存取这种封闭结构的相连续的数据区域,使用系统功能DPRD_DAT和DPWR_DAT。
一、系统功能SFC14 DPRD_DAT为了读一个DP从站的相连续的输入数据区域,使用系统功能SFC14 DPRD_DAT,每个读存取涉及一个专用输入模块。
如果一个DP从站有若干个相连续的输入模块,则必须为所要读的每个输入模块分别安排一个SFC14调用。
表1列出了你必须定义的SFC14的输入和输出参数参数描述RECORD参数RECORD描述在S7 CPU上用于从DP从站读取的相连续输入数据的目的区域。
在这里你定义的长度必须与用HW Config程序为DP从站的输入模块所定义的长度相一致。
请注意,RECORD参数属于数据类型ANY-Pointer。
对于ANY-Pointer只允许的数据类型是BYTE。
RET_VAL.表2 中指出了系统功能SFC14的参数RET_VAL的出错代码。
二、系统功能SFC15 DPWR_DAT从S7 CPU传送一个连续的输出数据到DP从站,使用系统功能SFC15 DPWR_DAT。
每个写存取涉及一个专用的输出模块。
如果DP从站有若干个连续的数据输出模块,则对每个要写入的输出模块必须分别安排一个SFC15调用。
表3指出了必须定义的SFC15的输入和输出参数。
RECORD参数RECORD描述要从S7 CPU写入DP从站的连续的输出数据的源区域。
在这里指定的长度必须与用HW Confi组态的DP从站的输出模块的长度相一致。
请注意,参数RECORD属于数据类型ANY-Pointer,对于ANY-Pointer只允许是数据类型BYTE。
RET_VAL表4中列出了SFC15的参数RET_VAL出错代码。
三、用I/O存取命令的数据通信SIMATIC S7系统的CPU通过用STEP7程序编写的专用的I/O存取命令来寻址分散外围设备模块的I/O数据。
在 S7-SCL 中如何进行 SFC14 和 SFC15 ANY 参数的编程?使用说明操作指南:在 S7-SCL 和 LAD/FBD/STL 编辑器中,要在 UDT 或 DB 中声明一个 ANY 数据类型的变量是不可能的,因为 ANY 变量是一个参数类型。
但是,可以声明 ANY 变量是一个临时变量。
当调用 SFC14 或 SFC15 时,应确保通过 ANY 变量“记录”被参数化的用户数据区的长度必须与HW Config 中的模块组态中的用户数据区长度相同(例如 3 字节。
这就是为什么建议要在 STL 中调用这些块,目的是可以定义 ANY 指针到精确的字节上(例如 DB100.DBX0.0 BYTE 3。
如果在符号编程过程中,在 SCL 或LAD/FBD/STL中,传送 STRUCT 或 ARRAY 到 ANY 类型的块参数时,编译器传送适当的 ANY 指针。
如果直接调用 SFC14 或 SFC15 并通过“STRUCT”或“ARRAY”类型的变量用符号提供“记录”参数,若从站组态的字节数是奇数,则 SFC14/15 报告错误代码 80B1。
这个动作的原因是 STEP 7 中的 STRUCT 与 ARRAY 总是按字的边界储存在存储器中,所以总是传输的是偶数长度。
如果在 S7-SCL 中调用 SFC14 或 SFC15 并要动态地提供 ANY 指针,建议在SCL “变量区域声明视图”中使用“AT” 结构。
图. 01程序描述"CALL_SFC14_15" 功能块提供了 SFC14读取和SFC15写一致性的数据到一个标准的从站。
数据被储存在"DB_Number"所指的DB块中"DB_Byte_Addr"所指的地址开始的地址区中。
字节的长度(“BYTE_COUNT” 一定要与 STEP 7 组态所选模块的长度相同。
如果 "SFC15_Select"参数的状态指示未 "1" (True, 用SFC15传输数据到从站,若指示为 "0" (False, 用SFC14从从站读取数据。
系统功能SFC14和SFC15在STEP7中的I/O存取命令不允许⽤单字节、单字或双字命令去存取具有3个或⼤于4字节的相连续的DP数据区域(模块)。
为了存取这种封闭结构的相连续的数据区域,使⽤系统功能DPRD_DAT和DPWR_DAT。
⼀、系统功能SFC14 DPRD_DAT为了读⼀个DP从站的相连续的输⼊数据区域,使⽤系统功能SFC14 DPRD_DAT,每个读存取涉及⼀个专⽤输⼊模块。
如果⼀个DP从站有若⼲个相连续的输⼊模块,则必须为所要读的每个输⼊模块分别安排⼀个SFC14调⽤。
表1列出了你必须定义的SFC14的输⼊和输出参数参数描述RECORD参数RECORD描述在S7 CPU上⽤于从DP从站读取的相连续输⼊数据的⽬的区域。
在这⾥你定义的长度必须与⽤HW Config 程序为DP从站的输⼊模块所定义的长度相⼀致。
请注意,RECORD参数属于数据类型ANY-Pointer。
对于ANY-Pointer只允许的数据类型是BYTE。
RET_VAL.表2 中指出了系统功能SFC14的参数RET_VAL的出错代码。
⼆、系统功能SFC15 DPWR_DAT从S7 CPU传送⼀个连续的输出数据到DP从站,使⽤系统功能SFC15 DPWR_DAT。
每个写存取涉及⼀个专⽤的输出模块。
如果DP从站有若⼲个连续的数据输出模块,则对每个要写⼊的输出模块必须分别安排⼀个SFC15调⽤。
表3指出了必须定义的SFC15的输⼊和输出参数。
RECORD参数RECORD描述要从S7 CPU写⼊DP从站的连续的输出数据的源区域。
在这⾥指定的长度必须与⽤HW Confi组态的DP从站的输出模块的长度相⼀致。
请注意,参数RECORD属于数据类型ANY-Pointer,对于ANY-Pointer只允许是数据类型BYTE。
RET_VAL表4中列出了SFC15的参数RET_VAL出错代码。
三、⽤I/O存取命令的数据通信SIMATIC S7系统的CPU通过⽤STEP7程序编写的专⽤的I/O存取命令来寻址分散外围设备模块的I/O数据。
打包式发送与接收主要用到SFC15(打包发送)和SFC14(打包接收)。
本例以S7-400 为主站,S7-300 为从站为例来说明打包式发送和接收的组态步骤。
先组态从站S7-300。
1、新建项目“打包式发送与接收例”,插入S7-300 站点。
2、双击“硬件”进入“HW Config”(硬件组态)环境,组态S7-300的硬件(先放入导轨,再放入电源模块,最后放入CPU 模块)。
在放入CPU 模块时,会出现“属性-RPOFIBUS 接口DP”对话框(设置CPU的地址及通信波特率),可以先点击“取消”以后再设置。
3 、双槽架中的DP 项,弹出“ 属性-DP ” 对话框。
4、,点击“常规”标签中的“属性…”按钮,出现“属性-Profibus接口”对话框,设置从站的地址。
双击进入下一步
5、点击“新建…”,出现“属性-新建子网PROFIBUS”对话框,设置传输传输的波特率及配置文件(DP)。
6、点击两次“确定”,重新回到第三步的画面。
点击“工作模式”标签,选择为“DP 从站”模式。
设置从站的地址
7、点击“组态”标签,进行通信接口数据区的组态。
8、点击“新建…”按钮,先组态输入数据区。
9、点击第7 步中的“新建…”,组态输出数据区域。
地址类型选择输入一致性选择全部以上选择完后点击确定
10、从站S7-300 发送和接收数据区组态完后如下图所示:
地址类型选择输出,一致性选择全部,以上选择完后后确定
从站组态完毕,再组态主站。
11、和组态从站一样,先组态主站S7-400 的硬件。
12、在组态CPU 模块时,会自动弹出“属性-PROFIBUS 接口”,点击子网中已有的PROFIBUS(1),再点击“属性…”,设置通讯参数(波特率和配置文件)。
13、从站S7-300 挂于主站网络中。
14、从站挂于主站网络后,会自动弹出“DP 从站属性”窗口,点击“连接”标签,已经组态的所有未连接的从站显示在列表中。
鼠标按住此处,拖至PROFIBUS 图标,已经组态的从站(未连接)
15、选中要连接的从站,再点击“连接”按钮,显示连接完成后的状态信息。
16、点击“组态”标签,组态主站的数据接收和发送区。
连接状态信息
17、选中第一行,点击“编辑...”按钮,组态主站的数据发送区。
组态完后,点击“确定”。
18、同样,选中第16 步中的第二行,组态主站输入数据区的地址。
组态完的结果如下。
和从站地址类型相对应,选为输出
和从站一样
至此,主站和从站的数据接收和发送区已经组态完毕,其对应关系如下:
主站从站
QB0~QB4 IB0~IB4
IB0~IB6 QB0~QB6
在从站中编写的程序范例如下:
主站的输出和
输入数据区(上
输出下输入)
从站的输出和
输入数据区(上
输入下输出)
主站中编写的程序范例如下:
符号说明:
LADDR 组态数据区的首地址(必须以十六进制格式输入地址) RET_VAL
如果在激活功能期间出现错误,则返回值将包含一个错
误代码。
RECORD
已读取的用户数据的目标区域。
必须与用STEP 7 为选定
模块配置的长度完全相同。