问题描述
我是自动化专业不是CS的,相信很多学校这俩专业在一个学院,所以不会陌生。在工业自动化领域,PLC是最主要的控制器,对PLC的编程也是很常见的工作内容。PLC控制的对象大多是设备或者流水线。它接受各种传感器的输入,这些输入暂且分成两类,开关量(0,1)和模拟量的(比如0~65535代表全量程,通常是温度、流量、液位等),然后根据输入关系来控制输出。这些程序可以很复杂,几千上万行,但基本都是些条件判断语句,再加入各种连锁关系、定时、选择分支等,所以看上去很简单的逻辑,实际编程时候因为很多的互锁关系也变得很复杂。其实,在PLC编程实践中也形成了一些实用的方法,比如这样一个例子,路口的红绿灯,它的的逻辑大家都很清楚了。我可以写几句话来描述红黄绿等之间的关系,但关系复杂了文字描述的局限性就大了,而且对不同的人理解还可能有误。一种描述方法是SFC,状态转移表,还有通电表,这里就不插图了,参见链接:通电表:http://falogix.com/?post=44转台转移图:http://falogix.com/?post=49另外像流程图,时序图也可以用来描述逻辑。这些办法的共同缺点是不能很完整的描述系统的整个逻辑,各个方法只适合于描述某一类过程。比如通电表适合描述顺序动作;状态转移图如果太大就太难看。而电工的普遍素质没有码农高,很多都是大专、本科就足够了的,所以也没有CS里那么炫目的模型、算法等等。所以一般在编程之前,都是跟工艺的人了解清楚了流程,在小本上写写画画,就去编程序了。如果更进一步,有没有什么好的建模工具来描述工艺流程,一方面自己看着清楚,不至于流程复杂就乱了方向,另一方面方便的给别人看。其实就是控制逻辑的形式化。都说码农有文化,搞自动化的过来学习了。CS里的建模工具有没有什么适合这种关系复杂的逻辑关系建模。