Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns PLC编程的状态模式方法_Design Patterns_Structure_State_Plc - Fatal编程技术网

Design patterns PLC编程的状态模式方法

Design patterns PLC编程的状态模式方法,design-patterns,structure,state,plc,Design Patterns,Structure,State,Plc,我是一名受过训练的计算机科学家,来自一所大学,为我将要说的话做序言。在最近的一个项目中,涉及到人机界面(HMI)、条形码扫描仪和测序灯的使用,以及各种人类参与和解析数据等,我遇到了一个问题,即PLC编程的传统做法是将所有东西都放在主梯级上。当它接近40行时,涉水通过主横档变得非常恼人。我不想在某个屏幕上运行的逻辑,我每次都必须用一个等价的屏幕检查来阻止。总的来说,我相信传统模式会给我带来错误,而且我的应用程序调试起来非常困难。我知道人们有更大的项目,但我认为没有理由费力地通过一个可能达到50-7

我是一名受过训练的计算机科学家,来自一所大学,为我将要说的话做序言。在最近的一个项目中,涉及到人机界面(HMI)、条形码扫描仪和测序灯的使用,以及各种人类参与和解析数据等,我遇到了一个问题,即PLC编程的传统做法是将所有东西都放在主梯级上。当它接近40行时,涉水通过主横档变得非常恼人。我不想在某个屏幕上运行的逻辑,我每次都必须用一个等价的屏幕检查来阻止。总的来说,我相信传统模式会给我带来错误,而且我的应用程序调试起来非常困难。我知道人们有更大的项目,但我认为没有理由费力地通过一个可能达到50-70级的项目,更糟糕的是,甚至可能更糟

然后我意识到每个屏幕都是一个状态,它有私有功能,只有特定的屏幕需要这样做,因此我重新构造了代码,以反映每个屏幕只有它需要运行的功能。它很漂亮,我已经消失的bug,添加不会影响其他功能的功能是轻而易举的事,而不必担心什么影响了什么。回顾过去,我看到了我的逻辑是如何应用于传统模式的;然而,我认为,在我的程序中,这种模式更容易保持主梯级的大小,同时可以放心功能受到当前屏幕的限制

当我在屏幕上出现问题时,以这种方式进行调试也是非常有效的,我将在平均10个最大15个的阶梯上滚动,并且可以轻松地找出问题点。检查全局变量是快速有效的,因为如果必须在跳转到新屏幕之前更改屏幕,我可以将它们的状态更改为所需的状态


我是一个充满it的年轻工程师,应该坚持传统做法,还是这是一个对行业有用的创新?人们现在正在这样做吗

如果您熟悉Petri网,甚至是简单的状态转换图,您可能会想看看。

我真的很感激您这么做,并为等待已久的响应感到抱歉。我们最终使用了顺序函数图方法,它修复了所有问题。拥有顺序函数图是一个非常强大的工具,用于处理在下一个给定输入之前必须停止的任何事情。太棒了。我知道你是新来的。他们建议OP将答案识别为“回答”您的问题。