通过示例来聊聊PLC编程思路
当我们在刚开始学习PLC时,可以通过一些简单的功能要求示例来进行自己编程仿真,要抓住功能要求中的一些细节来进行编程。
今天给大家带来的就是一个比较简单的机床滑台与主轴正反转控制的示例,通过这个示例来熟悉SCL编程的控制语句的使用和计数指令的调用问题。
首先,功能要求,示意图如下图所示:
功能要求:
当按下启动按钮,滑台前进,同时主轴正转,滑台前进到前极限SQ1,自动反转,如此反复,要求滑台每反复运动一个循环,主轴方向改变一次。当按下停止按钮,滑台和主轴都停止。
对功能要求进行分析:
1、按下启动,滑台前进,主轴正转,
2、当滑台到达前极限SQ1,滑台后退,主轴正转。
3、当滑台到达后极限SQ2,滑台前进,主轴反转。
4、当滑台再次到达前极限SQ1,滑台后退,主轴反转。
5、当滑台再次到达后极限SQ2,滑台前进,主轴正转。
通过上述对功能要求的分解,我们可以知道滑台的前进和后退,需要使用两个限位进行切换。
但是主轴的正转和反转的切换是靠后退极限进行切换,当第一到达SQ2时,主轴由正转切换至反转,当第二次到达SQ2时,主轴由反转切换至正转。所以,对主轴的方向转换我们可以使用计数的指令来实现,计数为1,则为正转,计数为2则为反转。
通过上面的这些对功能要求的分析,相信大家对本示例的编程应该有了一定的思路了吧。
下面对编程进行介绍和仿真:
首先我们还是建立一个FB,并对FB的接口变量进行一个定义:
下面对程序进行一个编程:
这里就是完全按照功能分析来进行的一个编程,这里用到了控制语句和计数指令的使用,(不熟悉控制语句和指令调用的可以参见我的专栏)
下面在OB1中调用FB,并进行仿真:
本例的源代码如下:大家可以在西门子博途中进行模拟仿真,当然了也可以关注我的专栏,我会将我做的示例做好示例库,分享给大家。
#SQ2_counter.CTU(CU := #SQ2,
PV := 2,
R := #stop);
IF #start AND NOT #stop AND NOT #SQ1 THEN
#PLAT_forward := 1;
#spindle_forward := 1;
ELSIF #stop THEN
#PLAT_forward := 0;
#PLAT_backward := 0;
#spindle_forward := 0;
#spindle_backward := 0;
END_IF;
IF #PLAT_forward AND #SQ1 THEN
#PLAT_forward := 0;
#PLAT_backward := 1;
END_IF;
IF #PLAT_backward AND #SQ2 THEN
#PLAT_backward := 0;
#PLAT_forward := 1;
END_IF;
IF #SQ2_counter.CV = 1 THEN
#spindle_forward := 0;
#spindle_backward := 1;
ELSIF
#SQ2_counter.CV = 2 THEN
#spindle_backward := 0;
#spindle_forward := 1;
END_IF;
12点PLC编程建议,全是老工程师经验总结
关于PLC编程,老工程师的12点建议:
01、 PLC和上位机(或触摸屏)组成监控系统时,在画面上很多时候需要有“手动”、“自动”等控制模式(一般都是多个只能一个时)。在程序里面可以用“MOV”指令。如:当选择“手动”就将常数1MOV到一个寄存器VB10里面,当选择“自动”就将2MOV到同一寄存器VB10。只要判断寄存器的数据是多少,就知道系统是那种控制方式。这样的思路好处是容易理解,不需要互锁之类的麻烦程序。
02、 程序有模拟量控制时,如果读取的模拟量基本上没误差,可以采取时间滤波的方式,延时一段时间。如果读取的数据误差很大,就需要采取其它的滤波方式,如算平均值等。可以查阅相关的资料。
03、 在程序调试过程中(特别是设备改造时,你的程序是加入到原来设备的程序中时),当程序语句中出现条件满足,而输出线圈不接通时,可以检查你的这段程序是否是在这样的语句之间,如JUMPgoto等语句。还有一种可能就是在中断程序之后,条件满足而没输出不接通,一般都是这段的程序不被扫描。
04、 在顺序控制程序时,即一个动作完成后,进入到下一个动作,等类似的顺序控制,采用+10+10控制模式,本人觉得很方便。其思路是:预置一个寄存器,在初始化时值为0,当系统启动后,对它+10,此时寄存器为10,寄存器等于10时可以做第一个动作;第一个动作完成后,再对寄存器+10,此时寄存器等于20,可以做第二个动作,第二个动作完成后又+10,此时寄存器等于30,这样只要判断寄存器里面数据为多少,就知道要完成那个动作。当需要跳跃动作时,可以不再+10,可以加+20+30....,看实际的需要而定。为什么加10而不是加1,因为加10之后,如果插入一段,只要在这10个空余的地方随便选择一个位置就可以了。
05、 在设计程序的时候,当出现工艺上的故障(非控制系统控制),最好将故障现象保持,并有灯光声音报警。直到操作工复位,以让其知道系统出现了故障。不然停机了,别人还认为你的程序出问题了,一般在设计一个新系统时是要注意到这些。
06、 对于经常调用的子程序,可以做成子模块,频繁调用。
07、 由于生产机械在工作循环中的各工步运动在执行时需要一定的时间,且这些时间都有一定的限度,因此可以以这些时间为参考,在要检测的工步动作开始的同时,起动一个定时器,定时器的时间设定值比正常情况下该动作要持续的时间长20%~30%,而定时器的输出信号可以用于报警或自动停机装置。当生产机械某工步动作的时间超过规定时间,达到对应的定时器预置时间,还未转入下一工步动作时定时器发出故障信号,该信号停止正常工作循环程序,起动报警或停机程序,这就是我们常说的超节拍保护。
08、 一些安全用检测开关(如急停按钮、安全光幕、极限开关等)使用常闭(NC)输入。
09、 为安全、节能考虑,尽量将输出设计成需要动作时才动作,一旦到位就停止输出,而不要设计成平时一直输出,需要停止时才让输出断开。
10、 执行元件的动作原则应当是宁可不动,也不要乱动!
11、 单台设备控制:单台设备必须有软手操/自动切换以及软手操时可以启/停功能,由自动切换到软手操时,设备不能停机;由软手操切换到自动时,设备启/停取决于自动程序。
12、 单台设备(泵、风机及其它大型设备)运行满24小时必须进行轮换,且必须有运行时间累计,如果由上位机设定启/停顺序除外,操作人员自行设定。
小贴士
为了助力大家的学习,小编特地为大家准备了电气人从业必备PPT 。这些PPT内容深入浅出,通俗易懂,图文井茂,覆盖面广。具有较强的实用性和可操作性。
相关问答
西门子plc编程思路?
一、西门子plc编程思路基本的硬件知识编程之前,需要了解一些基本的硬件知识,最好从硬件的选型和画图入手,等把输入输出的类型,模拟量的选型等搞清楚之后,再...
PLC怎么执行多个子程序?
PLC编程时,子程序的多少仅仅受内存大小限制,数量上是不受限制的,所以在内存足够的情况下,可以说有无限个。不过,子程序编程时,参数的传递数量是有限制的,...P...
plc编程没有思路怎么办?
思路嘛其实也并不难,你输入的是一个设定值和一个斜坡时间两个变量,另有一个变量是当前输出值,一个变量是当前计时时间,一共四个变量,对象模型就是在本次扫描...
大型plc编程电脑配置要求-ZOL问答
当涉及到大型PLC编程时,为了确保程序的高效运行和稳定性,电脑配置要求就需要一定的考虑。以下是一些重要的因素:1.处理器:处理器是PLC的核心组件之一,它负责...
plc编程逻辑怎么练?
首先需要掌握PLC编程基础知识,包括PLC的硬件组成、编程语言、指令集等。其次,可以通过实践来提高编程能力,例如通过模拟实际场景进行编程...要练习PLC编程逻...
plc逻辑思维训练方法?
首先你得领悟透你所用plc的编程语言,每个指令的灵活运用。在实践中好好模拟,把电路图转化为plc指令图。电路图与plc指令图互转很重要哦不要局限于plc本身,建...
plc编程步骤?
(1)根据控制要求进行I/O分配,(2)根据控制要求设计控制流程(3)画出PLC外围接线图,(电气原理图和气路原理图)(4)布置好元件;装好线槽,固定好...(1)根据...
plc程序如何编译?
PLC程序的编译通常是通过PLC编程软件完成的。以下是一般的PLC程序编译步骤:1.打开PLC编程软件:根据PLC品牌和型号选择相应的编程工具,打开对应的编程软件。...
plc的最大值和最小值编程方法?
PLC的最大值和最小值编程方法是通过使用比较指令来实现的。比如,使用比较指令来比较输入信号和设定的最大值或最小值,然后根据比较结果来执行相应的操作。具体...
plc编程怎么编高速运转与低速运转?
您好,PLC编程可以通过设置不同的速度参数来实现高速运转和低速运转。1.高速运转编程:(1)确定高速运转的条件,如传感器信号、计数器数值等。(2)设置高...(...