| 作者 | 主题 |
|---|---|
|
谦 总坛主
经验值:23725 发帖数:3679 精华帖:8 |
楼主
主题:应用探讨—Step7中"和时间相关”的话题
在Step7中提供了比较丰富的与时间有关的元素例如定时器、系统时钟以及相关的组织块和系统功能块等,非常方便。但是在具体使用过程中,可能会遇到各种各样的问题。为了帮助大家比较系统的了解并掌握这部分的内容,特开始本话题讨论Step7中一切与时间有关的话题。(例如S5Time, Time, IEC Timer, Timer, Date_and_Time,System Time, SFC0/SFC1,WinCC如何设置时间变量的值等等)
下载中心参考文挡为: A0087:step7中有关时间和定时器的使用和例程 活动奖励: 此次集中交流将持续至8月10日,其中所有精华帖作者将获得加倍精华奖励积分;最终所有有效留帖的网友将获得加倍发帖积分。更多积分带给您更多奖品兑换的自由。 对于有突出发言贡献的网友,还可以在当前的可兑换奖品中免费挑选任一款奖品。 交流结束后也将专门整理重要内容,供广大网友分享参考。 预祝大家交流愉快,收获丰富! |
|
聚沙成洲 奇侠 经验值:7266 发帖数:1835 精华帖:22 |
2楼
主题:回复:应用探讨—Step7中
说到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 管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅。 |
|
剑忠 奇侠 经验值:9641 发帖数:622 精华帖:57 |
3楼
主题:回复:应用探讨—Step7中
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地址中。 管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅。
大学之道,在明明德,在亲民,在止于至善。
|
|
聚沙成洲 奇侠 经验值:7266 发帖数:1835 精华帖:22 |
5楼
主题:回复:应用探讨—Step7中
在WINCC FLEXIBLE中设定时间变量可以采用WINCC FLEXIBLE中变量的数据类型:定时器与时间来做。
其中定时器就是S5TIME,这个默认是以1ms为单位的,但最小为10ms,这个默认值可以在变量的属性中进行线性标定,如对应1s或者1分钟并且其相应的最小值也随之而变; ![]() ![]() 时间这个数据类型则为IEC_TIME类型,为带符号的32位IEC时间数据类型,时间增量为1ms,同样可以在变量的属性中进行线性标定。 ![]() ![]() 以下为运行结果: ![]() 管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅。 |
|
依然 至圣 经验值:10152 发帖数:2530 精华帖:19 |
14楼
主题:回复:应用探讨—Step7中
JUST DO IT
|
|
KAPOK 至圣 经验值:11056 发帖数:2184 精华帖:3 |
15楼
主题:回复:应用探讨—Step7中
恰好这两天在论坛里发了个关于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
|
|
鹅卵石 奇侠 经验值:8868 发帖数:3548 精华帖:25 |
16楼
主题:回复:应用探讨—Step7中
几个名词解释:
Timer——是定时器,用它定义类型的变量,可以用T0~T9这些定时器赋值! S5Time——是西门子定义的SIMATIC时间,最小时基为10ms,最大计量单位为小时(H),无符号,格式为S5T#0H_1M_0S_0MS Time——是IEC时间(国际标准),最小时基为1ms,最大计量单位为天(D),有符号,格式为T#0D_1H_1M_0S_0MS 管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅。 |
|
www123456 至圣 经验值:12603 发帖数:2379 精华帖:86 |
19楼
主题:回复:应用探讨—Step7中
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,在调用这些功能的过程中,应用程序不为它们分配任何内存空间。 管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅。 |
|
聚沙成洲 奇侠 经验值:7266 发帖数:1835 精华帖:22 |
21楼
主题:回复:应用探讨—Step7中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 管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅。 |
|
nucman 游侠 经验值:584 发帖数:100 精华帖:3 |
27楼
主题:回复:应用探讨—Step7中quote:以下是引用我爱丹丹在2011-07-31 11:11:00的发言: 如前面一个朋友所说,每次用定时器时还是得看看帮助才行。有什么好办法记住定时器的特性呢?到现在我只记住了一个接通延时定时器的用法。 其实如果把5种S5定时器的区别搞明白,每次在应用时就会做出正确选择就不用看帮助了,详见下图。要从输入信号、定时器输出信号及定时时间这三者的关系理解并记忆这几种定时器的不同。 ![]() 管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅。
西门子技术支持
|
|
t1122 游士 经验值:160 发帖数:73 精华帖:1 |
28楼
主题:白话入门定时器
第一次接触定时器,就把我困扰了将近1个月。
其实,翻翻以前下载的资料,西门子的文档中,定时器几乎是写的最好的!可是还有无数的初学者跟我一样受过定时器的困扰,就连热线的故事里面,定时器的问题也占有很大的比例。 我觉得,作为文档,不得不用规范的语言去描述。不过哪,我们可以用通俗的语言去理解。我就把我的理解用一句白话写出来,总结了一下我所遇到的、看到的定时器的初级问题,希望能对初次接触定时器的同学有所帮助。 入门问题1:定时器到底是个啥物件? 文档中说“异步运行”,初学者很难理解。我们可以这样理解,定时器,其实是plc中的一种物件(元器件,或者说设备),它运行起来,跟我们写的程序不是同时进行的。就好比我们常见的打印机一样,我们调用了word,打印文档,这个时候你把word关了,打印机也会自己打印完成,这就好比我们的fc里面调用了定时器,如果定时器没有运行完,fc执行的条件不满足了,定时器还会在后面继续运行。 请理解:定时器就是一个独立的“物件”。可以测试,在模拟器中,只用你设置了定时器的时间,他就会运行,fc或者fb用到了定时器,即使你想后悔断开执行条件,他也会运行——不带退货的。 入门问题2:定时器到底咋动的? 不扒拉不动。定时器启动的条件是个上升沿,请注意:是个上升沿。开始我就犯过这种错误。在fc里面使用定时器的时候,也许我们经常会给一个timer变量给fc,定时器启动的条件也许在fc内部写,也许会是一个参数指定。在第一次运行的时候往往没有问题,但是就是不能第二次运行。这样的问题往往就在于你没有“扒拉”他:你给fc中的s,没有形成一个上升沿。 请注意:想让定时器启动,就“扒拉”他一下!光按着他不撒手,没用的。 入门问题3:为啥我的不对! 别用没准的东西启动定时器。经常看到有人(包括当初的我)把启动条件写到临时变量里面,然后用来作为定时器的s,这个是错误的。每次启动fc的时候,临时变量的初始值是随机的,所以结果也是随机的。随机的意思就是:没准的。不能用没准的东西启动定时器啊。 请注意:一定要把启动变量放对地方。启动条件要么放到in或者inout中,要么就是静态变量,不能用没有初始化的临时变量。 入门问题4:定时器啥区别? 我学习的时候,匆匆的直接看帮助里面的说明文字,后面的图又懒得看。每次用的时候,都会现去找帮助,总是觉得不好记,不好区分。其实图比字更直观,最直观的资料就是时序图。当然,也要看帮助的文字。还有一点,名字也说明了不同的地方,非常好理解。把5种定时器都写出来,用拟真程序模拟一下,会让你有很直观的印象。 请注意:区分叫啥名,长啥样。名字很形象,时序图能说明具体的功能。 总结来说,入门的四句白话:定时器就是plc的一个物件。你不扒拉他,光按着,他是不会动的。不要用没准的东西启动定时器就不会错。区分定时器,你要记住他叫啥名,长啥样。 管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅。
就像找找偷懒的诀窍
|
|
n次看你的背影 奇侠 经验值:7974 发帖数:2321 精华帖:73 |
29楼
主题:回复:应用探讨—Step7中
关于S7定时器(S7Timer),功能确实比较多,各种用法也是很多!这些年来工作中积累了一些经验,在下有过一些用法,目前总结了三种!如下图所示!(仅作参考)!另外,我用其它专业领域的工具做了一个效果表达图,让原本枯燥无味、抽象的东西,增加点情趣,希望能和大家共勉,也希望能给大家带来视觉上的体验和享受!
1、互为触发型:比如在程序中需要用到占空比可调的脉冲源信号,可以用S_PULSE型定时器互为“串联”,让其取反互为触发,将T1、T2的设定时间作相应调整,这样用的好处就是灵活多变、而且简单,可以调制出我们需要的各种占空比脉冲信号,如果结合其它位进行逻辑运算,会有一些奇妙的效果!见图1 ![]() 2、自我触发型:S_PEXT类型定时器,取反自我触发有下图2的特征,而且高电平脉宽可以自由调节,底电平宽度相当于一个扫描周期,有时候我们可以近似地把它做为一个同步脉冲信号!调节它的时间值,可以调制出一个我们需要的脉宽信号。我们也可以结合其它位一起进行逻辑运算,灵活巧妙地获取一些功能! ![]() 3、赋值分频型:将一个定时器触发启动后,让其一直循环运行,根据定时器时基(10ms、100ms、1s、10s)的不同,我们可以将定时器当前的运行时间赋给一个MW,最低位其实就是时基,可以提取出来,然后逐级向高位是2分频的关系(变量表里面看一下MW二进制状态就明白了)!我们可以提取MW里面的某些想要的位,给我们使用!CPU属性里面的Clock Memory 如果设置为MB0,这样就可以对比一下了,呵呵......有可能CPU属性设置的MB0的时钟脉冲是真正意义上的同步脉冲,不受扫描周期的影响!任何定时器产生的脉冲精度都是无法与之相比的!见图3 ![]() 管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅。
佛对我说:“你的痛苦来自于你的欲望,没有欲望也就没有痛苦!”
|