欢迎来到西门子工业支持中心网站!
欢迎来到西门子工业支持中心网站!
![]() |
“西家技术派”公众号拥有如下功能: 1.专家知识经验分享 2.发布技术派活动的信息 3.申请加入技术派 4.技术派支持案例分享 5.常见问题搜索 6.技术资料链接 |
专家大讲堂《PLC通信原理探秘》系列视频:https://www.ad.siemens.com.cn/service/elearning/series/288.html
最新更新:
连载之十八: 【PLC通信原理探秘】大讲堂幕后彩蛋之前行
连载之十九: 【PLC通信原理探秘】大讲堂幕后彩蛋之一步
连载之二十: 【PLC通信原理探秘】大讲堂幕后彩蛋之之遥
连载之二十一: 【PLC通信原理探秘】大讲堂幕后彩蛋之残余
连载之二十二: 【PLC通信原理探秘】大讲堂幕后彩蛋之新敌
时光如梭,一转眼在西门子技术支持这个岗位上工作快15年了,我也从一名年轻的工程师也变成了老工程师。很遗憾,没有经历过S5到S7换代,那时我还在学校里,到工作中直接使用的是S7,可以说S7是看着我成长的,我也是看着它更新换代的,从S7-300/400PLC更新到S7-1500PLC,而它的很多通信的基本概念和理论没有改变。像我这样的“老生”还需要把这些“老”概念再好好谈一谈。
S7-300/400PLC通信负荷默认20%,到1500PLC的默认50%,前面提到很多通信,例如TCP都是发生在时间片的,并且这个参数的调整是直接影响这些发生在时间片上的通信的。那么调整通信负荷对于通信的影响到底是什么?
首先,根据手册公式,用来计算在一定通信负荷情况下的CPU的实际的循环周期。
我们都知道通信负荷会延长PLC的周期时间的,如果纯粹的OB1的循环周期是10ms,那么当通信负荷为20%的时候,切记这里说的不是参数调整为20%,是指实际的通信负荷为20%,那么PLC的循环周期会延长到12.5ms。那么设置通信负荷参数15%和50%,对于通信的影响是什么呢?
使用2台CPU1516-3PN/DP,取消最小循环周期为1ms的使能,建立TCP/IP通信,数据发送字节数为64K。在设置通信负荷为15%的时候,发送TCP的64K数据大约需要160ms,该时间的计算是来在Wireshark中的64K的TCP报文首尾的时间差。而在设置通信负荷为50%的时候,同样发送TCP的64K数据大约需要28ms。这意味着设置高的通信负荷可以在单位时间内发送出更多的数据,这是好的方面,因为这符合你设置高的通信负荷的预期,而负面影响就是产生高的带宽负荷,这又是你需要格外考虑的。
如果纯粹的OB1的循环周期是10ms,且设置最小的循环周期是15ms,通信负荷为20%,那么意味着整个循环周期将延长到18.75ms,而通信部分是3.75ms,死区时间是5ms。
但是由于CPU内部的优化,实际上的通信可用的时间是8.75ms,即如果设置的通信负荷是20%,这种情况下可用的通信负荷实际上高达46.67%。那么如果有这么高的可用的通信负荷是不是通信更快了呢?
仍然使用2台CPU1516-3PN/DP,设置最小循环周期为50ms,建立TCP/IP通信,发送数据仍为64K。在设置通信负荷为50%的时候,发送TCP的64K数据通过Wireshark查看大约需要350ms。什么?是不是哪里弄错了?
按照上面的公式,且不说可用的通信负荷可以超过50%,就单纯的通信负荷为50%,发送64K的数据,对于1500来说是绰绰有余的,上面的实验只需要28ms。而现在的350ms是什么原因导致的呢?看来还有未解之谜。
----------未完待续----------
连载之二十四: 【PLC通信原理探秘】大讲堂幕后彩蛋之常谈
连 载 汇 总: 【PLC通信原理探秘】系列连载故事汇总
小釉:4楼2020-05-11 16:18:21
串行通讯使用的资源也是cpu属性中的通讯负载资源吗?
比如使用的modbus rtu协议?
//////////////////////////////////////////////////////////////////////////////
CPU属性中的通信资源多数指S7通信,到400中包含OUC,1500中又加入了web,OPC UA等等。并不包含串口通信的。此外,串口通信的通信资源的连接数量与CPU属性中的通信资源完全不同,因为点对点的通信数量是由电气性能决定的,就像Profibus的126个节点一样。
www123456:5楼2020-05-11 19:29:49
我认为一个扫描周期内,时间片不一定处理完所有的通讯任务,与外设通信相对于扫描周期是异步的,要分好几个扫描周期的。
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
一个周期内是否可以处理完通信,取决于两个方面,一方面是CPU的循环周期,另一方面是通信的数据量。这个很好理解吧。异步处理并不一定要多周期,只是跟随CPU的循环而言。假如我们发送TCP8k数据,此时CPU的最小循环周期600ms,那么一个周期内肯定把8k的数据发送完毕了,所以不需要多个扫描周期的
· 小釉:3楼2020-05-11 15:25:42
WINCC或者触摸屏和PLC大数据量的通讯
////////////////////////////////////////////////////////////////////////////////////////////////////
你好!由于篇幅限制,我就少引用些。
我们需要认识到CPU属性的通信负荷20%也好,50%也罢,影响的通信仅是发生在时间片上的通信,所以无所谓与WinCC,触摸屏还是故事中提到的BSEND/BRECV通信。
设置该参数越小 ,那么实际发生的通信负荷对于CPU的循环周期的影响越小,这一点从公式也可以看出来。对于通信的影响显而易见,就是CPU分配给通信的时间片的数量减少了,也就是说一定数量的通信的时间被延长了。此外,与PN的优先级没有关系(这一点也许我没有太理解你的问题)
对于一定量的通信,一个周期内如果所分配的时间片不能处理完该通信,很自然的留到下一个周期,这一点毋庸置疑。
WINCC或者触摸屏和PLC大数据量的通讯
赵工,我看到你在一个地方提到,WINCC或者触摸屏和PLC大数据量的通讯会增加CPU的扫描周期。
比如通讯负载我设置成了50%,那么这20%都会被WINCC或者是触摸屏使用完毕。
如果我把通讯负载设置成20%,是不是CPU的扫描周期就会降下来呢?降低通讯负载的话,对通讯有什么影响。在时间片中处理的通讯,实时性相对于PN通讯来说,优先级会低,没有硬性的规定说一个扫描周期内,时间片必须处理掉所有的通讯任务吧,分好几个扫描周期处理不可以吗?
触摸屏和WINCC和PLC都是通过S7通讯来实现的,如果我设置成了20%,我就拿20%的时间来处理和WINCC或者触摸屏的通讯,一个扫描周期处理不完所有的数据,我可以在下一个扫描周期再去处理可以吗?
还是说必须在一个扫描周期内,将所有触摸屏上的变量通讯都得刷新一遍?
请填写推广理由: