信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。
    • Highlight introduction

      亮点介绍

      课程亮点:
      1.知其然,更知其所以然。
      剖析OUC通信的原理,展示通信过程,详尽解释缓冲区、数据一致性等重要概念,深入讲解指令使用。

      2.理论结合实践,通过合理设计的实验,将复杂的通信原理以简单直白的形式呈现出来。

      3.基于原理,总结影响通信的因素,指导如何避免通信故障并提高通信速度。

    • User benefit

      用户获益

      您将收获:

      •对通信过程的全面深入了解
      •理解TCP和UDP通信及区别
      •理解通信缓冲区在通信过程中的作用
      •掌握提高通信速度的方法
      •掌握保证数据一致性的方法

    • Suitable crowd

      适用人群

      1.希望能够熟练通过OUC通信的人员
      2.希望对通信过程有深入了解的人员
      3.希望能够快速解决调试和生产过程中通信故障的人员

    【专家大讲堂】20210628-0702 PLC通信原理探秘第二期-TCP/IP通信探秘-系列直播答疑


    直播时间:2021年6月28日-7月2日 每晚19:30-20:30


    主讲专家 : 赵欣


    答疑精选:


    Q1:大家是否采用可变长度的TCP/IP协议来通信?

    A1:不采用,ad-hoc模式是可以做变长的TCP/IP通讯的,但实际上ad-hoc模式有两个缺点:

    (1)1500字节减去IP头20个字节,减去TCP头20个字节,即1460个字节的数据传输。大家想用第三方设备和PLC做通讯,要使用TCP协议的话,可能需要变长的模式,在1460字节范围内是可使ad-hoc模式做通讯。

    (2)比较底层的原因,即使使用小于1460字节的长度去ad-hoc通信,也有可能造成数据对应不一致,可能的原因就是接收端的接收速度慢。

     

    Q2: 这两款交换机的规格不一样,分别有些什么配置?

    A2:图片中我使用了Scalance 200 系列的交换机204-2,另外一个实际上不是交换机而是一个TAP,物理硬件去连接的网络连接。对于200系列交换机,用的是端口镜像,XM400,使用其TAP功能,可以捕捉IRT的数据,而且是双向IRT的数据,不需要改网卡的设置,也可以看VLAN Tag的标签。

     

    Q3:请教一下设置minimum cycle time对communication load有什么影响吗?

    A3:如果PLC不设置最小循环周期,那么程序中断加上通讯能运行多长时间就是多长时间,没有富余的时间去处理其他操作。对1500来说,设置默认的通讯负载是50%,在有大量的通讯存在的情况下,通讯负载是超不过50%的,如果设置了minimum cycle time,假设程序运行的时间纯粹为2毫秒,设置的minimum cycle time为10毫秒,意味着有8毫秒是free的,可以用来做通讯,此时即使设置了50%的通讯负载的上限,有大量通讯的情况下实际通讯负载照样可以超过50%。

     

    Q4:tcp的通信数据量最大64k, 那么当通信传送的数据变化很快,是否有数据一致性的保证,比如发送16k数据,只有8k是一致的?

    A4:TCP/IP通讯要想保持数据一致性,只有DONE信号结束完成之后,你才能去修改数据,否则不能保证你发送的64k数据全是一致的,而只能保证每个8k的数据是一致的,即最大的一致性数据是8k。 

     

    Q5:交换机出现数据风暴的由来?

    A5:数据风暴其实就是所谓的广播风暴,简单理解就是本地网络中存在大量的广播报文,导致通讯无法进行甚至网络瘫痪。实际上它是一种普遍的网络问题,解决这个问题的关键是减少广播报文的出现,产生广播报文的原因有很多种,最常见的在工厂里有PC中了蠕虫病毒,向网络中发送大量的广播数据,引起网络堵塞,造成广播风暴。另外一个点是工厂使用一些测试网络工具,会周期性的向网络发送大量广播以获得网络状态信息。还有一些其他原因,比如网线短路等。

     

    Q6:常用的ping和arp指令有啥区别?如果一台设备不知道ip,如何快速知道ip?

    A6:两者其实并不能放在一起比较。ping指令可以用ping去控制时间,用短时间可以ping大量数据。比如:可以ping 8k的数据,底层用的都是IP的协议,arp是对自己的设备来说去查表,比如arp-a,可以看到里面的arp的IP地址和MAC地址的映射关系,只有获得对方的MAC地址才能与对方进行通信。

     

    Q7:环形网络需要在交换机设置才能避免数据广播风暴?

    A7:首先以太网是不支持环网的,需要环网管理协议,比如用MRP,快速冗余环网协议等,这些都是有管理器和客户端的,由这些协议来控制环网。这种冗余方式当有一台设备坏了,可以切换过去,保障其他设备继续进行通讯,此时是避免了数据广播风暴的。

     

    Q8:扫描周期不一样,会出现丢包的问题吗?

    A8:这个扫描周期是指做CPU的扫描周期,比如说设10毫秒,20毫秒或1毫秒等。TCP/IP的丢包有很多原因,比如网线短路或者做路由通信,路由器所造成的一部分丢包等等。但丢包没关系,TCP是可靠的安全的连接,有丢包其会重新发送,与扫描周期没关系,是由TCP/IP协议来决定的。

     

    Q9: 轮流跟多台西门子CPU通信,周期约5s,是否需要主动建立或断开连接?

    A9:一个CPU取决于PLC的连接资源的数量,假如一个PLC可以连接16个做TCP/IP通讯,也就是可以连接16台设备,连到第17台设备的时候要想通讯,需要断开一台TCP的连接,把资源释放掉再重新跟第17台做通讯,这种情况下才可以做轮流通讯。但至于说5s,因为不知道数据量多大,如果数据通讯量很少,5s够用。后面课程也会明确告诉大家,大家会看到这些数据指标。

     

    Q10:使用TCON建立了解发送和接受数据,会影响CPU的扫描周期吗?

    A10:首先TCON是建立一个通讯资源,通讯资源的建立注册是一个程序的执行,并没有完成发送和接受数据,所以不影响扫描周期,只是消耗数据代码的时间。

     

    Q11:连接建立后,TSEND和TRCV数据量大小对扫描周期的影响?

    A11:对扫描周期的影响很大,CPU默认的通讯负载是50%的情况下,它会处理PG在线程序等等,这些都会增加通讯负载里50%的负载,那么你的数据量越大,你要消耗的CPU的时间片的通讯部分就会越大,所以对扫描周期的影响就会越大。

     

    Q12: CPU通讯负载可以调节的吗?

    A12:CPU通讯负载可以调节,因为在CPU设置的属性里,通讯负载是可以调节的,对1500PLC来说,默认是50%

     

    Q13:keepalive时间是固定间隔发的吗?那如果断线后,再连接网线,重连的时间就不固定了?

    A13:keepalive参数open出去了,意味着允许用户修改,默认时间是30s。我设置多长时间,keepalive就按照多长时间发送。还有在keepalive设置为0的情况下,keepalive就被禁止了。重连的时间取决于网络端口,例如自适应的端口时间,还有就是REQ的发送频率,越快重连时间越短

     

    Q14:keepalive是客户端行为还是服务器端行为?

    A14:keepalive与是客户端行为还是服务器端行为没有关系,是双方根据自定义的时间间隔,周期性的向通讯伙伴发送keepalive探测帧,然后伙伴予以应答。

     

    Q15: 1500tcp通讯怎么清缓存区,固定长度报文,对方发送长度造成接受混乱错位。

    清缓存区不是人为可以清除的,除非释放资源。keepalive超过30s后会清缓冲区,但清缓冲区是发生断线的时候去清,那么除了断线,也有可能是网络的一些问题。

    “如果指的是发送和接收的数据不匹配的话”,在做TCP/IP通讯的时候,我们在小于1460个字节的时候,可以使用ad-hoc模式,可以进行变长的数据通讯,这时候数据可以发送过去。

     

    Q16: CPU的缓冲区是针对所有通讯链接使用同一个缓冲区,还是不同链接开辟不同缓冲区?

    A16: 这个直接关系到CPU通讯资源的问题,比如315-2PN/DP有16个TCP/IP的连接,大家首先想到的肯定是可以连接16个通讯伙伴,但实际上来说,在内部当中,就表示我有多少内存大小分配给通讯去做数据交换。说白了,就是能给一个通讯分配多大的Shadow buffer 和堆栈buffer。既然有16个连接,有8k的Shadow buffer和8K的堆栈buffer,就意味着我们以Shadow buffer或堆栈buffer为例,都是8k。所需要的缓冲区大小至少是8乘以16,即CPU给你资源的分配都是按照内存的大小分配好的,不是共用的,每一个TCP的通讯都是individual,去用自己的Shadow buffer和堆栈buffer。

     

    Q17:没太理解数据一致性的概念。

    A17:例如我从A向B发送1040个字节,但是由于我plc的性能决定它最大的一致性是800的字节,那么多了的字节需要第二次才能发送出去。如果在你第二次发送给B剩余的240个字节的时候,B的plc修改了后240字节中的数据,那么这时我们第一次发送的800个字节和后面发送的240个字节就不一致了。不一致最重要的影响在于,如果你做项目的时候利用这1040个字节做运算,eg:复杂的工艺上的计算、运行数据上的计算,那么计算时我需要这些数据是一致的。从A到B的过程中这些数据不能出现变化,要保持同一时刻数据是一致的,这时你算出来的结果才是正确的。如果单纯传数据作为显示,大家可能不会注意到。但是计算时不能忽略数据的一致性。

     

    Q18:一致性是打包模式吗?

    A18:不是打包模式。它是cpu由于性能版本的问题会给限制参数,保证数据性最大是多少。比如在实验中,1516的cpu,一个扫描循环的cpu最多只能发送8k的连贯数据,若发送16k数据,则是分两个循环周期发出的。

     

    Q19:探测帧怎么用于断线诊断?程序怎么写?

    A19:这里只是让大家理解keeplive可以诊断断线故障的,编程是不需要的,只需要修改参数。如果你希望在5秒内判断断线故障,你就把参数设成5秒。那么REQ就不能手动去使能。如果REQ 20秒使能一次,那么判断出错故障至少需要20秒。如果REQ 100毫秒的循环周期使能,那么就能在5秒钟左右发现断线故障。

     

    Q20:同一个扫描周期发送两次是什么结果?

    A20:一个扫描周期只能出一个沿,不知道你怎么实现两次。第一次发送时你的数据已经缓存了,第二次发送就已经进不去了,因为还没处理完。所以第二次发送没有意义。

     

    Q21:shadowbuffer和堆栈buffer在cpu的哪个存储区?

    A21:这个手册中并没有说明,最近讲的都是我总结出来的。这里希望给大家展示原理的探秘。手册即使没有说,但在老s7-400的手册中有提到:通信资源建立后,要在系统存储器中建立通讯缓冲区。所以对于400来说,shadow buffer是存在在系统存储器中。堆栈buffer在网卡的缓冲区里。对于300确切的位置手册里没有说。在建立通讯缓冲区时就是在建立通信资源,buffer都是独立分开的,开启shadow buffer就是在占用cpu资源。堆栈buffer都是存在的,只是用的协议不同,谁要用谁就建立连接占用这部分通信资源。


    Q22:OB1程序段里先通过TCON建立通讯,最后一行再TDISCON,CPU是真的在每个扫描周期都要重新建立一次通讯,然后再断开一次释放通讯资源吗? 会不会一个周期内无法完成?

    A22:我们在建立连接和断开连接的一个循环周期里,同样,如果我们使用一个wait指令,使用一个loop循环去循环三秒钟。有些事情如果大家想不清楚大家可以去延长cpu的循环周期。在最开始使用TCON建立连接,实际上并没有通讯起来,只是建立了资源和缓冲区,包括对应的端口号、ip等,都注册进去。结尾再TDISCON断开,资源就被释放了。是这样一个过程。

     

    Q23:一般有多个通讯的CPU,怎么把握CPU扫描周期设为多少合适?

    A23:大家还是自己去思考,如何优化设置多少合适。如果设置最小扫描循环周期为15ms,且cpu的代码执行是5毫秒,这是为了给更多的通讯让路,给更多的通讯分配额外的资源,但这就损失了你的循环周期,进一步损失了你的响应周期。这是一把双刃剑,可能会影响你实时的控制,那么你可以设置10ms,来满足你现场的控制。还是要看通讯有多少输入量。如果现场用到很多的连接,那么必须通讯优先,通讯荷载设置50%,为了通讯响应更好,那就要设置合适的循环周期,一方面保证我的通讯,一方面保障我现场控制的实时要求。

     

    Q24: 在通讯时,RT通讯为什么比Tcp快。

    A24:这个问题比较系统。第一,对于TCP/IP通讯和PN通讯,我们在总线上传输的速度是一样的,都是100兆,这一点大家可以忽略比较;第二,就是堆栈。上几节课我提到了关于ISO/OSI参考模型的堆栈,PN RT使用的第七层和物理层(也就是第一二层),中间没有TCP/IP,也就意味着应用层(第七层)的数据会直接加载到物理层上去,为什么PB DP也快,原因是一样的,都是第七层落到物理层。对于tcp/ip,它堆栈没有PN快,因为数据进来需要tcp的打包、需要ip的打包,再在接收时解包,堆栈角度没有pn快。还有一个条件在于我们的芯片,芯片性能要一致,要在同样的性能上做比较。还有一点在于数据处理,Shadow buffer对于通讯的处理。PN在数据发送中能以最小的以太网gap进行发送,以太网之间最小的时间间隔时12个字节,TCP做不到,因为他要存储、等待、加载,于是从发送的角度pn也比tcp快。综上三个角度,RT通讯比Tcp快。

     

    Q25:TCP的变长接收是什么原理呢?

    A25:原理很复杂,原因在于我们看TCp标准没有AD-hoc模式,我们只在接收方有这个参数,接收的CPU告诉网卡要截取堆栈缓冲区取得数据,然后给shadow buffer。如果是1460的字节,就不会出错,但如果超过1460,无法取得正确数据。例子中还按1024字节去发送,发送9次,TCP/IP接收不激活的情况下,接收端就堆满了,当滑动窗口放开,发送的数据就变为了1460字节,这样数据的位置会发生变化,导致不能收到正确的数据。ISO on TCP是最佳的可变长度协议。

     

    Q26:ISO on TCP与PC端也能通信吗?

    A26:ISO on TCP也是开放式通信协议,跟TCP UDP一样,只要 PC端支持,就可以和西门子的PLC做通信。

     

    Q27:S7协议和以太网协议有什么区别?

    A27:S7协议是西门子内部私有协议,不对外公开,只在西门子产品之间进行使用;是以太网协议的一部分,以太网协议范围很广泛。

     

    Q28:300跟第三方设备走tcp ip经常莫名断掉,每次都需要断电处理,有什么改善方法?

    A28:如果断开后再也连不上了,就说明通信资源被释放了,需要查询第三方设备的问题。

     

    Q29:TCP 和S7 协议怎么选择?

    A29:如果使用TCP,在底层处理效率会更高,因为S7是在加载TCP基础之上的。但是差异不明显,只是使用S7协议的时候,是在西门子产品之间;如果和第三方通讯的话,就要选择TCP协议。所以根据目标对象支持的协议进行选择即可。

     

    Q30:只用wireshark 与交换机连接,不是需要做端口镜像吗?

    A30: 不使用交换机,就要用tap 或者bany设备,bany scope是结合硬件设备去使用的。可以先买价格较低的tap做测试,性能上有一些缺点。如果大家想做这方面研究,性价比最高的是镜像,条件允许就买bany设备。

     


    ,或关注官方微信公众号-西门子工业1847俱乐部,了解更多相关信息。

    1847底部动图v2.gif

     


    • Course introduction

      课程介绍

      介绍ISO  on  TCP与TCP的对比结果,其具有什么特点。介绍UDP的特性,通过视频实例展示UDP通信的不安全性,如何判断故障,以及Shadow  buffer的特点,最后讨论如何使用UDP

      课程难度:高级 课程方向:工业网络,通信原理 课程标签:通信/网络 课程用途:专家大讲堂
    暂无评论

    赵欣

    专家