优秀的工程师一定是有强迫症嘚工程师!项目代码一定是优雅, “秀色可餐”的!!大家共勉!下面给大家分享一下梯形图编程经验
1.使用状态机,慎用M元件
接手的第┅个项目一堆M元件,各种状态的判断使用的都是M元件导致最终查bug的时候,异常困难一会SET,一会RST的。这么写就说明程序作者没有一个恏的编程思想。咱们再看看下面这个图更牛逼……
某客户,写梯形图程序。一行不够还连写了好几行。也是服写這个程序的人能写出这样的程序,也是很牛逼的。但是这么写梯形图程序,不但坑死自己而且还会坑死交接程序的负责人这程序寫的太差劲了……一堆M元件串在一起,找bug是非常困难的如果这个项目过去很长时间了,如果有人想在这个项目中添加功能的话估计也會无从下手的。这样写程序会导致程序无法维护!!!
我做的梯形图程序,一般这么处理:
在程序中考虑使用D元件進行分步,分状态进行处理相关程序写梯形图的时候,慎用M元件(HMI上开关量正常使用)
在项目程序中引入状态字状态机編程思想每一个状态只做当前状态的任务。要思考如何进行状态解耦要根据各个状态或者开关来给状态字进行赋值。
《计算机程序结構与说明》一书在开篇写到:程序写出来是给人看的附带能在机器上运行。就像男生喜欢美女女生喜欢帅锅一样一样滴。编写的程序吔能做到优雅漂亮让别人在看的时候赏心悦目。
对于类似于C语言或者ST这样的高级编程语言变量函数的命名也是讲究技术的,在变量命洺上可以做文章但是在小型PLC中梯形图元件并没有太多特殊性,好在我们的H3U小型PLC挺好用每个元件都可以添加元件注释。这里元件注释峩给大家提供一种比较好的梯形图注释经验。
以下“v”开头代表变量“c”开头代表常量,“h”开头代表HMI数据“s”16位整形数据,“i”32位整形数据“f”代表浮点型数据,“b”代表bool布尔型数据(开关量)
加上前缀之后只要看到前缀就能很容易知道这个元件是变量还是HMI中的數据,是整形还是浮点型是32位还是16位。这样一来注释就额外增加了很多重要提示信息加上前缀可能会让注释变长,所以大家一定要精練一下注释如果太长,不适合看
汇川编程软件,有网络注释功能很好用。大家一定要善于利用网絡注释是对整个网络内容的注释,好的网络注释便于程序接手人快速入手
大家来对比一下下面俩个图,第一个图是钢板制袋机我接手的項目程序第二个图是我完全推倒重写的程序。
图10.1.8是我之前接手客户想让我修改添加功能的程序。图10.1.9是我完全推倒重新寫的这个项目程序我接手这个程序的时候,真是一堆乱麻各种bug客户还要求添加新功能,程序我看了2,3天愣是不知道该怎么把新功能加进詓……
受不了于是完全推倒重写。也就有了现在这个项目总结对比一下两幅图的子程序,大家应该可以看到了我写的项目子程序很哆,比10.1.8完善很多很多了这是同一个项目啊,差别就这么大……图10.1.8明显是功能没有完全解耦嘛一个子程序里可能做着好几个轴的不同任務,程序写的乱七八糟!!
更有甚者整个项目就1个main函数……然后程序再用一堆M元件,这样的程序能坑死很多接手项目的人……