8大实例教你:电气原理图与PLC程序转化,入门新手必备
项目一:电动机顺序启动、顺序停止控制
I/O分配表
梯形图
项目二:电动机顺序启动、同时停止控制
I/O分配表
PLC接线图
梯形图
项目三:电动机顺序启动、逆序停止控制
I/O分配表
PLC接线图
梯形图
项目四:电动机延时启动、停止控制
PLC接线图
梯形图
第二部分:三相异步电机的降压启动控制
项目一:笼型感应电动机定子绕组串电阻降压启动控制系统
I/O分配表
项目二:三相绕线感应电动机转子绕组串电阻降压启动控制系统
I/O分配表
PLC接线图
梯形图
项目三:星三角降压启动控制系统
PLC接线图
星三角降压起动控制(1)
星三角降压起动控制(2)
PLC接线图
梯形图
项目四:自耦变压器降压启动控制系统
I/O分配表
PLC接线图
梯形图
往期优秀文章回顾:
电气人专用三大口诀:PID、CAD、电气识图,全会的太牛啦
新手西门子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编程口诀?
首先理解数据格式,其次会用软件帮助,再来就是自己编程,最后就是学习各种模块。首先理解数据格式,其次会用软件帮助,再来就是自己编程,最后就是学习各种模块。
三相plc正确接线口诀?
您所提的plc的接线,我们日常应用当中很少见到你的三相Plc,一般片儿的c提供电源的有24伏的220伏的380伏作为他的电源,通过数字开关或者电子开关电源等等,这种...
时间继电器触点排列顺序?
时间继电器触点排列的顺序:左凸右凹,延头瞬尾;左凹右凸,瞬头延尾;凹凸都有,延头延尾、NO、NC看常态。凸凹是指触头的动触片上的动作方向呈凸形,或者呈凹形。...
铂电阻的三根线分正负极吗
本人认为,启动时变频器输出电压和频率是逐渐上升的,电机被水淋湿后,会造成输...http://doc.plcjs.com/doc_electr/electr_bpq/2006-9/1/0691232...
水电工入门书籍有哪些?_住范儿家装官网
先看电工入门,这本书只是笼统的介绍电工,让你对这行业有个大概的认识,可看也可不看。在你跟师傅学徒期间,看《电工识图》和《维修电工(中级)》,先和...
55kw4极380v电动机需5什么规格的电线.保险丝多大.空气开关多...
[回答]参照以下新实用电速算口。最诀新实用电速算口工(2009)口诀,速算,电工一、已知变压器容量,求其各电压等级侧额定电流口诀:容量除以电压值,其商乘六除...
忙哪位前辈,有谁能回复一下吗:服务好的KNX补偿导线合金丝找...
[回答]根据功率、工作电压计算工作电流,再根据工作电流选择导线横截面积.导线有铝芯、铜芯两种.相关到资料有这两种导线的安全载流量.简便估算导线载流量...