研选课堂
HOME
研选课堂
正文内容
plc和siemens编程 新手西门子PLC编程技巧,就是简单快速好用
发布时间 : 2024-10-11
作者 : 小编
访问数量 : 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编程?这有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怎么编程?

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

欧姆龙的plc和西门子的在编程上有什么不同的地方?

具体就要去看手册。欧姆龙的指令系统要比西门子丰富的多。而西门子在于灵活性,为灵活性付出的代价就是出错几率的提升。如果你对编程的理念非常清晰的话,是无...

西门子PLC编程是什么?难学吗?

梯形图,指令表,还好了不算太难,但是要是编完整的,工业实际需要的,也不是那么简单,要考虑很多东西。要是有高级语言基础。例如c++等,就好学点。编程还必须...

西门子的PLC是不是一个型号一个编程软件,是否有通用的编程软...

我有200的--我以前发的贴子有plc入门资料,电工初学入门视频有用(0)回复至少有硬件配置,OB,FB,FC和DB。有用(0)回复朋友你好。需要我这里有。649028603...

西门子s7-300/400系列的plc有哪些编程软件-ZOL问答

不过现在西门子主推TIA(博途),这个新的软件同时支持S7-1200和S7-1500等新系列的PLC系列型号,但这个TIA软件包体积很大,几十GB,而且对电脑的硬件配置要求也相对较...

PLC编程西门子与三菱有什么区别?

PLC编程西门子与三菱的区别主要体现在以下几个方面:1.编程语言:西门子PLC编程主要使用的是基于图形化编程语言的STEP7,而三菱PLC编程则主要使用的是基于文本...

西门子plc怎么控制伺服电机编程实例?

PLC与伺服电机之间通过伺服放大器进行链接PLC与伺服放大器之间使用以下三种方式:1、位置控制,即使用脉冲序列进行控制,PLC侧需要高速脉冲输出或者位控模块2...

西门子plc程序名称?

1.西门子200系列PLC编程软件为STEP7-MicroWIN。2.西门子200smart系列编程软件为STEP7-MicroWINSMART。3.西门子1200系列PLC推荐使用TI...

西门子200smart的cpu和编程软件怎么连接?

1,PLC与PC间连网线2,给plc上电3,打开step7-micro、winsmart4,双击屏区左区项目下CPU,选CPUSR40,出现系统块,IP192.168.2.1,子网俺码2...

西门子PLC与三菱PLC编程指令和编程语法可以通用吗?

西门子PLC与三菱PLC的编程指令和编程语法不可以通用。尽管PLC的基本原理相似,但不同品牌的PLC编程语言和指令集会有一些差异,例如西门子PLC使用基于结构化文本...

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

QQ

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

热线

188-0000-0000
专属服务热线

微信

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