新手西门子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环境下测试通过,大家有什么好的编程技巧,欢迎留言!
西门子1200PLC进阶篇——SCL语言(IF)语句
西门子1200PLC进阶篇——SCL语言(IF)语句
今天是大年初一,先给大家拜个年,祝大家新的一年财源滚滚,万事如意。
之前的文章中所有的编程都是梯形图(LAD)编程,今天开始我们一起来学习西门子S7-1200PLC的另一种编程方式——SCL结构化编程。
结构化编程是一种基于文本的编程语言。编程的时候之前的步骤和梯形图编程的时候一样,创建新工程,添加新设备等(如果不会操作,可以去看我之前发的基础篇中的内容)。
等全部创建好之后,我们要点击程序块中的“添加新块”
在跳出来的对话框中选择FB函数块或者FC函数,两个结果是一样的,语言选SCL语言,点确定。
接下来点击Main[OB1],将新建的块拖拽到[OB1]中的程序段1的线上,调用我们的函数。如果不调用的话,是不会执行FB或者FC中的功能的。
调用结束后,我们打开默认变量表(不会操作可以看我前面的文章),在默认变量表中设定输入输出。
设定好之后,鼠标双击我们新建的块,并选择最左边的“IF THEN”语句(下图红框最左边)。
语句的意思是:如果怎么怎么样,那就怎么怎么样。例程见下图
如果启动按钮等于“1”,那电机就开始运行。
程序写完之后,鼠标点击项目树中的“PLC-1”,然后点击编译即可。例程的程序等于下图中的程序:
以上是西门子S7-1200PLC结构化编程中的“IF THEN”语句,如有不对的地方,还请各位批评指正。
相关问答
三菱plcST语法基本语句?
关于这个问题,ST语言是三菱PLC(可编程逻辑控制器)中的一种编程语言,用于编写逻辑控制程序。以下是ST语言的基本语句:1.赋值语句:变量:=表达式;例如...
plc中char怎么转int?
po...首先char类型的必须是数字,将字符的数字转成数字,比如'0'转成0可以直接用加法来实现;例如:将pony表中的d进行排序,可d的定义为varchar,可以这样解决;...
abplc如何读取温控仪温度?
您好,要使用ABPLC读取温控仪的温度,需要使用以下步骤:1.确认温控仪的通信协议和通信方式,例如ModbusRTU、ModbusTCP、OPCUA等。2.根据通信协议和...
plc中的pr是什?-i3iFWBOS的回答-懂得
PR指令,功能是16个字符的ASCII码顺序向输出模块输出,直到结束符NUL(00H
信捷plc大于等于怎么输入?
在信捷PLC的ladderdiagram编程软件中,使用大于等于(≥)操作符时,需要使用符号:">=",这可以在程序代码中直接输入。例如,如果你要比较变量A是否大于等于...
西门子S7-300系列PLC应用程序设计,如何用PLC设计一套系统?
ioAutoFwd BoolioAutoBwd Bool写入代码然后编译:IF#iRunTHENIF#iManualModeTHEN#ioAutoFwd:=0;#ioAutoB...
英语翻译PLC电梯开门关门控制系统设计就这句~要是翻译的准我...
[最佳回答]PLCelevatorshutandopensystemsdesgin.你专业吗这个是?
plc中上升沿和下降沿的作用?
在使用语句表编写程序时让程序执行一个扫描周期,可以检测一个变量的上升/下降沿。如在IF语句置位复位一个变量,也可以在case中执行一个条件后立刻改变判断变量...
三菱PLC有哪些通讯模块?
1、通信扩展板FX2N-232-BDFX2N-232-BD是以RS-232C传输标准连接PLC与其他设备的接口板。诸如个人计算机、条码阅读器或打印机等。可安装在FX2N内部。其最大传...
西门子plc编程,如何学习SCL语言编程?
不要看的很神秘,和你小时候写作文一样,字词词组成语句子段引用文章,成了。字:字符,词:关键词名称词类型就是变量类型,句:if,段:有逻辑关联的一段...