我的plc工作经验总结,对新人还是很有帮助的 点击:2690 | 回复:3



xie336699

    
  • 精华:0帖
  • 求助:9帖
  • 帖子:13帖 | 44回
  • 年度积分:0
  • 历史总积分:134
  • 注册:2010年11月06日
发表于:2012-11-20 16:38:38
楼主

最近闲着没事,也看很多人似懂非懂,所以写了个知道教程,帮助新人理解程序

               Plc指导教程

本人工作有4个年头了,专业电气工作小3个年头,对plc编程还是比较快掌握的,主要看方法,所以特地写下来和大家分享一下。

我之前都是用松下和三菱,都属于日系plc,风格上比较像。后来回山东找工作,这边普遍是西门子欧姆龙ab等等,完全是另外一种风格。其实,只是风格不一样,编程思路都是一样的,要用编程的方法来学习,比如,都学过c语言,就以c的方式来学习,而不是这是什么牌子的plc。我完全按照自己的进度掌握了它们,2个月,有条件的话半月都可以,找了个出差的活,杯具ing。。。

先大概说一下学习的三个阶段:

1、      plc是对电气设备的控制和管理,就像所有的管理一样,要管理就需要有资源方法和手段。所以首先掌握plc的硬件资源和基本指令。什么型号,有多少io、继电器、寄存器、 指针、索引等等。还有基本指令的应用。着重强调一下指针或索引,指针就是取地址或取内容,索引就是个间接寻址,学过c或是单片机的就很容易了。

2、      理解程序。Plc是有电气上的动作的,但是程序的动作不是on/off,程序的动作应该是c讲的程序的3大思想:顺序、分支和循环,对应到plc就是顺序控制、各种跳转和循环。顺序控制就不说了,我总结过6种方法,看个人风格。跳转和循环也就是jumpfor。上个图。

A    B    C    D    E    F    G    H    I    J    是一串地址
LD   SM0.0
MOVD    &A    AC1  ‘将A的地址给AC1
MOVD    &B    AC2   ‘将B的地址给AC2

LD    SM0.0
FOR    VW0    1,    9  ‘外圈的循环

LD    SM0.0
FOR    VW4    1,    9    ‘内圈的循环

LDD>=    *AC1,    *AC2    ‘用>=比较AC1 和AC2的内容
JMP    1    ‘若是大于则跳转到标号1,否则不跳

LDD<    *AC1,    *AC2    ’用<比较
AC1 和AC2的内容 
MOVD    *AC1,    X    
MOVD    *AC2,    *AC1
MOVD    X,    *AC2    ‘若<,则交换
AC1 和AC2的内容  

LBL    1    ’不用比较的位置

LD    SM0.0
+D    4,    AC1
+D    4,    AC2    ‘比较完成将AC1和AC2指向下一个位置

NEXT    ‘进行内部循环

LD    SM0.0
MOVD    &A,    AC1
MOVD    &B,    AC2      ’完成一次内部循环后从新给AC1和AC2赋值

NEXT    ‘进行外部循环

这是西门子200的,这是个嵌套for的冒泡排序,可以找c的例子来练习一下。掌握了顺序、分支和循环才算是理解了程序。练习编程是不需要硬件的,只要有个模拟器就行了,电气动作不是程序。

3、      程序的使用。C规定什么是程序:程序就是算法加数据结构(plc是比较底层的应用),即是一组被动的数据和一组能动的过程组成,是一种面向过程的程序设计。把以上两条的综合应用就是3要说明的了。

掌握硬件资源和良好的分配就是对数据结构的控制,掌握顺序分支和循坏就是对程序的控制,再加上平时总结的小技巧就能编出有规有矩的程序,各种方便啊。

本人创建了一个qq群,初学的参考以上指导教程,只是问指令怎么用的就不要进了(2阶段及以上吧),206322389FA&PLC)。欢迎各行业人才进群。一代人做一代事,新世纪的工人们。


          Xdpplc技巧总结

都是从各处学来的,欢迎添加。

1、    bkmov块移动。正常用法:从#1开始的500个字移动到从#1000开始的500个字,这是用来转移已待命的数据。技巧:从#1开始的500个字移动到从#2开始的500个字,这是数据的快速移位,可以用来记录工作中发生的数据。

2、    并联转串联。A代表A接点,B代表B接点。比如,报警的时候,nA接点并联起来去驱动报警,翻两页都看不完,而且plc里还有并联条数的限制。技巧:把A接点换成B接点进行串联,并在报警前加“取反”,作用同上。并且可以很容易的给报警分类。另外,不只报警,动作驱动的时候也一样,比如手动自动,一目了然。

3、    输入点的时间滤波。输入点全部换成延时定时器,比如,气压的报警,动作多了气压会瞬间下降的厉害,瞬间的报警就没所谓了,再有,对一些动作的感应器,可以快速调整机器的反应。不需要的就把时间设为0

4、    缓存类指令。比如,在一个动作机构对应几个动作任务的时候,往往会用到先进先出或是后进先出,任务触发或是执行的时候加一个微分,在工作的间隙可以对缓存里的数据进行优化计算,重新调整顺序,而不只是按触发的顺序执行。

5、    停止。对设备状态分类的越详细,控制起来越轻松。比如,自动的时候有急停和暂停,暂停就是对应到一个辅助的待机位置停止。子程序嵌套的多的时候,一定要给急停停止加个顺序,以防状态呆住,急停也不是马上就停的。EMO是紧急关机(电),太紧急就按这个。

6     在来个凑字数的。顺序控制的一般方法。1、线圈法。这个是最基本的,程序小的时候很方便。2set/reset法。这个主要是用来记录程序的顺序状态的,不适合控制程序动作,容易混乱。3、移位法(shift)。个人觉得这个不容易修改,移位是从当前状态开始移,而当前状态不好判断。4,解码法(deco)。适合有严格时序的控制,很容易修改,看起来也直观。5、数值比较法(<=>)。同4类似。6、索引法。找一组连续的存储器进行顺序索引。

强烈推荐456。对于动作顺序不确定的时候,方便现场人员用屏幕来进行手动编程。比如,设备在状态0判断任务为哪一个,然后执行,然后指向下一个任务到状态0,再判断再执行。





王道火山--纵横军团

  • 精华:4帖
  • 求助:8帖
  • 帖子:226帖 | 1878回
  • 年度积分:10
  • 历史总积分:7850
  • 注册:2012年1月11日
发表于:2012-11-20 22:20:17
1楼

楼主  经验很好 谢谢分享 

 

资料1MP

xie336699

  • 精华:0帖
  • 求助:9帖
  • 帖子:13帖 | 44回
  • 年度积分:0
  • 历史总积分:134
  • 注册:2010年11月06日
发表于:2012-11-22 11:32:30
2楼
回复内容:
对:王道火山--纵横军团关于 楼主  经验很好 谢谢分享   资料1MP 内容的回复:

删了,现在不用图了。请无视

Zping123

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 266回
  • 年度积分:0
  • 历史总积分:145
  • 注册:2017年7月28日
发表于:2018-01-03 09:23:12
3楼

感谢分享感谢分享感谢分享


相关主题

官方公众号

智造工程师