系统功能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
parameter数据类型表4中列出了SFC15的参数RET_VAL出错代码。
三、⽤I/O存取命令的数据通信
SIMATIC S7系统的CPU通过⽤STEP7程序编写的专⽤的I/O存取命令来寻址分散外围设备模块的I/O数据。这些命令直接调⽤
I/O存取或通过过程映象调⽤I/O存取。⽤于读和写分散I/O信息的数据格式可以是字节、字或双字。图1解释⽤不同数据格式与DP从站的I/O通信。
然⽽,有些DP从站模块有更复杂的数据结构。它们的输⼊和输出数据区域有3个字节或⼤于4个字节的长度。这些数据区域也称谓连续的I/O数据区域。在使⽤连续的数据区域的DP从站的参数集中,参数“Consistency”必须设置为
对于连续的数据,输⼊和输出数据不能通过过程映象来传送,也不能⽤通常的I/O存取命令来调⽤数据
交换。原因在于对DP主站上的输⼊/输出数据的CPU 更新循环。DP输⼊/输出数据的更新只能由DP主站与DP从站间的循环数据交换(总线循环)⽽确定(见图2)。因此,从DP主站来的数据或到DP主站的数据可能已经在寻址的DP从站I/O数据的⼀条STEP7存取指令与下⼀条I/O存取指令之间被更改了。由于这个缘故,仅对⽤户程序⽤字节、字或双字命令⽆任何中断地编址的I/O结构和区域才能保证数据的连续性。
必须控制复杂功能的DP从站,如闭环控制器或电⽓驱动等,它们通常不能⽤简单的数据结构来完成这
些任务。这些DP从站需要更⼤的输⼊和输出区域,⽽且在这些I/O区域中的信息常常是相连不可分割的。因此,它们不能⽤字节、字和双字的结构来存贮。这样的数据区域称之为“连续的”。在⼀个输⼊/输出模块内,⽤组态报⽂可以指定长度可达64字节或字(128字节)的数据区域。为了对这些相关的模块读或写信息,必须使⽤DP从站的连续的输⼊/输出数据区域和特殊的功能。在SIMATI S7中,系统功能SFC14 DPRD_DAT和SFC15 DPWR_DAT 是为此⽬的保留的。
图3指出系统功能SFC14和SFC15的⼯作原理。SFC的参数LADDR是⼀个指针,它指向要读出的输⼊数据区域或指向要写⼊的输出数据区域。在SFC参数中,所指定的DP从站的输⼊或输出模块的起始地址必须与早先⽤HW Config程序组态时规定的地址相同,⽽且这些地址⽤⼗六进制数表⽰。
四、⽤SFC14 DPRD_DAT和SFC15 DPWR_DAT交换连续的数据
下⾯的实例项⽬解释SFC14和SFC15的使⽤。实例中所使⽤的硬件与前⾯教程⼗的描述相同(S7-300/CPU315-2 DP作为I-从站),但此项⽬限于⼀个S7 DP 主站(S7-400)和⼀个I-从站(S7-300)。因此,必须去掉在前⾯实例中已组态的ET200B和ET200M节点。
⽤合适的PROFIBUS电缆将S7-300的DP接⼝与S7-400控制器彼此连接,并接通设备的电源。此项⽬基于假定两个可编程控制器均已复位,即它们的⼯作内存、装载内存和系统内存均被完全清零。两个PLC都处在RUN状态(开关位置RUN-P)。
I- 从站的两个连续的输⼊/输出数据区域每个都有10字节长,且参数“Consistency”设置为“All”。这就是说,在I-从站上和DP主站的输⼊/输出数据通信必须使⽤系统功能SFC14和SFC15。
⽤于I-从站(带CPU315-2 DP的S7-300)的⽤户程序
本实例项⽬中的I-从站具有⼤于4字节的连续的输⼊/输出区域。因此,正如使⽤S7 DP主站⼀样,必须使⽤系统功能SFC14和SFC15来传送I/O数据。切记,由DP主站⽤SFC15发送的输出数据被I-从站⽤SFC14来读出并作为其输⼊数据,反之也适⽤于从I-从站来的作为DP主站的输⼊数据。图4对此作了解释。
SIMATIC S7-300控制器的CPU不识别编址错误。因此,对于CPU315-2 DP,可以将⽤SFC发送的I/O数据放在另外的未被占⽤的过程映象区域中,例如可以⽤IB100~IB109和QB100~QB109。因此在⽤户程序中,就可以⽤简单的位、字节、字和双字指令来编址这个数据。
现在,让我们来⽣成⽤于I-从站所需的⽤户程序。
在SIMATIC Manager中,打开项⽬S7-PROFIBUS-DP,双击⽂件夹SIMATIC 300,再通过⽂件夹CPU315-2DP和S7-Program 进⼊Blocks⽂件夹(图5)。
双击Blocks⽂件打开它,由HW Config⽣成的组织块OB1和系统数据块(SDBs)已经设置在此⽂件夹中。注意,必须节省并符合HW Config中配置的硬件,否则HW Config不能⽣成系统数据,此时将看到⽆系统数据⽂件夹。
·双击OB1打开它,⾃动打开STEP7程序LAD/STL/FBD。⽤STL视图为OB1
编程。
·在程序编辑器中,键⼊命令“CALL SFC14”,并⽤RETURN键确认。SF14 DPRD_DAT显⽰出输⼊和输出参数。如图6所⽰定义这些输⼊和输出参数。输⼊
装载和发送指令,然后调⽤SFC15,再为此系统功能定义输⼊和输出参数。当这两个SFC被调⽤时,⽤于这些标准功能的相关块的外形就⾃动地从STEP7标准库(…\SIE-MENS\STEP7\S7Libs\STDLIB30)中拷贝给命名为Blocks的⽂件夹。" _/
图5 带有打开的Blocks⽂件夹的SIMATIC Manager
图6 带OB1(⽤于CPU315-2 DP的实例程序)的STEP7中的STL
程序编辑器
·为了能容易地监视DP主站上的数据通信,⽤适当的装载和传送指令(见图6)将所接收的第1个数据字节(IB100)转送到要被发送的第1个数据字节(QB100)。此后,将拷贝来⾃I-从站输⼊数据区域的由DP主站发送的第1个数据字节⽴刻返回到I-从站的输出数据区域,然后返回DP主站。
·⽤Save保留OB1,并关闭⽤于OB1的程序编辑器(在本例中,即STL编辑器)。在Windows 95/NT的⼯具条中,转换到SIMATIC Manager。现在,这Blocks⽂
件夹应包含块对象System data、OB1、SFC14和SFC15。
当DP主站改变它的运⾏模式或崩溃时,操作系统通过调⽤I-从站上的某个OB作出反应。如果在I-从站上这些OB丢失,则CPU ⽴即⾃动地切换到STOP。
因此,下⼀步是在I-从站上建⽴相关的出错OB,以防⽌CPU在此情况下进⼊STOP。·当DP主站的CPU从RUN转换到STOP
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论