最近闲着没事,也看很多人似懂非懂,所以写了个知道教程,帮助新人理解程序
Plc指导教程
本人工作有4个年头了,专业电气工作小3个年头,对plc编程还是比较快掌握的,主要看方法,所以特地写下来和大家分享一下。
我之前都是用松下和三菱,都属于日系plc,风格上比较像。后来回山东找工作,这边普遍是西门子欧姆龙ab等等,完全是另外一种风格。其实,只是风格不一样,编程思路都是一样的,要用编程的方法来学习,比如,都学过c语言,就以c的方式来学习,而不是这是什么牌子的plc。我完全按照自己的进度掌握了它们,2个月,有条件的话半月都可以,找了个出差的活,杯具ing。。。
先大概说一下学习的三个阶段:
1、 plc是对电气设备的控制和管理,就像所有的管理一样,要管理就需要有资源方法和手段。所以首先掌握plc的硬件资源和基本指令。什么型号,有多少io、继电器、寄存器、 指针、索引等等。还有基本指令的应用。着重强调一下指针或索引,指针就是取地址或取内容,索引就是个间接寻址,学过c或是单片机的就很容易了。
2、 理解程序。Plc是有电气上的动作的,但是程序的动作不是on/off,程序的动作应该是c讲的程序的3大思想:顺序、分支和循环,对应到plc就是顺序控制、各种跳转和循环。顺序控制就不说了,我总结过6种方法,看个人风格。跳转和循环也就是jump和for。上个图。
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阶段及以上吧),206322389(FA&PLC)。欢迎各行业人才进群。一代人做一代事,新世纪的工人们。
Xdp的plc技巧总结
都是从各处学来的,欢迎添加。
1、 bkmov块移动。正常用法:从#1开始的500个字移动到从#1000开始的500个字,这是用来转移已待命的数据。技巧:从#1开始的500个字移动到从#2开始的500个字,这是数据的快速移位,可以用来记录工作中发生的数据。
2、 并联转串联。A代表A接点,B代表B接点。比如,报警的时候,n多A接点并联起来去驱动报警,翻两页都看不完,而且plc里还有并联条数的限制。技巧:把A接点换成B接点进行串联,并在报警前加“取反”,作用同上。并且可以很容易的给报警分类。另外,不只报警,动作驱动的时候也一样,比如手动自动,一目了然。
3、 输入点的时间滤波。输入点全部换成延时定时器,比如,气压的报警,动作多了气压会瞬间下降的厉害,瞬间的报警就没所谓了,再有,对一些动作的感应器,可以快速调整机器的反应。不需要的就把时间设为0。
4、 缓存类指令。比如,在一个动作机构对应几个动作任务的时候,往往会用到先进先出或是后进先出,任务触发或是执行的时候加一个微分,在工作的间隙可以对缓存里的数据进行优化计算,重新调整顺序,而不只是按触发的顺序执行。
5、 停止。对设备状态分类的越详细,控制起来越轻松。比如,自动的时候有急停和暂停,暂停就是对应到一个辅助的待机位置停止。子程序嵌套的多的时候,一定要给急停停止加个顺序,以防状态呆住,急停也不是马上就停的。EMO是紧急关机(电),太紧急就按这个。
6、 在来个凑字数的。顺序控制的一般方法。1、线圈法。这个是最基本的,程序小的时候很方便。2、set/reset法。这个主要是用来记录程序的顺序状态的,不适合控制程序动作,容易混乱。3、移位法(shift)。个人觉得这个不容易修改,移位是从当前状态开始移,而当前状态不好判断。4,解码法(deco)。适合有严格时序的控制,很容易修改,看起来也直观。5、数值比较法(<=>)。同4类似。6、索引法。找一组连续的存储器进行顺序索引。
强烈推荐4和5和6。对于动作顺序不确定的时候,方便现场人员用屏幕来进行手动编程。比如,设备在状态0判断任务为哪一个,然后执行,然后指向下一个任务到状态0,再判断再执行。