新手西门子PLC编程技巧,就是简单快速好用
本文通过例程的方式总结一些常用的西门子PLC编程技巧,从简单到复杂,从梯形图到SCL,希望对大家有所帮助。
(一)PLC系统常闭点
PLC程序的绝对常闭点,可以作为逻辑支路断开、调试或检修的屏蔽开关,尽量使用比较独立的存储位。(二)PLC系统常开点
PLC程序的绝对常开点,可以作为逻辑支路接通、调试或检修的接通开关,尽量使用比较独立的存储位。(三)PLC系统上电脉冲
PLC程序的系统上电脉冲,可以作为系统初始化脉冲来复位、清零和设置系统重要参数,尽量使用比较独立的存储位。
(四)一键触发启停功能
用一个按钮实现启动和停止功能,可以作为操作按钮不够时的一个补救措施。
(五)模拟量输入标定功能
将整数的模拟量标定为实数的工程量,相当于博途中自带的SCALE_X ,但该子程序结合高低量程限制后,标定和调试都更加方便。
(1)子程序调用
(2)子程序变量声明
(3)SCL代码
IF (#Emin < #Emax) AND (#Dmin < #Dmax) THEN
IF #Raw < #Dmin THEN
#RawTemp := #Dmin;
END_IF;
IF #Raw > #Dmax THEN
#RawTemp := #Dmax;
END_IF;
IF (#Raw >= #Dmin) AND (#Raw <= #Dmax) THEN
#RawTemp := #Raw;
END_IF;
#OutReal := (INT_TO_REAL(#RawTemp - #Dmin) / INT_TO_REAL(#Dmax - #Dmin)) * (#Emax - #Emin) + #Emin;
#OutPercentage := (#OutReal / (#Emax - #Emin)) * 100.0;
ELSE
#OutReal := 0.0;
#OutPercentage := 0.0;
END_IF;
(六)模拟量输出标定功能
将实数的工程量标定为整数的数字量,相当于博途中自带的NORM_X ,但该子程序结合高低量程限制后,标定和调试都更加方便。
(1)子程序调用
(2)子程序变量声明
(3)SCL代码
IF (#Dmin < #Dmax) AND (#Emin < #Emax) THEN
IF #Raw < #Emin THEN
#RawTemp := #Emin;
END_IF;
IF #Raw > #Emax THEN
#RawTemp := #Emax;
END_IF;
IF (#Raw >= #Emin) AND (#Raw <= #Emax) THEN
#RawTemp := #Raw;
END_IF;
#OutInteger := REAL_TO_INT(((#RawTemp - #Emin) / (#Emax - #Emin)) * INT_TO_REAL(#Dmax - #Dmin) + INT_TO_REAL(#Dmin));
#OutPercentage := ((((#RawTemp - #Emin) / (#Emax - #Emin)) * INT_TO_REAL(#Dmax - #Dmin) + INT_TO_REAL(#Dmin)) / INT_TO_REAL((#Dmax - #Dmin))) * 100.0;
ELSE
#OutInteger := 0;
#OutPercentage := 0.0;
END_IF;
RETURN;
(七)冒泡法排序功能
通过冒泡法升序或降序模式排序数组。
(1)子程序调用
(2)子程序变量声明
(3)模式为1(升序)的运行结果如下图所示:
(4)模式为0(降序)的运行结果如下图所示:
(5)SCL代码
IF #Enable THEN
//获取数组上限
#L := LOWER_BOUND(ARR := #Array, DIM := 1);
//获取数组下限
#H := UPPER_BOUND(ARR := #Array, DIM := 1);
//冒泡法排序
FOR #i := #L TO #H-1 DO
FOR #j := #L TO #H-1-#i DO
IF #Mode THEN
//升序
IF #Array[#j] > #Array[#j + 1] THEN
#temp1 := #Array[#j];
#Array[#j] := #Array[#j + 1];
#Array[#j + 1] := #temp1;
END_IF;
ELSE
//降序
IF #Array[#j] < #Array[#j + 1] THEN
#temp1 := #Array[#j];
#Array[#j] := #Array[#j + 1];
#Array[#j + 1] := #temp1;
END_IF;
END_IF;
END_FOR;
END_FOR;
END_IF;
(八)斜坡函数功能
输出值按照指定斜率(单位/秒)跟随设定值,可以用来防止数值突变,这个功能可以在博途中添加扩展库函数(LGF)后直接调用Ramp函数。
(1)子程序调用
(2)子程序变量声明
(3)SCL代码
#rv1:= RD_SYS_T(#ActualTime);
IF #InitFB = true THEN
#LastTime := #ActualTime;
#AuxOut := #SetPoint;
#Out := #AuxOut;
END_IF;
#DeltaTime_T:= T_DIFF(IN1:=#ActualTime, IN2:=#LastTime);
#DeltaTime_DI:= TIME_TO_DINT(#DeltaTime_T);
#DeltaTime:= DINT_TO_REAL(#DeltaTime_DI);
#DeltaTime := #DeltaTime / 1000.0;
#LastTime := #ActualTime;
IF #SetPoint < #AuxOut THEN
#Out := #AuxOut;
#auxR := #AuxOut - (#Rate * #DeltaTime);
#Out := #AuxOut;
#AuxOut := MAX(IN1 := #auxR, IN2 := #SetPoint);
#Out := #AuxOut;
RETURN;
ELSE
IF #SetPoint > #AuxOut THEN
#Out := #AuxOut;
#auxR := (#Rate * #DeltaTime) + #AuxOut;
#Out := #AuxOut;
#AuxOut := MIN(IN1 := #auxR, IN2 := #SetPoint);
#Out := #AuxOut;
END_IF;
END_IF;
RETURN;
例程说明
以上例程均在博途V15.1环境下测试通过,大家有什么好的编程技巧,欢迎留言!
如何快速学习西门子PLC编程?这有5个工控实例,看完的都入门了!
可编程控制器的分类
按组成结构:整体式、模块式和紧凑式
按I/O点数:大 (>1024)、中 (256~1024) 、小型 (<256点)
按功能:低、中、高档.
PLC硬件系统:输入部分;运算控制部分(CPU);运算控制部分(CPU)
可编程控制器的一个机器扫描周期是指用户程序运行一次所经过的时间。它分为执行CPU自诊断、处理通讯请求、读输入(输入采样)、执行程序、写输出(输出刷新)等五个阶段。
S7-200 CPU有两种工作方式:
STOP(停止)。 CPU在停止工作方式时不执行程序,此时可以向CPU装载程序或进行系统设置。
RUN(运行)。 CPU在RUN工作方式下运行用户程序。
在程序编辑、上/下载等处理过程中,必须把CPU置于STOP方式。
改变工作方式的方法:
使用PLC上的方式开关来改变工作方式。
使用STEP7-Micro/WIN32编程软件设置工作方式。
在程序中插入一个STOP指令,CPU可由RUN方式进入STOP工作方式。
使用工作方式开关改变工作状态。
用位于CPU模块的出/入口下面的工作方式开关选择CPU工作方式。工作方式开关有三个挡位:STOP TERM(Terminal)、RUN。
提供参与操作的数据地址的方法,称为寻址方式。
S7-200数据的寻址方式有立即数寻址、直接寻址和间接寻址三大类;有位、字节、字和双字四种寻址格式。用立即数寻址的数据在指令中以常数形式出现。
输入继电器线圈只能由外部信号驱动,不能用程序指令驱动。
输出继电器用来将PLC的输出信号传递给负载,只能用程序指令驱动。
数据存储区及元件功能
(1)输入/输出映像寄存器
(2)变量存储器(V)
(3)内部标志位(M)存储区
(4)顺序控制继电器(S)存储区
(5)特殊标志位(SM)存储器
(6)局部存储器(L)
(7)定时器
(8)计数器
(9)模拟量输入/输出映像寄存器(AI/AQ)
(10)累加器(AC)
(11)高速计数器(HC)
定时器的主要参数有定时器预置值,当前计时值和状态位。
计数器有一个16位的当前值寄存器和一位状态位。当前值寄存器用以累计脉冲个数,其设定值(预置值)在程序中被赋予;当计数器当前值大于或等于预置值时,状态位置1。
S7-200 CPU提供有三种类型的计数器:
增计数,
减计数,
增/减计数。
S7-200系列PLC支持SIMATIC和IEC1131-3两种基本类型的指令集,编程时可任意选择。
SIMATIC指令集是西门子公司PLC专用的指令集,具有专用性强、执行速度快等优点,可提供LAD,STL,FBD等多种编程语言。
IEC1131-3指令集是按国际电工委员会(IEC)PLC编程标准提供的指令系统。该编程语言适用于不同厂家的PLC产品,有LAD和FBD两种编辑器。
LAD图形指令有三个基本形式:触点、线圈和指令盒。
实例编程:
例1
图1.1为三相异步电动机正反转运行电路。起动时,合上QS,引入三相电源。按下正转控制按钮SB2,KMl线圈得电,其常开触点闭合,电动机正转并实现自锁。
图1.1
当电动机需要反转时,按下反转控制按钮SB3,KMl线圈断电,KM2线圈得电,KM2的常开触点闭合,电动机反转并实现自锁,按钮SBl为总停止按钮。
任务要求用PLC来实现上图所示的三相异步电动机的正反转运行电路
(1)I/O(输入/输出)地址分配
由上述控制要求可确定PLC需要3个输入点,2个输出点,其I/0地址分配如下:
I0.0:停止按钮SB1
I0.1:正转起动按钮SB2
I0.2:反转起动按钮SB3
Q0.0:正转运行用交流接触器KM1
Q0.1:反转运行用交流接触器KM2
PLC的外部硬件接线图
1)方案一:直接用“起一保一停”基本电路实现。
2)方案二:利用“置位/复位”基本电路实现。
3)方案三:利用栈操作指令实现梯形图及指令表。
例2
图2.1为两台电动机顺序起动逆序停止的控制电路图。按下起动按钮SB2,第一台电动机M1开始运行,5s之后第二台电动机M2开始运行;按下停止按钮SB3,第二台电动机M2停止运行,10s之后第一台电动机Ml停止运行;SBl为紧急停止按钮,当出现故障时,只要按下SBl,两台电动机均立即停止运行。
图2.1
任务要求用PLC来实现上图所示的两台电动机顺序起动逆序停止的控制电路,其控制时序图如下图所示。
I/O(输入/输出)地址分配
由上述控制要求可确定PLC需要3个输入点,2个输出点,其I/0地址分配如下:
I0.0:紧急停止按钮SB1
I0.1:起动按钮SB2
I0.2:停止按钮SB3
Q0.0:电动机M1运行用交流接触器KM1
Q0.1:电动机M2运行用交流接触器KM2
根据I/0地址分配及控制时序图可知,当起动按钮SB2被按下时,输入继电器I0.1接通,输出继电器Q0.0置1,交流接触器KMl线圈得电并自保,这时第一台电动机M1运行,5s之后输出继电器Q0.1置1,第二台电动机M2。
开始运行;当按下停止按钮SB3时,输入继电器I0.2接通,输出继电器Q0.1置0,第二台电动机M2停止运行,10s之后输出继电器Q0.0置0,第一台电机停止运行。梯形图及语句表如图所示。
例3
图3.1为三相异步电动机Y-△减压起动的原理图。KMl为电源接触器。KM2为△联结接触器,KM3为Y联结接触器,KT为起动时间继电器。其工作原理是:起动时合上电源开关QS,按起动按钮SB2,则KMl、KM3和KT同时吸合并自锁,这时电动机接成Y联结起动。
图3.1
任务要求用PLC来实现图Y-△减压起动的控制电路,其控制时序图如图所示。利用PLC基本指令中的串、并联及输出指令可实现上述控制要求。
例4
如图4.1是一个库门自动控制示意图。当有汽车接近库门时,超声波开关动作(超声波开关为0N),库门打开,直到上限位开关动作,汽车通过库门,红外线光电开关动作(汽车遮断了光束,光电开关为0N),汽车完全进入库门后,库门开始关门,直到下限位开关动作,完成一个自动控制过程。
图4.1
如图4-1所示,设小车在初始位置时停在右边,限位开关SQ2处于“0N”状态。按下起动按钮SB0后,小车向左运动,碰到限位开关SQl时,变为右行;返回限位开关SQ2处变为左行,碰到限位开关SQ0时,变为右行,返回起始位置后停止运动。
任务要求用PLC控制小车往复运动,用单序列的顺序功能图编程。
图4-1
(1)I/O(输入/输出)地址分配
由上述控制要求可确定PLC需要4个输入点,2个输出点,其I/O地址分配如下:
I0.0:限位开天SQ0
I0.1:限位开关SQl
I0.2:限位开关SQ2
I0.3:起动按钮SB0
QO.0:接触器KMl小车左行
QO.1:接触器KM2小车右行
小车往复运动的顺序功能图
小车往复运动的控制梯形图
例5
城市隧道要求24小时不间断照明,有时考虑到要节约用电和延长灯的使用寿命,需要分时控制,同时又要有足够的照明,如隧道中有A、B、C三组灯,每天早7点到晚7点,第1组灯亮,晚7点到晚10点3组灯都亮(车多),晚10点至第二天早7点第2、3组灯亮,要求用一个开关控制三组灯的亮和灭。
(1)I/O(输入/输出)地址分配
I0.0: 控制开关
QO.1、QO.2、QO.3: 三组灯
相关问答
西门子PLC编程是什么?难学吗?
梯形图,指令表,还好了不算太难,但是要是编完整的,工业实际需要的,也不是那么简单,要考虑很多东西。要是有高级语言基础。例如c++等,就好学点。编程还必须...
西门子plc编码器编程实例?
西门子plc的编码器编程的实例如下:使用PRV(062)指令,需要对数据逻辑存储器DM6642进行设置,方法如下即用手持编程器改变PLC设置PLC的开关放到PROGRAM状态下...
西门子s-200编程软件如何快速输入指令,怎样才能像其他PLC一眼,能够输入stx0oty1这也快速输入?
西门子200的是不行的。西门子和三菱啥的编程软件区别就在这里。西门子的操作是比较麻烦,熟练了就好了。最多你也就按一下F9可以调用一串的指令。西门子200的...
西门子PLC编程入门?
西门子PLC编程是一项复杂的任务,但是只要正确研究和学习,门槛并不高。步骤如下:1.了解西门子PLC的基本概念,比如应用类型、设备、指令集、调试方法等;2....
西门子plc测速编程实例?
以下是西门子PLC测速编程的一个简单实例:假设有一个通过PLC控制的电机,需要对其进行转速测量并控制其转速,可以采用下列步骤进行编程:1.定义变量:定义一...
我想买一台笔记本PLC编程西门子或者三棱需要安装什么程序...
如果想买笔记本最好买带工程接口的电脑,因为目前所有的笔记本电脑只有USB接口,再接PLC需要加USB转RS232串口,而且对学习PLC有一定的困难,因为数据传送时,会慢一...
西门子PLC编程软件是什么?-ZOL问答
软件S7-300PLC(SIMATICManager)S7-1200(TIAPortalV11)S7-200(V4.0STEP7...新版本编程软件STEP7-Micro/WIN...
西门子PLC功能块编程怎么用?
西门子PLC(可编程逻辑控制器)的功能块编程是PLC编程的一种方法,通过预定义好的功能块,来完成复杂的控制任务。以下是使用西门子PLC进行功能块编程的一般步骤...
西门子st60cpu用哪个软件编程?
应该是smart200系列的吧,可以用STEP7-MicroWINSMART编程软件应该是smart200系列的吧,可以用STEP7-MicroWINSMART编程软件
西门子编程用amd还是酷睿好?
没有区别。用来编程的话,锐龙和酷睿没什么区别,只要稳定就可以了。编程这类软件工程,主要学习算法、数据结构、操作系统等等理论知识,以及学习C,C++,Java...