如何提高PLC编程能力 点击:43349 | 回复:507



AncientSword

    
  • 精华:6帖
  • 求助:5帖
  • 帖子:162帖 | 802回
  • 年度积分:367
  • 历史总积分:12484
  • 注册:2006年10月16日
发表于:2017-09-24 22:33:13
楼主

在工控行业混迹了十多年,一直做与PLC相关的项目,就把自己的一些经验做个总结,由于水平有限,有不足之处还望各位多多指教。

我刚接触PLC的时候是拿着一本廖常初老师的关于S7-200的教材入的门,廖老师的书里讲的步进编程的思想对我之后的PLC编程影响很大,这个思想的好处就是一步一步的执行,当进入下一步的时候同时退出上一步,在程序中只有一个活动步,使程序逻辑很清晰,缩小了问题出现的范围,而且在编程之前先画出顺序功能图,如果顺序功能图画的完整,按照功能图做出的程序基本上就没啥问题了。不论大小项目最好画个顺序流程图出来,养成好的习惯能达到事半功倍的效果。以下曾经做过的一个顺序流程图。

    这个顺序功能图虽然花了不少时间,当时工期紧半自动都没试,直接投的自动,管道内可是焦炉煤气,同一根管道又进煤气又进空气,不停的切换,真是捏了一把汗,还好程序基本没啥问题。

    做程序还要进行规划,将程序分成不同的控制单元,尽量减少单元之间的联系,举个简单的例子,项目中要用到罗茨风机,风机口有气动阀门,要求开风机的时候先开阀门,再起动风机,停止的时候要先停止风机后关闭阀门,我们可以将风机和阀门看做一个整体,将风机的起动和停止作为一个单元,别的程序段只负责起动和停止风机,不管风机起动和停止风机单元内部的逻辑关系。

    作为一个合格的编程人员,程序和变量注释一定要写清楚,这是对编程人员最基本的要求,如果你还还在用绝对地址编程,那么需要想想自己是不是该换个工作了。

    另外就是做程序不要怕复杂,不要觉得难就不做了,我们做自控的也算个技术活,用户很容易被忽悠,这是我搞工控这些年经常看到的事,用户提出了要求,只要在合理范围之内我们要尽量去满足,当你完成一次次的挑战之后,你会发现曾经的鸿沟不过是个小水渠,做程序就要自己给自己找困难,流行的一句话就是没有困难创造困难也要向前冲。

对以上我总结五点:

1、编程要有正确的方法,也可称为编程的指导方法。

2、养成画逻辑图的好习惯,画图的过程就是程序构思的过程。

3、规划程序结构,将程序规划成不同功能的小单元,减少不同单元之间的联系。

4、养成建立变量名、增加变量和程序段注释的习惯,一是为自己编程方便,二是为别人读你的程序时方便。

5、不断的挑战自己的极限在能够最大的进步,用户的苛刻要求总是成为你不断进步的推力。

今天就说这几条吧,这说不上是技巧,只是一个指导思想。如果有时间在讲解一下PLC编程的技巧。

1分不嫌少!


楼主最近还看过



gk2017

  • 精华:0帖
  • 求助:1帖
  • 帖子:15帖 | 113回
  • 年度积分:350
  • 历史总积分:6194
  • 注册:2017年9月20日
发表于:2017-10-02 10:28:24
41楼

工程师 你好 你这个是一个什么窑炉的流程图么

QYL

  • 精华:0帖
  • 求助:2帖
  • 帖子:4帖 | 88回
  • 年度积分:0
  • 历史总积分:329
  • 注册:2016年5月17日
发表于:2017-10-02 14:24:25
42楼

楼主说得极是

hnnxlm

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 26回
  • 年度积分:0
  • 历史总积分:54
  • 注册:2011年10月03日
发表于:2017-10-06 11:09:38
43楼

赞下楼主,对初学者帮助很大啊。

丰李

  • [版主]
  • 精华:4帖
  • 求助:36帖
  • 帖子:953帖 | 4429回
  • 年度积分:31
  • 历史总积分:75678
  • 注册:2012年7月18日
发表于:2017-10-06 21:47:53
44楼

继续写下去,值得学习和拥有

Gongkongxd

  • 精华:0帖
  • 求助:0帖
  • 帖子:55帖 | 550回
  • 年度积分:90
  • 历史总积分:6502
  • 注册:2009年9月02日
发表于:2017-10-07 08:43:18
45楼

确实是这样的,,,,厉害

何处的风

  • 精华:0帖
  • 求助:3帖
  • 帖子:16帖 | 423回
  • 年度积分:54
  • 历史总积分:14371
  • 注册:2020年3月27日
发表于:2017-10-07 10:01:51
46楼


引用 丰李 的回复内容: 继续写下去,值得学习和拥有


