| 作者 | 主题 |
|---|---|
|
谦 总坛主
经验值:23725 发帖数:3679 精华帖:8 |
楼主
主题:应用探讨——如何最大化利用 PLC CPU 资源
大家刚刚讨论完CPU的循环,都知道了CPU的循环时间由 4 个阶段组成 ,即PII,PIO,Application, CCP. 及在 某些 的情况下需要用户自己来优化程序提高程序执行速度等。这次我们将深入讨论CPU循环周期和通信的关系。这些通信包括各种通信服务 PG,OP,S7,TCP,IO等。讨论它们和CPU循环周期的关系如何?
在开门之前,我们可以看如下一分别用STL与LAD编写的程序(两个程序具有相同的功能): STL语言编写的程序: ![]() LAD语言编写的程序如下: ![]() 您可以选择一种所熟悉的编程语言,分别下载到S7-300 PLC 和S7- 400 PLC中。这里简单描述一下程序的含义:把 MW10中的数据给MW12,然后延时 SFC47时间 为2秒,(这里 还 需要设置 CPU的扫描监控时间设置为最大,例如5s.否则下载程序后,CPU会停机。)最后判断MW10和MW12是否相等,是否去置位M100.1。开始时MW10 和MW12 缺省值都是0。通过 PG的 step7变量表在线修改MW10的值为1,那么M100.1的结果是什么?300、400, 的结果是一样的吗?是什么原因呢? 希望这里可以帮助你打开S7-300/400的PLC的循环周期和通信的微观世界。期待您的答案。 活动奖励: 此次集中交流将持续至3月5日,其中所有精华帖作者将获得加倍精华奖励积分;最终所有有效留帖的网友将获得加倍发帖积分。更多积分带给您更多奖品兑换的自由。 对于有突出发言贡献的网友可获得金币奖励,可以在当前的兑换奖品中兑换奖品。 交流结束后也将专门整理重要内容,供广大网友分享参考。 预祝大家交流愉快,收获丰富! |
|
精炼人生 游侠 经验值:318 发帖数:9 精华帖:1 |
20楼
主题:回复:应用探讨——如何最大化利用 PLC CPU 资源
重新做了测试,分别在CPU315-2 DP、CPU414-2 DP做的:
1、在300CPU的情况下,无论是使用“modify variable”功能、“Activate modify values”功能尝试多次,都无法使M100.1置位。 2、在400CPU的情况下,使用“modify variable”功能尝试多次无法使M100.1置位; 但是,在使用“Activate modify values”功能时,可以轻易置位M100.1,“Activate modify values”具有PG中断功能吗? |
|
七色阳光 侠圣 经验值:2019 发帖数:965 精华帖:5 |
23楼
主题:回复:应用探讨——如何最大化利用 PLC CPU 资源
在上面的这个程序中反应的应该是在一个扫描周期中数据一致性的问题。
大家可以看看400的手册中关于400的周期响应时间,在资料中介绍400的用户程序是靠时间片来管理的,而每个时间片分为用户程序,通讯和系统操作三个部分,400不是在周期控制点处处理通讯而是在固定的时间片执行,因此在400中通讯是可以中断用户程序的,而这个中断是可以在任何指令后执行,当中断执行后数据就可以被修改,因此在400中数据就有可能并不一致。这就是400为什么能够使M100.1置位的理论依据。 使用 S7-300 CPU 时,在周期控制点处将通过 OP/TP(操作员控制和监视功能)单独访 问数据(有关数据一致性,请参见技术规范)。 程序执行不会*作员监控功能中断。不能是M100.1置位。 置于实际如何操作,需不需要在硬件中配置什么功能才会使M100.1置位需要大家继续讨论和实践。 通讯负载可以影响扫描周期,而通讯负载是如何影响扫描周期的大家可以看看下面的文档。 http://www.ad.siemens.com.cn/download/docMessage.aspx?ID=5934&loginID=&srno=&sendtime= |
|
新湖长 侠圣 经验值:3163 发帖数:573 精华帖:15 |
38楼
主题:回复:应用探讨——如何最大化利用 PLC CPU 资源
我理解的 400 PLC 比起300PLC ,在数据处理能力,通讯能力都明显要好。在编程方面 400PLC 更容易使 用高级语言编程,CFC,SFC 等,使编写程序更加容易。
哪有狂澜不能力挽
|
|
Automann 至圣 经验值:18299 发帖数:6168 精华帖:137 |
43楼
主题:回复:应用探讨——如何最大化利用 PLC CPU 资源
周期程序扫描和用户程序的处理以时间片的方式执行。
S7-400不是在扫描周期的检查点处理通讯作业,而是在程序周期的固定时间片进行。 在硬件组态时,可将通信负载设置为5%~50%,默认值为 20%。 该百分比应视为平均值,换句话说,通信负载在某个时间片内可能比 20% 大很多,下一时间片中的通信负载可能会明显小于该值,或为百分之零。 实际循环时间=循环时间×100/(100 – 组态的百分数) 组态的通信负载百分比并不影响周期时间,实际发生的通信负载才会影响周期时间。例如组态的通信负载为50%,而在一个周期内实际的通信负载为 10%,则周期时间不会翻倍,而仅仅会增加到1.1倍。 假设在硬件组态时组态了20%的通信负载,计算的周期为 10 ms。 20%的通信负载是指为通信和用户程序保留平均长度为200 μs和800 μs的时间片。所以,CPU处理一个循环需要10 ms / 800 μs = 13个时间片。这意味着,如果CPU充分利用已组态的通信负载,则实际周期时间为13乘以1 ms的时间片 = 13 ms。 这就意味着,20%的通信不是将周期线性增加2 ms,而是增加3 ms。 假设在硬件组态时组态了50%的通信负载。计算的周期为 0 ms。 50%的通信负载是指为通信和用户程序各保留长为500μs的时间片。因此,CPU处理一次循环需要10 ms/500 μs = 20个时间片。这就意味着,如果CPU充分利用已组态的通信负载,则实际周期时间为20乘以 1 ms 的时间片 = 20 ms。 这就意味着,50%的通信不是将周期线性增加5 ms,而是增加10 ms。 手册建议一般使用缺省值20%。仅当CPU主要用于通信目的,且用户程序对时间要求不十分严格时,才使用较大值。在其它情况下,应选择较小值。
追求完美
|
|
Automann 至圣 经验值:18299 发帖数:6168 精华帖:137 |
56楼
主题:回复:应用探讨——如何最大化利用 PLC CPU 资源
对一致性的理解
如果通信块被中断,例如被更高优先级的硬件中断 OB中断,可能会引起数据不一致。即传送的数据部分来自处理硬件中断之前,部分来自处理硬件中断之后 。 也就是说,这些数据将不一致 (不连贯)。 如果较大的数据包以一致性格式传送,可能会增加 CPU中断的反应时间。需要绝对一致传送的数据量越大,系统的中断反应时间越长。 我的理解通信数据的一致性就是传送过程数据的连续性或完整性。有的数据要求整体更新,如果不能保证通信处理过程数据传输的一致性,将会造成新、老数据混杂,可能会带来不可预料的后果。所以S7-300/400特别重视数据传送的一致性,
追求完美
|
|
nucman 游侠 经验值:584 发帖数:100 精华帖:3 |
69楼
主题:回复:应用探讨——如何最大化利用 PLC CPU 资源quote:以下是引用看雪001在2013-02-02 10:08:47的发言: 看过这个帖,结合最近在做的一个项目,说下我的体会: 我希望对一个模拟量做到小于1ms的采样周期,并且还要用PLC来做,那么我的PLC扫描周期就要小于1ms;经过不断修改程序,我用s7-313c的PLC进行模拟量采样,真的可以做到扫描周期小于1ms,并且在屏上显示波形图!但是在查看PLC的扫描周期时,最大值仍然会有3ms,而即使全部程序都执行,“上次扫描”也不会超过1ms,我的问题是“为什么会出现最大扫描时间会是3ms?” 看过这个帖子,我似乎有了答案,可能与屏上变量采样周期有关系,即PLC的CPU选项卡上的“来自通讯的扫描周期负载%”(默认为20%),编程电脑的变量监控应该也是算在这段时间内的。 比较一下西门子300、400、及WinAC的cpu属性,会发现winAC的这个选项是灰色的,表示不可更改,而“周期性更新过程映像”却能勾选,并且“扫描周期监控时间”的默认值是6000ms,远大于300默认的150ms。 这是为什么呢? 既然谈到了WinAC,那么我也来谈谈WinAC的一些行为. 确实,在WinAC的组态界面里,通信负荷设置选型是灰色的,不可更改,如下图所示。 ![]() 那么,是否通信负荷就是默认的20%呢?不是的。 通信分为好多种,对于winac来说,通信板卡可以是PC Station侧的,也是是WinAC RTX侧的。 我们来看看WinAC的执行系统,要注意WinAC的执行系统与S7-300/400都不相同。 ![]() WinLC RTX作为一个进程工作在RTX实时系统下,有较高的优先级,当用户自己开发的实时应用时,需要考虑优先级的设置,哪一个进程的优先级高,那么就可以中断优先级低的应用进程。 另外,在WinLC RTX的进程中,运行多个线程,线程也有优先级之分。 优先级最高的是WinLC中断事件,这包括IO通信等,这可以通过WinLC的调节面板调节Mini sleeptime 以及Mini cycle time等来调节; 接下来优先级稍低的是OB,各OB也是分为不同的优先级。 最后是WinLC background Task,用于执行大家关心的通信程序(指的是tcp/ip,S7,以及pg/op通信等)。由于这部分的优先级最低,所以它会被高优先级的OB所打断。 另外,需要注意的是在WinAC中,定时器的刷新机制与S7-300/400的不同。 本topic中谈到的SFC47实际在winac中运行时,设置的时间不是你所要的定时时间。它取决于设置的时间与hal的时间关系,如果设置为1010us,而机器的hal timer 时间是100us,则会执行1100us的wait 时间。
西门子技术支持
|
|
四书五经 侠圣 经验值:3667 发帖数:762 精华帖:58 |
111楼
主题:回复:应用探讨——如何最大化利用 PLC CPU 资源
通信资源应该包括连接资源和任务资源。
只有连接资源而任务资源不够的话也不能够通讯。比如对于1个315 PN的CPU有14个S7连接资源和32个任务资源。在1个S7连接上,有32个BSEND/BRECV,则基于另外S7连接的BSEND/BRECV执行时就会报错。 对于S5兼容通讯也有任务资源的限制。 非S7通讯和S7通讯共享CPU的连接资源,但优先考虑S7通讯的占用CPU连接资源。 曾经遇到一个问题,在一个400中不能下载ALARM_8的背景数据块,就是因为通讯任务资源设置的太小了所致,重新放大设置之后即可解决问题。注意:只有400可以设置通讯任务资源。 |