研选课堂
HOME
研选课堂
正文内容
西门子plc编程的小技巧 新手西门子PLC编程技巧,就是简单快速好用
发布时间 : 2025-07-05
作者 : 小编
访问数量 : 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环境下测试通过,大家有什么好的编程技巧,欢迎留言!

西门子PLC编程的小技巧

为了PLC程序可读性强,短期内可以读懂并且能够修改,在PLC工作组内部需要统一我们的编程标准,以便适应将来工程人员调动后,原来的程序能够被后来的人在短期内读懂,现统一标准如下:

一、程序结构

1、程序结构统一

OB1:主程序;

OB100:初始化程序(无需主程序调用);

OB35:100ms(可修改)中断(无需主程序调用),可以调用PID模块;

OB80、OB82、OB85、OB86、OB87、OB121、OB122:故障诊断模块(无需主程序调用、无需编程);

FC1:系统模式;

FC2:输入处理;

FC3:输出处理;

FC4:运行处理;

FC5:停止处理;

FC6:手自动切换;

FC7:

。。。

。。。

FC100:之后用来建立一些可以循环调用的子程序;

FC105:系统自带,模拟量输入子程序(可以循环调用);

FC106:系统自带,模拟量输出子程序(可以循环调用);

modbus通讯(CP341):FB7:P_RCV_RK,FB8:P_SND_RK;

通讯CP340:FB2:P_RCV,FB3:P_SND;

一般PID:用FB41;

温、湿度PID:用FB58;

如果程序块与系统块重复,请避让。

2、数据块

DB1:AI数据,类型:REAL,与上位机接口;

DB2:AO数据,类型:REAL,与上位机接口;

DB3:DI数据,类型:BOOL,与上位机接口;

DB4:DO数据,类型:BOOL,与上位机接口;

DB5:设备运行时间及流量累计,类型:REAL,与上位机接口;

DB6:报警消息,类型:BOOL,与上位机接口;

DB7:类型:REAL,中间寄存器;

DB8:类型:INT,中间寄存器;

DB9:类型:WORD,中间寄存器;

DB10:类型:BOOL,中间寄存器;

DB11:之后用作与设备通讯用,例如:MODBUS通讯等;

DB100:之后用作调用FB块时的背景数据块;

M区:也作为中间变量。

3、DP从站故障诊断

DP从站必须做故障诊断,故障报警,用FB125即可。

二、控制模式

1、系统设置远程/本地/手动按钮

1.1、远程:只能通过上位机对系统进行自动启/停控制,单台设备就地控制优先,在程控时,可以通过上位机对设备进行软手操/自动切换,软手操启/停;1.2、本地:只能通过触摸屏对系统进行自动启/停控制,单台设备就地控制优先,在程控时,可以通过触摸屏对设备进行软手操/自动切换,软手操启/停;1.3、手动:手动控制时,上位机/触摸屏失效,只能通过手动控制设备的启/停。

2、单台设备控制

单台设备必须有软手操/自动切换以及软手操时可以启/停功能,由自动切换到软手操时,设备不能停机;由软手操切换到自动时,设备启/停取决于自动程序。

3、单台设备

(泵、风机及其它大型设备)运行满24小时必须进行轮换,且必须有运行时间累计,如果由上位机设定启/停顺序除外,操作人员自行设定;

三、编程技巧

1、程序块尽量细化,方便阅读,将同一类型的设备控制放在一个程序块中;

2、如遇特殊情况下采用语言编程,多数情况下请使用梯形图编程,方便别人阅读;

3、对于经常调用的子程序,可以做成子模块,频繁调用,例如:求几个数平均值或求几个数的最大值;

4、程序要有注释,变量及中间变量必须有描述,方便别人阅读或以后查阅;

5、定期做程序备份,最好以工程名称+系统名称+当天日期;

6、程序加密,防止别人窃取。

西门子PLC按照控制规模来分类

可以分为大型机中型机小型机

小型机: 小型机的控制点一般在256点之内,适合于单机控制或小型系统的控制。

西门子小型机有S7-200:处理速度0.8~1.2ms ;存贮器2k ;数字量248点;模拟量35路 。

中型机: 中型机的控制点一般不大于2048点,可用于对设备进行直接控制,还可以对多个下一级的可编程序控制器进行监控,它适合中型或大型控制系统。

西门子中型机有S7-300:处理速度0.8~1.2ms ;存贮器2k ;数字量1024点;模拟量128路 ;网络PROFIBUS;工业以太网;MPI。

大型机: 大型机的控制点一般大于2048点,不仅能完成较复杂的算术运。

相关问答

plc编程技巧口诀?

PLC中无非就是三大量:开关量、模拟量、脉冲量。只在搞清楚三者之间的关系,你就能熟练的掌握PLC了。1、开关量也称逻辑量,指仅有两个取值,0或1、ON或OFF。它...

西门子plc编程思路?

一、西门子plc编程思路基本的硬件知识编程之前,需要了解一些基本的硬件知识,最好从硬件的选型和画图入手,等把输入输出的类型,模拟量的选型等搞清楚之后,再...

西门子编程器使用方法?

需要准备的工具:西门子PLC编程软件,电脑。1、计算机系统应用语言在“控制面板”(ControlPanel)的“区域与语言”(Regionandlanguage)中确认。2、单击...

西门子plc编程口诀?

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

plc编程高级思路?

一、基本的硬件知识编程之前,需要了解一些基本的硬件知识,最好从硬件的选型和画图入手,等把输入输出的类型,模拟量的选型等搞清楚之后,再开始编程会简单点。...

西门子plc程序怎么插入一行?

在西门子PLC编程软件中,插入一行可以按照以下步骤进行:1.在程序编辑器中,将光标移动到您想要插入新行的行号上方,然后单击鼠标左键。2.在行号的左侧将出...

西门子PLC有几种指令编程方法?

西门子PLC(可编程逻辑控制器)有多种指令编程方法,其中常见的包括以下几种:1.指令列表(LadderDiagram,简称LD):这种编程方法使用梯形图表示逻辑关系和...西...

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

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

西门子plc的命令en怎么编写?

关于这个问题,"EN"是西门子PLC中的一个指令,它代表“使能”命令。它的编写方法如下:1.打开西门子PLC编程软件,创建一个新的程序。2.选择一个适合的块类型...

西门子plc程序怎么模拟运行?

要模拟运行西门子PLC程序,您需要使用西门子的仿真软件。以下是一些基本步骤:1.安装仿真软件:首先,您需要从西门子官方网站或其他渠道下载并安装适用于您PLC...

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

QQ

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

热线

188-0000-0000
专属服务热线

微信

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