与使用技巧相关问题
1.1问题:如何使用背景数据块内部的步数信息
问题:如何使用背景数据块内部的步数信息?
解答:顺控器中的每一步都会在S7-GRAPH FB 的背景数据块中生成一个结构数据,步的信息被记录在此结构当中,此结构的内部数据可以通过符号名的方式进行访问,结构体中数据区的索引为步的号码,用户不要去修改此数值。
· G7S[1].X 用于显示步是否被激活
· G7S[1].SNO 用于显示用户步数
例如当步 1 被激活时,可以通过如下指令访问步1 的信息:
A FB2.G7S [1].X
= M0.0 //M0.0 存储当前步 1 是否激活的状态
L FB2.G7S [1].SNO
T MW2 //MW2 储存当前激活步的序号
在菜单命令"Options > Block settings > Compile/Save"中,激活“Structure arrays”选项,如果此选项被激活,结构体将包含步的数组,并在存盘和编译后生 成。
· 数据区名称:G7S
· 字节长度:(步的数量) * 32
1.2问题:如何使用背景数据块内部的转换条件的信息
问题:如何使用背景数据块内部的转换条件的信息?
解答:在背景数据块中每个转换条件的信息都存储在一个结构当中。这一结构包括含转换条件的参数“TV”,“TT”和“TS”。只要相关步骤活动,这一转换条件传输数据就是当前的。
· TV:转换条件有效(类型:BOOL)
· TT:转换条件为真(类型:BOOL)
· TS:转换条件切换(类型:BOOL)。
内部访问此结构(在S7-GRAPH FB 内部)或从STEP 7 块(LAD/STL/FBD 编辑器)进行外部访问格式如下:
· T002.TT
内部访问是通过转换条件编号及紧跟的结构单元名称进行的。
· G7T [2].TT
外部访问是通过转换条件编号及紧跟的结构单元名称进行的。
其它信息请参考问题:如何使用背景数据块内部的步数信息的解答。
1.3问题:如何在自动模式中重新激活上次的活动步
问题:在从手动模式切换到自动模式后,如何在自动模式中重新激活上次的活动步?
解答:顺控器的状态被保存在其分配的背景数据块中,通过对背景数据块的处理,可以实现以上要求。
1. 当前激活的步被存储于背景数据块的域(ARRAY) “SAX”中。为了保存当前激活的步的信息,必须在设置顺控器为手动模式前保存该数组。可以使用系统功能SFC 20“BLKMOV ”来完成此功能
CALL "BLKMOV" //在DB2 变量中标记SAX field 并保存_SAX ARRAY[1..50]
SRCBLK :="MY_DB1".SAX
RET_VAL:=MW66
DSTBLK :="MY_DB2".Save_SAX
2. 如果要重新激活保存的步,那么应当先将顺控器中所有的步去激活(deactive)。然后使用系统功能SFC 20 把刚才保存的数据复制到背景数据块的“SONX”区域。
CALL "BLKMOV" //复位标记步骤
SRCBLK: ="MY_DB2".Save_SAX
RET_VAL:=MW66
DSTBLK: ="MY_DB1".SONX
3. 在重新激活之前,使用“OFF_SQ”信号来停止依然活动的所有步。在保存活动步和随后的再激活之间的时间内不必对顺控器作任何改变。
注意:复制之后,原来的步就会被立即激活。
实例数据块中数组“SAX”和“SONX”的长度取决于顺控器的结构(并行步)。用于保存“SAX”域的数组必须足够大。
注意事项:当改变操作模式从自动到手动并且再次回到自动时,如果顺控器没有改变,那么顺控器会自动同步到先前的活动步。
1.4问题:如何实现忽略监控干扰而实现顺控器到下一步的转换
问题:如何实现忽略监控干扰(Supervision Disturbance)而实现顺控器到下一步的转换?
解答: 如果在S7-GRAPH 的操作中发生一个监控干扰( Supervision Disturbance ), 即Supervision=TRUE。那么该监控干扰必须通过输入参数“ACK_EF”确认。确认后顺控器才会继续运行。下表解释了使用或不使用参数“ACK_EF”进行确认的要求。
在S7-GRAPH 菜单中 “Options > Block Settings> Compile / Save>Sequencer Properties”,确定启用 “Acknowledge errors” 功能。
但是,如果已经为“FB Parameters”启用了选项“Minimum”就不能选择该功能。因此应首先为“FB Parameters”启用“Standard”,“Maximum”或“User-defined”
如果不使用以上的方法,在下面的例子程序中,也可以通过程序逻辑屏蔽Supervision 信号实现同样的功能。
程序分析:
当M1.7=1 时,并且 M1.0 和M1.2 也为“1”,此时,步可以向下一步转换,而监控干扰(Supervision Disturbance)条件不满足。然而请注意在该程序中,必须禁用“Acknowledge errors”功能。
1.5 如何确定S7-GRAPH顺控器的故障步
问题:如何确定S7-GRAPH 顺控器的故障步?
解答:S7-GRAPH 顺控器的FB 参数存储于实例DB 中,而且FB 参数的存储器要求取决于已经在 表“Compile / Save”的菜单“Options > Block Settings”中的设置。这里设置“FB Parameters”为“User-defined (V5.x)”。
在对S7-GRAPH 顺控器进行编译和保存后,就拥有了Zui大的参数集可用于在块(FB, FC or OB1)中调用S7-GRAPH FB。现在,就可以通过一些参数来确定顺控器的状态或故障步。
输出参数:
· S_NO:显示步编号
· S_MORE:可在S_NO 中显示更多的活动步
· S_ACTIVE:显示步为活动
· SEF_DISP:只显示故障步的列表
· ERROR:任意步中的互锁错误
· FAULT:任意步中的监控错误
输出参数:
· DISP_SEF:只显示故障步
1.6 问题:为什么同时满足转换条件和监控的条件时,转换条件会切换到下一步
问题:为什么同时满足转换条件和监控的条件时,转换条件会切换到下一步?
解答:在S7-GRAPH 当中,对监控条件(Supervision)的描述如下:
· 如果监控条件(Supervision)满足,则事件 V1 发生,顺控器不再转换的下一步,当前步保持激活,步的激活时间 Si.U 停止。
· 如果监控条件(Supervision)不满足,并且当前步向下一步的转换条件满足,顺控器将转换到下一步。
但需要注意的是:在一个周期中,首先进行的是切换过程,然后是状态中的保留处理。因而在一个周期中顺控器总是企图尽早地切换,也就是说,如果下图中的步2 中的转换和监控同时满足,则立即进行步的转换。
解决方法:使用不同的参数编程监控和接通,例如 :
· M1.2 用于监控,并且
· M1.3 用于转换条件检测
1.7 问题:为什么尽管互锁条件没有完成,在离开步的时候动作“L0 S”被执行?
问题:为什么尽管互锁条件没有完成,在离开步的时候动作“L0 S”被执行?
解答:在 S7-GRAPH 中,一个动作可以根据互锁状态信号的改变而被触发。在事件“L0 S”的情况下,此指令的操作数被置位为 1,并且一旦对于一个激活的步的互锁条件从信号状态0 改变为1时,此动作即被触发。(互锁条件到来,错误离去)。
S7-GRAPH 的一个基本规则:没有激活的一个步不能引起任何错误。因此,如果当一个无法执行的互锁条件在离开步时被置为“完成的”(错误被强制确认),则当此步离开时,“L0 S” 指令总是被执行。
1.8 问题:如何将无条件同时分支改为条件分支时不需重新输入所有受影响的步
问题:如何将无条件同时分支改为条件分支时不需重新输入所有受影响的步?
解答:首先在菜单中 选择 “View > Sequencer”,以察看整个顺控器。点击右键在弹出菜单中选择命令“Insert New Element > Alternative Branch > Open”。这就可以插入一个条件分支。
在刚创建的条件分支处插入选中的转换条件剪切的顺控器部分,并执行菜单命令“Edit > Paste”
1.9 问题:如何在第一个OB1周期中或第一次调用S7-GRAPH FB时关闭顺控器
问题:如何在第一个OB1 周期中或第一次调用S7-GRAPH FB 时关闭顺控器?
解答:通过参数OFF_SQ 外部控制顺控器FB 参数“INIT_SQ”和“OFF_SQ”可用来初始化和关闭顺控器,前提是确保在顺控器编译前以下路径下的:
“Options > Block settings... > Compile/Save > FB Parameters 下的参数“Standard”、“Maximum”或“User-defined”之中的一个已经激活。
下图显示了对S7-GRAPH FB 的调用,调用时,可将M0.0 的常闭点送至 “OFF_SQ”,这样当程序开始扫描时,“OFF_SQ”参数将收到一个上升沿,并关闭顺控器。
通过Supervision 来控制顺控器
下图显示了步1(初始步) 中将M10.3 的常闭点用于监控条件。如果M10.3 为“False”,则启动后,顺控器运行到监测步而且不会再切换。当在块设置中激活选项“Acknowledge errors”时,只需在FB 输入参数“ACK_EF”进行确认后,顺控器将被继续执行。
1.10 问题:为什么计数器比较功能产生一个错误结果
问题:为什么计数器比较功能产生一个错误结果?
解答:由于S7-GRAPH 计数值是BCD 码的格式,那么输入的比较值也必须是BCD 码的格式(3 位十进制BCD),并应当遵循下列语法格式: C#000 到C#999。
1.11 问题:为什么在顺控器中无法通过程序激活另一个步
问题:为什么在顺控器中无法通过程序激活另一个步?
解答:这是初学者经常范一个错误,S7-GRAPH 中提供了一些指令,可以在顺控器当中根据用户意图激活顺控器中的某一个步。但是务必要注意的是:在程序调转到被激活步之前,务必要增加关闭当前步的指令,否则顺控器不会执行步的切换。
1.12问题: 如何加密S7-GRAPH块
问题:如何加密S7-GRAPH 块?
解答:在STEP7 中,只有STL 源文件格式支持块保护功能,仅仅有S7-GRAPH 源文件无法实现块保
护功能。因此可以通过由S7-GRAPH 源文件生成STL 格式源文件的方式实现块保护功能。
可以按照如下步骤实现:
1. 首先将S7-GRAPH FB 备份为S7-GRAPH FB 源文件
· 打开S7-GRAPH FB,并通过“File > Generate Source File...”创建S7-GRAPH 源文件。
· 在打开的对话框中输入对象名称,例如“Source_FB”。
· 用 OK 键进行保存,生成了S7-GRAPH 源文件后,关闭S7-GRAPH FB。
2. 生成STL 格式的FB
· 在 Windows 操作系统中,通过“Start > SIMATIC> STEP 7 > LAD,STL,FBD-ProgrammingS7 Blocks”打开LAD/STL/FBD 编辑器。
· 在 LAD/STL/FBD 编辑器中,通过“File > Open”选择STEP 7 项目,打开在S7-GRAPH中创建的块(例如FB51)。
· 选择菜单中“File > Save”,此时显示信息提示:此块是在不同的编程语言中创建的,保存后则不能再用其原始创建语言(S7-GRAPH)进行编辑。点击“Yes”按钮。则在S7-GRAPH 中创建的功能块,现在已经变为STL 语言格式了。
3. 生成STL 格式的源文件
· 在 LAD/STL/FBD 编辑器中通过“File > Generate Source...”创建STL 源文件
· 在打开的对话框中输入对象名称,例如“Protect_FB”。
· 选中要为其创建STL 源文件的块(例如FB51),并将这个块移到右边的“Blocks
Selected”窗口中。
· 以 OK 确认,生成STL 源文件,关闭LAD/STL/FBD 编辑器。
4. 现在在“Sources”文件夹中有两个源文件。
· STL 源文件(Protect_FB),
· S7-GRAPH 源文件(Source_FB),
5. 生成加密的FB
· 打开STL 源文件 “Protect_FB”,并在“TITLE”下的块的声明段插入关键字
KNOW_HOW_PROTECT
· 通过“File > Save" and "File > Compile”保存并编译STL 源文件。则FB51 被加密。
- Step7-SCL 编程语言介绍 2024-11-06
- Step7-SCL应用于工程实例 2024-11-06
- STEP7 OB组织块介绍和使用技巧 2024-11-06
- 如何在STEP7环境中调试变频器/直流调速器 2024-11-06
- S7-1200/1500的VARIANT数据类型的使用 2024-11-06
- 西门子 S7-200 SMART PLC 在食用菌培育实验室的应用 2024-11-06
- WINCC 读取天气预报-VBS-XML接口 2024-11-06
- 如何在工业以太网CP/CM中给UDP连接使用和组态IP组播 2024-11-06
- 调用并赋值PID (S)FB41, (S)FB42 和 (S)FB43 功能块时应注意什么 2024-11-06
- 在STEP7中将文本库中的文本集成到消息中 2024-11-06
- SFC1系统功能块应用实例 2024-11-06
- 基于WINCC和S7-200的PLC无线通讯方案 2024-11-06
- 如何在WinCC RT Professional (TIA Portal)中使用画面窗口和变量前缀 2024-11-06
- 在S7-1500中,为什么将某一个字中的单一地址定义为PLC数据类型会造成整个字被覆盖 2024-11-06
- 西门子S7-1200 S7通讯 2024-11-06