Petri Net如何将事件发送到外部设备?

问题描述

我目前正在构建一个控制器,该控制器应该带有一个Petri网,并根据从另一台设备接收到的输入事件,将输出事件发送到该设备。

问题是:Petri Net将如何向外部设备发射事件?

  • 当地点收到令牌时会触发事件吗?
  • 激活转换后是否会触发事件?
  • ...

解决方法

这些问题的答案取决于技术和/或应用。

例如,考虑一个应用程序,其中机器人在地板上的位置由鼠标控制。地板在计算机屏幕上显示,指针代表机器人的位置。应用程序中将使用鼠标按下、鼠标移动和鼠标抬起输入事件。当鼠标按下事件发生时,初始化机器人(输出)事件被发送到机器人。当鼠标移动事件发生时,移动机器人(输出)事件被发送到机器人。当鼠标向上事件发生时,暂停(输出)事件被发送到机器人。

图 1(PDF 版本)是控制逻辑与机器人和地板模拟相结合的令牌游戏。对于此模拟,计算机屏幕由 Transition T2 表示。 Transition T0 中的鼠标按下代表应用程序的鼠标按下,Transition T2 中的鼠标点击代表应用程序的鼠标按下。 Transition T2 中的鼠标移动会触发模拟中的移动机器人事件。机器人(红点)立即移动到新位置。

enter image description here

对于转换 T0 中的鼠标按下事件,输出事件是在启用转换时触发还是在转换输出触发时触发都无关紧要。这是因为当启用转换时,它预计最终会在短时间内触发。对于转换 T2 中的鼠标移动事件,移动机器人事件应该在转换启用时触发,因为转换 T2 在鼠标向上事件发生之前不会触发。

PDF 格式提供了动态和交互式图表:“How to Fire a Petri Net for Output Events” 带有 JavaScrtip+SVG 的 HTML 也可作为 PDF 文档的附件提供。