成为更好/更高效的PLC程序员

Fai*_* S. 13 performance plc

我正在做我的船员/ appretinceship公司,主要是用西门子模块进行PLC编程.事实上,大多数人都是电动人员并转投工程学.

我作为新手的问题是,当我编写PLC软件时,我不能真正高效和快速.

即使我在VS/Eclipse中编写C#或Java时非常有效

与"真正的"编程语言相比,我无法用PLC实现高效率.

  • 是否缺少代码完成?
  • 是否缺乏自动化方面的整体知识?
  • 与VS(LINQ,Dynamics,Lambda)相比,PLC缺乏创新吗?

你们对PLC有什么好的经验吗?你是如何通过它获得高效的?

注意:这是我去公司的最后一年,这也是我想要提高工作效率的原因.

期待许多伟大的答案!

Ira*_*ter 26

PLC编程在几个方面与传统的程序编程不同:

1)Relay Ladder Logic是一个相当原始的语言.很难有所作为.大多数PLC程序员不使用子程序; 它几乎就像PLC世界是时间和软件工程忘记的那样.您可以通过应用简单的软件工程方法来做好,例如,定义代码块之间的接口,即使是抽象的.

2)许多PLC编程都与布尔方程有关.如果你想要擅长PLC编程,就要努力处理布尔逻辑:学习布尔代数,特别是像De Morgans定理那样在AND和OR之间分配NOT(因为PLC通常不提供NOT运算符,你需要这个那么你经常会更多的时候)

3)了解PLC编程是关于实时控制和反馈的.如果有的话,大多数标准编程语言(例如Java)都很难解决这个问题.仔细考虑PLC代码是驱动输出的逻辑这一事实,并且被驱动的机械系统实际上是驱动PLC输入的"逻辑".我经常使用另一台PLC建模机械系统,只是让我调试我的PLC程序而无需真正的工厂机器来控制.这也可以让你模拟失败; 见第6点.

4)许多PLC编程都抽象地从状态转换到状态,其中状态表示PLC对外部世界的了解,并且当PLC读取外部输入并发现世界状态有所改变时发生转换.尽可能多地了解有限状态自动机和离散系统的监督控制.它会给你很好的报酬.

5)PLC经常需要记住过去的事件.因此,许多PLC逻辑都与设置/重置/测试布尔/数字状态变量和/或定时器有关.因此,虽然PLC程序的代码通常看起来像纯逻辑,但事实上它有很多副作用,这使得对程序的推理相当困难.事实上,就像用C或Java等更现代的语言写作一样困难.

6)注意处理机械故障.大多数PLC程序假设受控系统的工作方式与宣传的一样; 这真的很糟糕.在现实世界中,控制系统的工作原理只是广告,直到它打破了,它总是最终确实.如果您包含诊断代码以帮助确定PLC程序中的机械损坏,那么编写它们需要更长的时间,但用户会爱上你,因为没有什么比工厂机器更糟糕了但它不会告诉你你怎么.停工厂是一台停止的自动取款机,工厂经理讨厌这样做.

  • 它几乎就像PLC世界是时间和软件工程忘记的那样.< - 这是真的...... (7认同)
  • 事实上,RLL的演变对于"你可以通过改进它来破坏某些东西"这一观点具有极大的指导意义.RLL的原始形式是继电器和电流的纯粹语言,没有副作用,也没有长距离效应; 电工*可以*读它.然后一些聪明的家伙添加了内部状态,GOTO(跳过大型昂贵程序中的大块梯级)和副作用,它从纯粹的声明性并行副作用自由语言变成了一个真正可怕的程序语言版本.你可以在循环中使用PASCAL程序. (4认同)

小智 9

当所谓的"真正的"程序员蔑视PLC编程时,这让我感到恼火.这里的几篇文章暗示了PLC编程本身就是一门学科的基本事实.

"了解PLC编程是关于实时控制和反馈的.大多数标准编程语言(例如Java)都解决了这个问题."

"因此人们开始提出用于结果和逻辑矛盾检查的分析工具,单独的时间和状态建模等,实际上并没有使事情更简单,并且偏离了减少问题空间的工程原理."

暗示梯形逻辑是"忘记纪律时间"是贬低执行它的功能的工具.毕竟,Ladder是实际代表软件中物理设备的第一种语言 - 它是面向对象编程作为范例的发源地.

此外,我们不要忘记PC和基于PC的控件完全不值得信任.它崩溃了; 组件过时,不能在几年内购买,充其量; 它崩溃了; 它被病毒和人们把"大金刚"放在他们的工作站上而被腐蚀了; 它崩溃了; 无聊的操作员在第三班卸载软件; 我提到了,它崩溃了吗?

在PC世界这么多年所谓的"进步"之后,PLC继续存在,因为到目前为止,个人电脑仍然是添加了虫子的一次性商品.你的数百万美元的装配线不是.

最后,我坚持了幽默测试 - 让我感到震惊的部分是看到IT人员试图编写PLC代码.我们似乎得到的永无止境的问题(字面上和比喻上)是,"当我跳回到程序的开头时,为什么会出现看门狗错误?" 或者另一个个人喜爱的 - "如何在梯子上写下一个下一个循环?"

两者都背叛了对PLC如何工作的基本缺乏知识,并进一步说明自动化编程是一个单独的学科,需要单独的工具.

TM值

  • ...例如,在我现在使用的Beckhoff结构化文本工具中创建一个函数需要半打菜单和一个新文件添加到项目中.结果,我正在修复的PLC程序有大约5个函数,其中几乎10,000行代码被传播,它们都按顺序执行 - 架构只是一个巨大的功能.在其他语言和工具中,该功能将在几个组件之间分开,每个组件具有十几个功能,具有定义良好的接口,并且可能仅需要3,000行代码. (4认同)
  • @TMo - 贬低工具的历史意义和当前效用,贬低其对模块化,可测试性和版本控制等现代软件工程实践的无知之间存在差异:许多PLC程序导出不易版本化的二进制blob.它能够由技术人员,电工和机械工程师阅读和编写,但是因为它针对非程序员,所以它需要更多的东西来鼓励良好的编程实践. (3认同)