故事作者:羲

最近创作

看看TA的故事

【专家大讲堂】20191106PLC通信原理探秘系列之五:同步和异步——直播答疑

已锁定

总坛主 西门子1847工业学习平台

  • 帖子

    786
  • 精华

    3
  • 被关注

    49

论坛等级:奇侠

注册时间:2011-06-09

普通 普通 如何晋级?

【专家大讲堂】20191106PLC通信原理探秘系列之五:同步和异步——直播答疑

988

0

2020-08-10 17:49:08

直播时间:2019年11月6日(周三)19:30-20:30

 

主讲专家:赵欣

 

课程回看:

http://www.ad.siemens.com.cn/service/elearning/Course/2439.html   


Q1:Profinet执行IO通讯的时候算是同步还是异步?

A1:我们去访问外设IO的时候,如果这些地址都是在过程映像区内,那么它没有所谓的同步和异步的概念,因为这些IO数据实际上这是CPU循环周期的所刷新过程映象区所拿到的数据,所以针对于CPU的cycle,它没有参考物,就不存在同步和异步的概念。

而对于使用指令PIW/PQW这样的这个对外设地址的访问,那它都是同步的,因为它直接对外设IO区进行数据的采集,它是指令代码的执行,针对CPU的循环和指令代码的这个参考物,它是同步的,所以你回会立刻会得到这些数据。

 

Q2:这些理论老师是怎么知道的?通过什么渠道?

A2:首先这些知识没有官方的文档,并且在西门子手册或胶片当中也很少提及,这些都是我做了这个大量的研究所得出来的结论。其实我们这次的专家大讲堂,更多的是跟网友去做探讨与互动,希望能把这些总结后的理论知识传递给大家,这样的大家能够在日后的工作中事半功倍,同时还能能够去快速地解决和掌握这些知识。

 

Q3:CPU读取主机架的CP,还会涉及到七层网络模型吗?

A3:是的,因为CP卡本身就是一块网卡,对于ISO/OSI参考模型来说,网卡本身就是集成了4层的模型,那么只要涉及到通信,涉及到从接口当中的端口发送和接收数据,都必然会涉及到ISO/OSI参考模型,无论你是做422/485/232还是做profibus, Profinet,还是做交换机,做路由器,只要涉及到数据从一个端口出来到另外一个端口都会涉及到ISO/OSI参考模型。

 

Q4:同步异步问题在通讯类的应用中多发,是不是可以这么理解?

A4:这个问题,我不是很能看明白多发是什么意思。其实我们这堂课,研究的是同步和异步,但实际上对我们整个通信原理系列来说,对于所有的通信的功能块儿,包括我们前面所举的例子BSEND,都是异步来工作的和执行的,而我来拿同步是为了跟它做比较,是为了让大家能够知道:为什么这个功能块是异步工作的?为什么它会占用CPU的资源?这才是这堂课的目的。

实际上我们所看到的所用到的这个功能化,大部分都是异步的,同步的很少,所以它会占用CPU的资源。

课堂里也提到了用SFC51去读取,读取CPU故障灯、指示灯的状态,这个时候工作是同步的,如果在中央机架上,我通过SFC58/59去读写FM模板的数据和信息,那这些都是同步的,所以这个是给大家试做比照,我们做通讯的时候实际上都是异步的。

 

Q5:老师udp和tcp和PN 通讯有什么区别?

A5:这个问题因为涉及到三大协议,细论起来非常冗长。不过我可以给大家简单总结一下:他们三个的区别就在于他们协议本身的不同,所以他们就会有区别,那具体有什么区别?比如说UDP不是面于向连接的,TCP是面向于连接的。而UDP和TCP,其实都可以做实时通讯,但它的实质性没有profinet好,所以profinet做得更快,希望大家能够理解我所说的话。

 

Q6:可以这样理解不?一个周期能完成的通信就是同步通信,异步通信是CPU另开一个线程。

A6:不能这样理解。我们在说同步时,它的参考是指令,是CPU的循环周期,它在它的指令结束时结束,那他们就是同步的。而异步,就是它在指令结束的时候通信还没有结束,那所以它就是异步的, 它可能还需要几个循环周期来去完成,因而我们认为异步通讯至少需要两个周期才能结束。

 

Q7:赵老师以前你的一个回答 在通讯过程中,我们会涉及到很多的buffer,在做profinet 通讯的时候,IO的频率是非常快的,比如刷新值是2ms,CPU的扫描周期是20ms,那么在这种将IO运行了十圈的情况下,数据是没有丢失的,只是被后面的数据覆盖了。比如开始是0ms, 拿到的已经是20ms之后的数据了。 补充一下,并不存在“丢数据”的概念,只是“读”比较慢,所以无法拿到每一时刻的数据。如果想要获得全部数据,比如PIO的刷新是4ms,这种情况下如果CPU的cycle是20ms,基本就能获得全部数据了。是不是 PIO的刷新应该是40ms,cpu的cycle是20ms,基本上能够获得全部数据。4ms是不是打错了?

A7:这个问题与我们这堂课的关系不大,也用不上这堂课所讲述buffer、同步和异步的概念。这个问题很简单,实际上这里主要就是两个循环周期,我们怎么去匹配的问题,一个循环周期就是CPU的cycle,另外一个循环周期的就是profinet update time的时间,那对于profinet update time你设定了2毫秒,那么就意味着外设IO的数据的刷新是每隔两毫秒刷一次的。实际上CPU的扫描周期是20毫秒,那么就意味着CPU进行了10圈之后,我才能拿到这个数据。所以,拿到这个数据,确实就是在刷新10遍之后的数据,这个问题就是这样去理解。

 

欢迎大家继续盖楼讨论


【专家大讲堂】20191106PLC通信原理探秘系列之五:同步和异步——直播答疑 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

专家大讲堂课后探讨

共有137条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

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