故事作者:yang9188

最近创作

看看TA的故事

【工作笔记】 PTP系列之三,轮询

已锁定

yang9188

西门子1847工业学习平台

  • 帖子

    56
  • 精华

    2
  • 被关注

    31

论坛等级:侠客

注册时间:2020-08-31

钻石 钻石 如何晋级?

【工作笔记】 PTP系列之三,轮询

461

8

2025-09-12 11:42:48

    本篇是PTP系列的第三篇。

    管理通讯对话的机制包括许多种,比如事件触发,轮询等。本篇探讨比较常见的轮询机制。

    本篇的许多内容会提到AA。这是PTP系列的上一篇《PTP系列之二,通讯中的AA》,连接地址:

  https://www.ad.siemens.com.cn/club/bbs/PostStory_1963999_80.html#anch

     轮询机制是在AA的上一层(关于通讯编程的分层,我们下一篇简单讨论一下),是建立在AA基础上的。为什么这么说呢?轮询的最重要目的就是要保证在一个时期内,只有一个AA在占用端口(如果是PTP的话,那就是占用PTP口。)在AA篇中我们知道,用连锁信号来避免同时有多个AA同时占用端口。在轮询层,也要有避免多个AA同时占用端口的机制。这是轮询机制的一个作用。

    轮询机制的另一个作用是使得多个AA对话平等地都可以获得端口的占用权,以便实现所有AA的功能。

    我们举个例子。这个例子很简单,2个变频分子泵USS通讯。用RS485通讯,一个泵的地址是0,另一个泵的地址是1。这2个泵通讯时间占比要求是1:1。这种情况用轮询就可以了。本例子中没有用SIEMENS库中给的USS通讯块,而是自己创建的多个块协调工作实现通讯。

图 1


图 2


    这2个泵轮询的块都是“Polling+AA”(下文称“块”)。每个块管理一个USS泵。块内调用了上一篇中所讲的AA功能块,同时这个块还负责轮询。

    在这个例子中轮询的工作机制是这样的。每个块引脚定义了本块的轮询号码(PollingNo_This)。当系统的轮询号码(在块的引脚PollingNo_Current)等于本块定义的轮询号码时,本块拥有对通讯端口的使用权,那么本块可以发送和接收通讯数据用以控制相应地址的变频泵。当对泵完成读取和写数据后,那么本块会将下一个轮询的块(PollingNo_Next)赋值给        PollingNo_Current,以此交出对端口的控制权,而拥有下一个轮询号码的块得到端口的控制权,可以向通讯端口收发数据。这就完成了一次端口占用权的移交。移交过程反复上演,这样就轮询起来了。每个泵都可以得到有效的监控。

 

总结一下,轮询机制实现了通讯中最常用的“分时复用”的原则,分时复用的是通讯端口。

 

上文提到的轮询中,每个被控对象被轮询到的机会平等。还有一种需求就是轮询的机会要求不平均。此时可以创建一个轮询号码管理FB,并根据要求创建一个轮询表。这个表中可以任意填写轮询号码。每次“Polling+AA”块完成控制后,由轮询管理块给出下一个轮询号码。这样就实现了非平均轮询。


    有关轮询就先探讨到这里。如果各位同行对本篇所探讨的内容有什么疑问,请留言。我会尽量解答。

如果各位同行需要本例的例程,请留言。我会在本PTP系列结束时将例程发给各位

如果各位同行觉得本篇有帮助,请点击“有帮助”。非常感谢。如果您希望了解通讯或者其他领域的有关主题,也可以给我留言。


【工作笔记】 PTP系列之三,轮询 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

网友专栏

共有3465条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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