1

在关于这个主题的一些内部讨论之后,我正在寻找一些其他的意见。对于一个简单的序列,使用一些标准的梯形逻辑,您可以在梯级的开头设置序列步进位,并让梯级按顺序向下移动。您可以在梯级的末尾进行转换(通常将要进入的步骤编号移动到整数),它们也可以按顺序排列。当您有一个不按顺序流过的非平凡序列时,问题就来了。

您是组织逻辑以使左侧的位(您所处的步骤)井井有条,还是组织逻辑以使右侧的移动(您的转换)井井有条。当您转换到多个步骤时,您是否有从一个步骤位开始的多个移动,或者您是否有多个位触发一个移动?

一个例子:

你在追求什么

in 6 and X go to step 10
in 7 and Y go to step 10
in 21 and Z go to step 10

按您所在的步骤排序

XIC(step.6) and X mov 10
XIC(step.7) and Y mov 10
XIC(step.8)... 
...
XIC(step.21)and Z mov 10

按过渡排序

... mov 9
XIC(step.6)and X,XIC(step.7) and Y),XIC(step.21) and Z mov 10
...mov 11
4

2 回答 2

1

首先看一下:http ://en.wikipedia.org/wiki/Sequential_function_chart 切换到该 wiki 页面的意大利语版本,我在其中放置了示例图像和更多解释。

首先在一系列步骤和转换中将您的问题形式化,而不是轻松翻译:

(伪语言只是为了理解逻辑)

如果 (STEP_0 = true) AND (transition_0 = true) -> RESET STEP_0 和 SET STEP_1

如果 (STEP_1 = true) AND (transition_1 = true) -> RESET STEP_1 和 SET STEP_2

等等..

于 2013-03-30T10:41:04.130 回答
1

我强烈建议您将顺序功能图或 Grafcet 图视为一种设计工具,然后根据该图实现您的梯形逻辑。如果您查看 SFC 简单转换,您正坐在 STEP 中并等待下一个转换条件进入序列中的下一步。

因此,我建议将梯形逻辑与任何转换条件逻辑一起实现为您所在的“步”,然后在该转换条件为真时将步值设置为下一步。

这样做的好处是,您可以通过查看步骤编号来查看您的“程序”处于什么“状态”,而不是查看步骤编号并确定哪个步骤正在尝试转换到该步骤编号以确定你的序列状态。

于 2012-08-06T02:57:14.943 回答