回复:应用探讨——如何最大化利用 PLC CPU 资源

nucman

  • 帖子

    100
  • 精华

    3
  • 被关注

    1

论坛等级:游侠

注册时间:2011-03-15

普通 普通 如何晋级?

发布于 2013-02-04 12:06:25

69楼

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 时间。
西门子技术支持

精华帖版主置评:WinAC的通信回答的很全面!

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54664条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。