技术论坛

应用探讨—Step7中和时间相关”的话题

作者 主题
总坛主
西门子官方工程师

经验值: 23712
发帖数: 3792
精华帖: 8
主题:应用探讨—Step7中和时间相关”的话题


只看楼主 只看精华 楼主 2011-07-18 11:38:26
标签:
在Step7中提供了比较丰富的与时间有关的元素例如定时器、系统时钟以及相关的组织块和系统功能块等,非常方便。但是在具体使用过程中,可能会遇到各种各样的问题。为了帮助大家比较系统的了解并掌握这部分的内容,特开始本话题讨论Step7中一切与时间有关的话题。(例如S5Time, Time, IEC Timer, Timer, Date_and_Time,System Time, SFC0/SFC1,WinCC如何设置时间变量的值等等)
下载中心参考文挡为:
A0087:step7中有关时间和定时器的使用和例程

活动奖励:
此次集中交流将持续至8月10日,其中所有精华帖作者将获得加倍精华奖励积分;最终所有有效留帖的网友将获得加倍发帖积分。更多积分带给您更多奖品兑换的自由。
对于有突出发言贡献的网友,还可以在当前的可兑换奖品中免费挑选任一款奖品。
交流结束后也将专门整理重要内容,供广大网友分享参考。
预祝大家交流愉快,收获丰富!
 
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=873506&b_id=4&s_id=0&num=35

至圣

经验值: 63470
发帖数: 12672
精华帖: 121
回复:应用探讨—Step7中


只看楼主 只看精华 1楼 2011-07-18 13:02:11
此外还可以使用系统功能块SFC2,SFC3,SFC4做,
其中SFC 2 "SET_RTM"设置运行时间定时器,
SFC 3 "CTRL_RTM"启动和停止运行时间定时器,
SFC 4 "READ_RTM"读取运行时间 定时器,计时最大为32767小时,即使用比较指令如果计时时间超过32767时,自动将"SET_RTM"设置运行时间定时器时间内赋为0.当然也可以使用手动按钮将"SET_RTM"设置运行时间定时器时间赋为0。
SFC 3 "CTRL_RTM"启动和停止运行时间定时器需要在相应管脚赋一个启动停止计时器bool变量,和一个字节变量来作为计时器编号。使用系统功能块做累计时间简单,不占用系统内计数器和计时器资源,但计数时间精度为小时,且计数最大值为32767小时。
 
以下网友喜欢您的帖子:

  
奇侠

经验值: 7344
发帖数: 2057
精华帖: 22
回复:应用探讨—Step7中
精华帖精华帖星级2级


只看楼主 只看精华 2楼 2011-07-18 13:30:31
说到S5time格式就要说到时基的问题。
定时器字是BDC格式,定时器字的0到11位保留二进制编码的十进制格式时间值(BCD格式:由四位组成的每一组都包含一个十进制值的二进制代码)。第12和13位存放二进制编码的时间基准。第14、15位未使用。时间基准定义时间值以一个单位递减的间隔。最小的时间基准是10ms,最大为10s。
时间基准 时间基准的二进制编码
10ms 00
100ms 01
1 s 10
10 s 11

受BCD格式的限制最大只能999,既在10s的时基下不接受超过2小时46分30秒的数值。对于范围限制(例如,2h10ms)而言,过高的分辨率(如2h10ms中的10ms)将被截尾为有效分辨率。S5TIME的通用格式对范围和分辨率有如下限制:
分辨率 范围
0.01s 10MS到9S_990MS
0.1s 100MS到1M_39S_900MS
1s 1S到16M_39S
10s 10S到2H_46M_30S
管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅

 
以下网友喜欢您的帖子:

  
奇侠

经验值: 9080
发帖数: 639
精华帖: 57
回复:应用探讨—Step7中
精华帖精华帖星级2级