702082362

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 26回
  • 年度积分:0
  • 历史总积分:32
  • 注册:2013年3月15日
发表于:2017-10-07 15:19:24
47楼

满满的干货。写出了PLC编程的精髓。感谢楼主的无私分享。

呵呵哒啊

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 64回
  • 年度积分:7
  • 历史总积分:603
  • 注册:2015年7月03日
发表于:2017-10-07 15:49:37
48楼

楼主体会很深呀 ,赞同楼主的观点!!!

没有积分

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 119回
  • 年度积分:0
  • 历史总积分:159
  • 注册:2017年10月06日
发表于:2017-10-07 16:31:24
49楼

正在学习中谢谢楼主分享!!!

fayezh

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 10回
  • 年度积分:0
  • 历史总积分:94
  • 注册:2014年11月14日
发表于:2017-10-08 14:41:11
50楼

回复内容:

对: 鲜花属于牛粪 按绝对地址读写有很大的限制,写程序的时候要对着IO表,... 内容的回复!

 说的的很有道理!!

请教一个基础的问题,你指的的绝对地址是不是例如I0.0这类的,变量指的是不是DB3000.DBX0.0这类的呢?

谢谢。

鲜花属于牛粪

  • 精华:6帖
  • 求助:5帖
  • 帖子:162帖 | 802回
  • 年度积分:367
  • 历史总积分:12484
  • 注册:2006年10月16日
发表于:2017-10-09 09:43:53
51楼


回复内容:

对: fayezh 回复内容:对: 鲜花属于牛粪  按绝对地址读写有很大的... 内容的回复!

你说的前半部分是对的,但是后半部分就不对了,拿西门的STEP7中的地址来说,I、Q、M、DB这些都是绝对地址,IB0.X,QB0.X,DB1.DBX1.0,M2.0同样都是绝对地址,符号地址就是用符号代替这些绝对地址,比如现在要控制一台变频电机的起停,我们要建几个变量,分别为远程\就地、运行、故障、驱动、起动、停止、频率反馈输入、频率设定输出,其中远程\就地、运行、故障为DI输入,驱动为DO输出,起动、停止为内部变量,用于触摸屏或上位计软件控制电机,频率反馈输入为AI输入,频率设定输出为AO输出。

开始分配地址:

变频电机位号:M101

用途                       绝对地址                          符号地址

远程\就地                 I0.0                            M101_Remote

运行                         I0.1                            M101_Run

故障                         I0.2                            M101_Fault

驱动                         Q0.1                          M101_Drive

起动                         M0.0                          M101_On

停止                         M0.1                          M101_Off

频率反馈输入         PIW256                        M101_Hz_Feedback_In

频率设定输出         PQW256                      M101_Hz_Set_Out

以上是一个电机控制的基本变量,绝对地址和符号地址写的很清楚,使用符号地址后,在STEP7编程环境下,可以查看符号地址的信息。在输入符号地址时常常不用全部输入,当如输入部分符号地址时,在输入的地方会智能的列出与输入部分相同的变量,这样可以很快的找到自己需要的变量。

绝对地址与符号地址的区别在于绝对地址是边用边定义,符号地址是先定义再使用。

L_Zhang

  • 精华:0帖
  • 求助:0帖
  • 帖子:33帖 | 765回
  • 年度积分:9
  • 历史总积分:783
  • 注册:2015年9月29日
发表于:2017-10-09 11:14:16
52楼

看到你们这么牛 好惭愧

鲜花属于牛粪

  • 精华:6帖
  • 求助:5帖
  • 帖子:162帖 | 802回
  • 年度积分:367
  • 历史总积分:12484
  • 注册:2006年10月16日
发表于:2017-10-09 11:59:17
53楼

如果有时间看看编程高手的程序,不一定能达到他们的高度,但是会让自己的格局打开,读懂高手的程序能让自己的思路变得开阔,看过复杂的程序能让自己明白自己目前的水平还需要不断的提高。网络上的教程的程序都比较简单,网上实例程序有些经过很多人的不单改善,是不少人的经验积累。西门子S7 200库的POU程序,S7 300库里的FB、FC程序对我们做程序都有很大的帮助,这类程序都可以在网上找到破解文件,用来打开。

秋风1999

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 2回
  • 年度积分:0
  • 历史总积分:52
  • 注册:2017年10月09日
发表于:2017-10-09 21:32:57
54楼

我们公司也有是窑炉控制  公司刚刚建立 然而我也是今年刚参加工作的实习生  现在主要工作就是打打杂 之前在学校学过三菱plc 西门子觉得很麻烦只看了一点  到现在看 工厂用西门子还是挺多的 工程师都说西门子的好用 想学 但是没有什么门路 

