quote:以下是引用www123456在2011-12-09 10:10:15的发言:
借www123456的回帖谈谈tuning panel相关参数的设置问题。
首先需要明确的是在单核时代,这些参数的设置是非常非常重要的,设置是否得当,直接会影响WinAC性能以及Windows相关操作,而目前大多使用的是双核(多核)CPU,这些参数就显得不是那么重要了,甚至不用设置。
为什么呢?
这是因为,以前的单核PC,同一个核要处理Window应用和WinAC应用,Windows占用核处理任务的时候,WinAC就没法处理自己的任务,反过来也一样,两者相互有影响;另外,WinAC操作系统处于操作系统的底层,其优先级要比Windows高很多,当WinAC任务非常多的时候,会导致Windows的鼠标、键盘都暂时没法用,等WinAC处理完了,这些设备才短暂的可用。这是单核时代必然会遇到的问题,为了解决这个问题,tuning panel上留了一个sleep time的参数设置,用于平衡WinAC与Windows操作系统之间的关系(可以理解为WinAC程序执行一段时间后,睡觉,睡觉时间就是设置的sleep time的时间,在此期间让出CPU的控制权,执行Windows相关操作和应用)。
双核时代,因为WinAC独占一个CPU核,Windows与WinAC相互独立,互不影响,即使Windows把CPU占满也不影响WinAC程序循环时间,反过来WinAC任务再多也不影响Windows上的正常操作。所以,对于双核系统这个面板上的大多参数的设置意义不大,譬如Priority滑动条、Force Execution相关参数等。有一个参数例外,那就是Min Sleep time,这个参数还是要根据具体需求做相关设置的,默认为10ms,如果需要WinAC处理速度非常快,那么就要把这个值设的非常小,最好不要设置为0,但可以设置为0.001或更小。
另外,jack_andy提到的“高端的PLC中都有扫描周期固定的功能”,与400PLC类似WinAC也有。可以通过下面的几张图片做个比较:
300CPU:

400CPU:

WinAC:

通过上面三幅图片可以看到,300CPU只能设置“扫描循环监控时间”,而“最小扫描循环时间”是灰色的;400CPU和WinAC是可以设置的。这一设置的作用就是能够保证OB1有一个最小的循环时间,举个例子,比如,设置OB1最小循环时间为100ms,而实际程序运行只用了60ms,那么OB1有40ms是处于等待状态的。关于这40ms的等待时间,对于WinAC可以靠tuning panel 的min sleep time时间或OB1中调用SFC47来保证(如果同时采用这两种方式,取二者中的大值)。另外,我认为设置最小循环时间的目的并不是为了保证数据一致性。
以上,供参考,有不对的地方欢迎大家斧正。
管理员注:本帖已被纳入此次探讨发帖整理,请
点此详阅。