只看楼主 只看精华 3楼 2011-07-18 20:53:21
SFC1和SFC0用于读/写PLC中的系统时钟,使用相对比较复杂,所以在以往的论坛中出现了很多问答。现我以SFC1功能块为例(SFC0的使用方法完全类同),将其使用方法简述如下:
1、首先调用系统块SFC1,读取CDT端口数据,并将其存放在一个事先定义的共享DB中,DB块的参数定义格式如图所示:

2、如果DB块编号为6(即DB6),使用“P#DB6.DBX0.0”指令存放在DB6中,则对应如下:

3、注意:以上DB地址中的数据均为BCD格式,使用时请先经BCD转换后,再分别对应放置在DB6.DBW8、DB6.DBW10、DB6.DBW12、DB6.DBW14、DB6.DBW16、DB6.DBW18、DB6.DBW20、DB6.DBW22地址中。
管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅

大学之道,在明明德,在亲民,在止于至善。
以下网友喜欢您的帖子:

  
奇侠

经验值: 7344
发帖数: 2057
精华帖: 22
回复:应用探讨—Step7中
精华帖精华帖星级2级


只看楼主 只看精华 5楼 2011-07-18 22:36:03
在WINCC FLEXIBLE中设定时间变量可以采用WINCC FLEXIBLE中变量的数据类型:定时器与时间来做。
其中定时器就是S5TIME,这个默认是以1ms为单位的,但最小为10ms,这个默认值可以在变量的属性中进行线性标定,如对应1s或者1分钟并且其相应的最小值也随之而变;




时间这个数据类型则为IEC_TIME类型,为带符号的32位IEC时间数据类型,时间增量为1ms,同样可以在变量的属性中进行线性标定。






以下为运行结果:


管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅

 
以下网友喜欢您的帖子:

  
奇侠

经验值: 7344
发帖数: 2057
精华帖: 22
回复:应用探讨—Step7中


只看楼主 只看精华 7楼 2011-07-19 07:46:23
WinCC如何设置时间变量的值:可见下载中心文档A0335《如何在WinCC项目中监控S7 300/400 PLC中的定时器及计数器》
http://www2.ad.siemens.com.cn/download/Upload/AS/application/A0335.pdf
 
以下网友喜欢您的帖子:

  
游民

经验值: 54
发帖数: 10
精华帖: 0
回复:应用探讨—Step7中


只看楼主 只看精华 8楼 2011-07-19 18:18:38
S5定时器有5种:
S_PULSE--脉冲S5定时器
S_PEXT-- 扩展脉冲S5定时器
S_ODT-- 接通延时S5定时器
S_ODTS-- 保持型接通延时S5定时器
S_OFFDT--断电延时S5定时器
使用过程中,总是分不清楚这几个定时器的信号关系,比如,定时器什么时候输出为1,输出值与设定的定时时间t的关系等等,编程时每次都是看帮助选择一番,也记不住,下次还是得看帮助,各位大侠有没有什么好办法能够帮助记忆避免混淆?
 
以下网友喜欢您的帖子:

  
至圣

经验值: 63470
发帖数: 12672
精华帖: 121
回复:应用探讨—Step7中


只看楼主 只看精华 9楼 2011-07-20 08:54:25
使用winccflex做S5T#时间格式定时很简单,首先时间继电器的定时时间定义为S5T#变量,在winccflex内定义时间继电器设定值变量为定时器类型,因为 S5T时间单位是毫秒,所以定义输入输出域的格式时需要移动小数点3位,此时设置时间值就为秒了。
 
以下网友喜欢您的帖子:

  
奇侠

经验值: 6335
发帖数: 1385
精华帖: 5
回复:应用探讨—Step7中


只看楼主 只看精华 10楼 2011-07-20 16:52:15
在wincc中如何向PLC传递时间值的问题
我是在wincc中编写了一个将wicc设置的时间转化为PLC所需要的S5Timel类型的时间值的转换函数。比如wincc中设置10分钟,在plc中如果用word类型表示就是w#16#2600,该值在PLC被自动转换为s5T#10m.如果是20分钟,则对应的word类型的实际值则为w#16#3120.因此,转换函数就是将wincc的实际时间值转换为用word类型的时间值即可。每次在winc中设置了实际的时间值后,通过该转换函数,即可自动将实际的时间值传递到plc所需要的时间类型值。
管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅

 
以下网友喜欢您的帖子:

  
至圣