大猫七刀切

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 3回
  • 年度积分:0
  • 历史总积分:63
  • 注册:2017年9月11日
发表于:2017-10-09 21:35:53
55楼

学习!学习!请问公司不采用SFC编程,只用梯形图做类流程编程,有没有什么好的建议可以让程序更条理化?

鲜花属于牛粪

  • 精华:6帖
  • 求助:5帖
  • 帖子:162帖 | 802回
  • 年度积分:367
  • 历史总积分:12484
  • 注册:2006年10月16日
发表于:2017-10-09 22:32:13
56楼


回复内容:

对: 秋风1999 我们公司也有是窑炉控制  公司刚刚建立 然而我也是今年... 内容的回复!

其实上手最快的方法就是给你一个项目,从头负责到尾,经过一个项目的打磨,你就入门了,如果有这样的机会你要好好把握,以前公司培养人都是通过做项目锻炼出来的,能力都是被逼出来的。对于你刚接触PLC,用哪家的其实都差不多,用的品牌多了才能真正体会出各家产品的优缺点。

鲜花属于牛粪

  • 精华:6帖
  • 求助:5帖
  • 帖子:162帖 | 802回
  • 年度积分:367
  • 历史总积分:12484
  • 注册:2006年10月16日
发表于:2017-10-09 22:39:34
57楼


回复内容:

对: 大猫七刀切 学习!学习!请问公司不采用SFC编程,只用梯形图做类流... 内容的回复!

其实顺序功能图(SFC)只是一种编程的思路,实现的方法很多,之前我已经讲过了,你看看前面的帖子。不是每一家PLC都有SFC功能的,但是可以使用不同的指令实现。其思想简单描述就是步的转换,上一步作为下一步起动条件,利用下一步结束当前步。

鲜花属于牛粪

  • 精华:6帖
  • 求助:5帖
  • 帖子:162帖 | 802回
  • 年度积分:367
  • 历史总积分:12484
  • 注册:2006年10月16日
发表于:2017-10-09 23:01:28
58楼

常用的PLC编程语言主要有梯形图(LAD)、功能块(FBD)、语句表(STL)、结构化文本(SCL),在自控行业这些年见到用的最多的还是梯形图,但是梯形图有一定的局限性,Siemens的STEP7中,梯形图不能完全转换成语句表,功能块语言见过德国佬用过,语句表在STEP7中是功能最全的,可以进行断点调试,语句表在做数据运算和变址寻址方面很有优势。结构化文本类似于高级语言的编程,但是不能混为一谈,毕竟PLC和计算机的执行机制不同,在西门子的博图中好像舍去了语句表,代替它的就是结构化文本,如通用的PLC编程软件Codesys也是主推结构化文本。PLC在不断的扩大自己的应用范围,从一开始的逻辑运算、再到工程控制逐渐有了DCS的功能,再到后来的数控系统,软PLC,但是PLC还是有它的应用局限性,比如PLC与工业相机的结合远不如工控机那般灵活,工控机可以轻松实现CCD函数库的调用,而PLC却不能够完成这样的工作,从siemens1500的几款PLC中我感觉到到他们在计算机高级语言在PLC应用中做了不少的工作,而结构化文本这种类似于计算机高级语言的编程语言在PLC语言与高级语言之间的桥梁作用就会更为显著,所以个人觉得结构化文本将来的应用应该会越来越广泛。

鲜花属于牛粪

  • 精华:6帖
  • 求助:5帖
  • 帖子:162帖 | 802回
  • 年度积分:367
  • 历史总积分:12484
  • 注册:2006年10月16日
发表于:2017-10-09 23:09:02
59楼

PLC的学习是一个循序渐进的过程,熟悉指令的是学习PLC编程的第一步,刚开始不一定要把所有的指令都记牢,但是要了解PLC的指令都能够实现哪些功能,当用到的时候去再去找相应的指令就行了。当用到不同品牌的PLC时,根据自己原来使用的PLC的指令,去找当前使用的PLC的指令或实现方法,能够更快的掌握新的PLC的使用。

全州哥我

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 2回
  • 年度积分:0
  • 历史总积分:52
  • 注册:2017年10月10日
发表于:2017-10-10 23:47:18
60楼

回复内容:

对:鲜花属于牛粪 PLC的学习是一个循序渐进的过程,熟悉指令的是学习PLC编程的第一步,刚开始不一定要把所有的指令都记牢,但是要了解PLC的指令都能够实现哪些功能,当用到的时候去再去找相应的指令就行了。当用到不同品牌的PLC时,根据自己原来使用的PLC的指令,去找当前使用的PLC的指令或实现方法,能够更快的掌握新的PLC的使用。     内容的回复:

受教了,好好学习,准备背指令表


热门招聘
相关主题

官方公众号

智造工程师