利用摩尔语义建立交通灯模型
这个例子展示了如何使用摩尔语义对交通灯建模。摩尔图表只计算状态输出,不计算过渡输出。有关更多信息,请参见摩尔图的设计考虑因素.
摩尔交通灯的逻辑
在本例中,交通灯模型包含一个名为Light_Controller的摩尔图,它在五种交通状态下运行。每个状态代表两个相反方向(南北和东西)的交通灯颜色,以及当前颜色的持续时间。每个状态的名称表示从南北方向观察到的光的运行情况。
这个图表使用时间逻辑来调节状态转换。的后
运算符实现了一个倒数计时器,它在进入源状态时初始化。缺省情况下,由于东西方向的交通量较大,定时器在东西方向提供的绿灯时间要比南北方向长。东西方向的绿灯至少持续20分钟,但只要南北方向没有车辆到达,绿灯就可以保持绿灯状态。一个传感器检测是否有车辆在南北方向等红灯。如果是这样,交通灯将在南北方向转为绿色,以保持交通畅通。
Light_Controller图表的行为类似于摩尔机,因为在转换到新状态之前,它会根据当前状态更新输出:
停止
红绿灯为红色代表南北,绿色代表东西。
设置输出
y =红色
(南北)基于当前状态。设置输出
y2 =绿色
(东西)基于目前的状态。时钟滴答20分钟后,激活状态变为
StopForTraffic
.
StopForTraffic
-至少有20个时钟滴答声,交通灯红灯代表南北,绿灯代表东西。
设置输出
y =红色
(南北)基于当前状态。设置输出
y2 =绿色
(东西)基于目前的状态。检查传感器。
如果传感器显示车辆正在等待(
(sens)
为真),在南北方向上,主动态变为StopToGo
.
StopToGo
-交通灯必须响应传感器反向交通流。
设置输出
y =红色
(南北)基于当前状态。设置输出
y2 =黄色
(东西)基于目前的状态。3个时钟滴答后,激活状态变为
去
.
去
交通信号灯为红色表示南北,黄色表示东西。
设置输出
y =绿色
(南北)基于当前状态。设置输出
y2 =红色
(东西)基于目前的状态。时钟滴答10分钟后,激活状态变为
GoToStop
.
GoToStop
-交通灯已为南北绿色,东西红色,10个时钟滴答。
设置输出
y1 =黄色
(南北)基于当前状态。设置输出
y2 =红色
(东西)基于目前的状态。3个时钟滴答后,激活状态变为
停止
.
摩尔交通灯的设计规则
这个摩尔交通灯的例子说明了这些摩尔设计规则:
图表计算输出
日元
而且y2
在国家行动中。图表测试输入
sens
在转换的条件下。该图表使用时间逻辑,但没有异步事件。