经验值: 12237
发帖数: 2431
精华帖: 86
回复:应用探讨—Step7中


只看楼主 只看精华 11楼 2011-07-20 17:16:46
WINCC可以访问DATA_ AND_ TIME类型的变量,但必须创建数据类型DATA_ AND_ TIME的结构。
例如:
字节: STEP7 WINCC
0: Year YEAR
1: Month MONTH
2: Day DAY
3: Hour HOUR
4: Minute MINUTE
5: Second SECOND
6: 1/10 and 1/100 second MISLLISEC1
7: 1/1000 second MISLLISEC2
管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅

 
以下网友喜欢您的帖子:

  
侠客

经验值: 927
发帖数: 471
精华帖: 6
回复:应用探讨—Step7中


只看楼主 只看精华 13楼 2011-07-21 09:49:15
关于定时器
plc 中提供的定时器有数据限制,另外300和400的有区别,导致程序无法移植。
原来技术库里有个描述sfc64的, 可以自己编程需要类型的定时器,这样就可以方便移植。不过技术库里的源代码要花钱买,都这么多年了,也建议西门子把这个开放下载。

 
以下网友喜欢您的帖子:

  
至圣

经验值: 10208
发帖数: 2605
精华帖: 19
回复:应用探讨—Step7中
精华帖精华帖星级2级


只看楼主 只看精华 14楼 2011-07-24 15:23:17
STEP7程序中把时间处理成ms或着s,然后再WinCC中建立变量:


管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅

JUST DO IT
以下网友喜欢您的帖子:

  
至圣

经验值: 10199
发帖数: 2115
精华帖: 3
回复:应用探讨—Step7中
精华帖精华帖星级3级


只看楼主 只看精华 15楼 2011-07-26 14:55:45
恰好这两天在论坛里发了个关于S7-300与S7-400 PLC定时器的帖子,里面对于SD、SE、SP、SS和SF的程序执行机制有相关涉及到的内容。具体内容请参考:
http://ad.siemens.com.cn/club/bbs/post.asp?b_id=4&a_id=875437&s_id=0&num=29#anch
SIEMENS公司的定时器类型的确比较丰富,解决了好多实际应用问题。但美中不足的是,当这种计时器的定时值超过了9990S后,必须要使用级联或者改变思路用计数器或IEC系统功能或者是系统功能块SFB4和SFB5。相对而言,我以前使用的GE公司的PLC,其定时器的类型非常少,好多其他的定时器功能都需要自己去开发。不如SIEMENS的来得方便,但正如上述引用的帖子中谈到的,我们需要在程序中十分小心定时器的应用问题,这是使用SIEMENS定时器是一定要留心的!

管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅

Kapok
以下网友喜欢您的帖子:

  
奇侠

经验值: 7917
发帖数: 3597
精华帖: 25
回复:应用探讨—Step7中
精华帖精华帖星级2级


只看楼主 只看精华 16楼 2011-07-27 08:22:50
几个名词解释:
Timer——是定时器,用它定义类型的变量,可以用T0~T9这些定时器赋值!
S5Time——是西门子定义的SIMATIC时间,最小时基为10ms,最大计量单位为小时(H),无符号,格式为S5T#0H_1M_0S_0MS
Time——是IEC时间(国际标准),最小时基为1ms,最大计量单位为天(D),有符号,格式为T#0D_1H_1M_0S_0MS

管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅

 
以下网友喜欢您的帖子:

  
侠客

经验值: 871
发帖数: 125
精华帖: 0
回复:应用探讨—Step7中


只看楼主 只看精华 17楼 2011-07-27 09:10:01
在平时的应用中,很多时候,这些定时器都是和计数器相配合的使用的,如果不是这样的,将会很麻烦的。
学习的感觉真好。
以下网友喜欢您的帖子:

  
侠圣

