h3u常见元件的使用经验
D元件非常常用
M元件也比较常用,但是要慎用:小型PLC梯形图编程经验分享
R元件基本不用
X元件很常用
Y元件很常用
T元件相对而言用的较少(定时场合还是要用到的)
C元件(接编码器高速计数必用,一般计数我基本不用)
下图几个看点:
左边的图说的是plc执行的过程,先读x状态,再执行用户程序,最后把y输出到物理硬件端口
右上边的接线图,粗线为分组,分组的端子共用COM,这样的好处是接线错了最多是烧一组,而不是全部都烧掉。
M元件的用法介绍:
慎用M元件,总结贴子如下:
去年总结的小型PLC编程经验,发布到这里来吧。留个坑,后续再补充补充完善下~
优秀的工程师,一定是有强迫症的工程师!项目代码一定是优雅, “秀色可餐”的!!大家共勉!下面给大家分享一下梯形图编程经验。
1.使用状态机,慎用M元件
图1.1一堆M元件
接手的第一个项目,一堆M元件,各种状态的判断使用的都是M元件,导致最终查bug的时候,异常困难,一会SET,一会RST的。这么写就说明程序作者,没有一个好的编程思想。咱们再看看下面这个图,更牛逼……
图1.2客户的牛逼程序
某客户,写梯形图程序。。一行不够,还连写了好几行。也是服写这个程序的人,能写出这样的程序,也是很牛逼的。。。但是这么写梯形图程序,不但坑死自己而且还会坑死交接程序的负责人,这程序写的太差劲了……一堆M元件串在一起,找bug是非常困难的。如果这个项目过去很长时间了,如果有人想在这个项目中添加功能的话,估计也会无从下手的。这样写程序,会导致程序无法维护!!!
我做的梯形图程序,一般这么处理:
图1.3采用状态机编程
在程序中考虑使用D元件,进行分步,分状态进行处理相关程序。写梯形图的时候,慎用M元件(HMI上开关量正常使用)
图1.4为状态字赋值
在项目程序中引入状态字状态机编程思想,每一个状态只做当前状态的任务。要思考如何进行状态解耦,要根据各个状态或者开关来给状态字进行赋值。
2.元件注释
《计算机程序结构与说明》一书在开篇写到:程序写出来是给人看的,附带能在机器上运行。就像男生喜欢美女,女生喜欢帅锅一样一样滴。编写的程序也能做到优雅漂亮,让别人在看的时候赏心悦目。
对于类似于C语言或者ST这样的高级编程语言,变量函数的命名也是讲究技术的,在变量命名上可以做文章。但是在小型PLC中梯形图元件并没有太多特殊性,好在我们的H3U小型PLC挺好用,每个元件都可以添加元件注释。这里元件注释,我给大家提供一种比较好的梯形图注释经验。
以下“v”开头代表变量,“c”开头代表常量,“h”开头代表HMI数据。“s”16位整形数据,“i”32位整形数据,“f”代表浮点型数据,“b”代表bool布尔型数据(开关量)
以下是我常用的注释前缀:
vb_布尔变量 vs_16位整形变量 vi_32位整形变量 vf_浮点变量
cb_布尔变量 cs_16位整形常量 ci_32位整形常量 cf_浮点常量
hb_HMI布尔变量 hs16位HMI整形 hi hf_
加上前缀之后,只要看到前缀就能很容易知道这个元件是变量还是HMI中的数据,是整形还是浮点型,是32位还是16位。这样一来注释就额外增加了很多重要提示信息。加上前缀可能会让注释变长,所以大家一定要精练一下注释,如果太长,不适合看。
图2.1元件注释举例
3.网络注释
图3.1元件注释举例
汇川编程软件,有网络注释功能,很好用。大家一定要善于利用,网络注释是对整个网络内容的注释,好的网络注释便于程序接手人快速入手。
4.功能解耦
大家来对比一下下面俩个图,我接手过不少几个小型PLC写的程序。有个别项目代码让我痛不欲生,我算是积累经验了,遇到这种代码,就自己花点时间重写吧,不要修修补补了……
4.1接手的坑爹程序
接手的时候,程序能正常跑,就是偶尔蹦个bug出来。程序根本没有框架而言,就依噶main函数,里面代码乱七八糟……维护这个程序,增加个别功能,真是费了老大劲……
这项目写出来,估计也就项目作者自己好改一点,交接给别人绝对都是坑人的……
给大家看一下我自己做项目的一个框架:
将整个设备分解,独立解耦成一个个子程序。每个子程序只干“同类型”的事情。将项目分解开来,模块化编程。

