直播课堂
HOME
直播课堂
正文内容
西门plc编程技巧 新手西门子PLC编程技巧,就是简单快速好用
发布时间 : 2025-02-23
作者 : 小编
访问数量 : 23
扫码分享至微信

新手西门子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环境下测试通过,大家有什么好的编程技巧,欢迎留言!

8个电气大神传授西门子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;

大家还有什么好的编程技巧,欢迎留言!

相关问答

西门子plc编程口诀?

首先理解数据格式,其次会用软件帮助,再来就是自己编程,最后就是学习各种模块。首先理解数据格式,其次会用软件帮助,再来就是自己编程,最后就是学习各种模块。

西门子S7-200SMART如何定义、编辑和选择符号?

你的问题,定义和编辑符号是PLC编程中都具备的功能;而这个选择符号,就可以理解为用符号地址来进行编程,符号是你自己定义的话,用符号编程在点数比较多的项目...来...

西门子plc编程好后怎么试运行?

在西门子PLC编程完成后,需要进行试运行,可以按照以下步骤进行测试。首先,确认所有的输入输出信号是否正确接线。然后,使用西门子PLC编程软件进行仿真,检查...

西门子plc编码器编程实例?

西门子plc的编码器编程的实例如下:使用PRV(062)指令,需要对数据逻辑存储器DM6642进行设置,方法如下即用手持编程器改变PLC设置PLC的开关放到PROGRAM状态下...

西门子PLC触摸屏如何编写程序?

西门子的PLC触摸屏使用西门子WINCC的编程软件对其进行程序编写。西门子plc编程软件支持新款CP243-1(6GK7243-1-1EX01-0XE0)。通过下列改进实现新的互联网向...

西门子plc485通讯怎么编程?

西门子PLC485通讯可以使用ModbusRTU协议进行通讯。以下是一个基本的ModbusRTU通讯程序编程示例:硬件环境搭建:主站设备:西门子S7-1200从站设备:DTD433FC...

西门子plc程序段怎么写?

程序段1:按下自动启动按钮,如果在小车在原点将执行第2步程序,小车不在原点将执行第1步程序。程序段2:小车后退,到达原点执行第2步程序。vb0写入的数值代表自...

西门子plc调试程序步骤?

调试步骤如下:确认硬件连接:检查PLC和外部设备的接线是否正确,如有需要请参考设备的安装手册。编写程序:使用西门子Step7-Micro/WIN程序软件,根据需要编...

西门子PLC功能块编程怎么用?

西门子PLC(可编程逻辑控制器)的功能块编程是PLC编程的一种方法,通过预定义好的功能块,来完成复杂的控制任务。以下是使用西门子PLC进行功能块编程的一般步骤...

西门子PLC编程时怎么输入上升沿指令符号?

在西门子PLC编程中,输入上升沿指令符号需要使用特殊字符“↑”。以下是具体步骤:1.打开西门子PLC编程软件,创建一个新的程序。2.在程序中选择要添加上升沿...

 洪昭光最新消息  王先胜 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2025  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部