经验值: 2879
发帖数: 632
精华帖: 2
回复:应用探讨—Step7中


只看楼主 只看精华 18楼 2011-07-27 13:55:10
quote:以下是引用猪坚强在2011-07-27 09:10:01的发言:
在平时的应用中,很多时候,这些定时器都是和计数器相配合的使用的,如果不是这样的,将会很麻烦的。


为何很多时候要配合使用?
 
以下网友喜欢您的帖子:

  
至圣

经验值: 12237
发帖数: 2431
精华帖: 86
回复:应用探讨—Step7中
精华帖精华帖星级2级


只看楼主 只看精华 19楼 2011-07-27 14:31:41
STEP7中如果要编辑时间中断,可以使用以下三种方法:
1、时间中断的设置和激活都可以在Hardware-Configuration(HW Config)中实现,例如OB10,这样,在CPU重新启动时,就会自动设置时间中断且激活预设的时间点中断。
2、在Hardware-Configuration(HW Config)中设置时间中断。通过CPU中的SFC30来激活时间中断OB。SFC30可以由用户根据事件进行调用。
用SFC28来设置时间中断,并用SFC30将其激活,无需执行先前在硬件组态中进行的设置。
3、在S7-300和S7-400 CPU中,集成有系统功能“SFC”以用于编辑时间中断,例如SFC28到SFC31,在调用这些功能的过程中,应用程序不为它们分配任何内存空间。

管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅

 
以下网友喜欢您的帖子:

  
奇侠

经验值: 6358
发帖数: 504
精华帖: 0
回复:应用探讨—Step7中


只看楼主 只看精华 20楼 2011-07-28 15:18:00
如何能保证联网的3个以上的300PLC的时钟能同步?
 
以下网友喜欢您的帖子:

  
奇侠

经验值: 7344
发帖数: 2057
精华帖: 22
回复:应用探讨—Step7中
精华帖精华帖星级2级


只看楼主 只看精华 21楼 2011-07-29 08:53:07
quote:以下是引用水寒风刀在2011-07-28 15:18:00的发言:
如何能保证联网的3个以上的300PLC的时钟能同步?


一个子网中有多个 CPU 互连,可以参数化其中一个 CPU 的时钟作为主时钟。参数化 CPU 需要指定一个同步间隔,子网中所有CPU 通过此间隔与主CPU 同步。可以在主 CPU 中调用系统函数 SFC48 "SNC_RTCB" 。此调用触发子网中所有时钟与之同步而与自动同步间隔无关。如果通过函数 SFC0 "SET_CLK"设置主时钟,子网上所有的时钟都将自动同步此值。

在作为主时钟的CPU属性中选择 "Diagnostics/Clock" 标签并设置同步模式的类型和时间间隔,



然后在其他需要同步的CPU 在同步类型上设置为 "As Slave"。

最后在主CPU中调用系统功能块SFC0 和 SFC48就可以同步网络上的CPU时间了。


参见:https://support.automation.siemens.com/CN/adsearch/resultset.aspx?region=CN&lang=zh&netmode=internet&ui=MTg4ODY4ODMA&term=%e6%97%b6%e9%92%9f%e5%90%8c%e6%ad%a5&ID=24658964&ehbid=24658964

管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅

 
以下网友喜欢您的帖子:

  
游民

经验值: 55
发帖数: 6
精华帖: 0
回复:应用探讨—Step7中


只看楼主 只看精华 22楼 2011-07-30 20:46:20
S_PULSE--脉冲S5定时器

S_PEXT-- 扩展脉冲S5定时器

S_ODT-- 接通延时S5定时器

S_ODTS-- 保持型接通延时S5定时器

S_OFFDT--断电延时S5定时器

其实真正理解这些定时器之间的细微差别之后,可以使用上面任意一种定时器,来实现同一功能

管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅

 
以下网友喜欢您的帖子:

  
收起
应用探讨—Step7中"和时间相关”的话题
">
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。