【PLC应用技术】S7-1200 PLC的基本指令

发布时间:2025-06-07
来源:
点击:46

导读

本章节主要介绍西门子公司S7-1200系列可编程序控制器(PLC)的基本结构与应用特点,对它的编程环境及应用进行详细的讲解,结合实例介绍典型指令编程方法,并介绍PLC应用设计中应注意的主要问题。

程序控制指令

 

(1)跳转指令、跳转标签指令与返回指令

“若RLO=1,则跳转”指令JMP与“跳转标签”指令LABEL配合使用。当跳转线圈-(JMP)-的输入为“1”时,跳转到该指令顶部指定的标签处。程序块运行时总是按从上到下的程序段顺序执行的。跳转指令是跳转到标签所在的位置向下顺序执行,跳转指令与标签之间的程序段不执行。跳转时,可以向前或向后跳转,也可以从多个位置跳转到同一个标签处。但是,只能在同一个程序块中跳转,不能从一个程序块跳转到另一个程序块。在一个程序块内,跳转标签的名称只能使用一次。一个程序段只能设置一个跳转标签,标签的首字母不能为数字。

“若RLO=0,则跳转”指令JMPN与“跳转标签”指令LABEL配合使用。当跳转线圈-(JMPN)-的输入为“0”时,跳转到该指令顶部指定的标签处。

“返回”指令RET可以是有条件返回或无条件返回,其线圈上面的参数是返回值,数据类型为Bool。它的线圈通电时,停止执行该指令后面的指令,返回调用它的程序块。在块结束时不需要RET指令,系统会自动完成这一任务。

如果当前的块是OB,返回值被忽略。如果当前的块是FC或FB,返回值将传送给调用它的块,返回值可以是“1”(TRUE)、“0”(FALSE)或指定的位地址。

跳转指令、跳转标签指令和返回指令的应用如图2-56所示。在程序段1中,如果I0.0常开触点未接通,不执行跳转指令,则执行程序段2,进行电动机点动控制。执行完程序段3中的返回指令后,程序段4不会执行。如果程序段1中的I0.0常开触点接通,执行跳转指令,跳过程序段2和程序段3(不执行点动控制),直接跳转到程序段4中的标签处(LABELI),进行电动机连续控制。

2.png

2)定义跳转列表指令和跳转分支指令

使用“定义跳转列表”指令JMP_LIST,可定义多个有条件跳转,跳转到由参数K的值指定的跳转标签,跳转标签可以由指令框的输出DESTn指定。点击指令框中的图标,可增加输出DESTn的数量。输出从值0开始编号,每次新增输出后以升序继续编号。在指令的输出中只能指定跳转标签。S7-1200 最多可以声明32个输出。

K参数值将指定输出编号,程序将从跳转标签处继续执行。如果参数K的值大于可用的输出编号,则继续执行块中下一个程序段中的程序。在图2-57中,如果JMP_LIST指令的K值为0,跳转到标签LABEL0处:如果K值为1,跳转到标签LABEL1处;如果K值为2,跳转到标签LABEL2处;如果K值大于2,不跳转,继续执行下一个程序段。

3.png

 

“跳转分支”指令SWITCH根据一个或多个比较指令的结果,定义要执行的多个程序跳转。在参数K中指定要比较的值,将该值与各个输入提供的值进行比较。可以为每个输入选择比较方法,点击指令框中的比较符号,从下拉列表中修改该比较符号。

各比较指令的可用性取决于指令的数据类型,可以从指令框的“???”下拉列表中选择该指令的数据类型。该指令从第一个比较开始执行,直至满足比较条件为止。如果满足比较条件,则将不考虑后续比较条件。如果未满足任何指定的比较条件,将在输出ELSE处执行跳转。如果输出ELSE中未定义程序跳转,则程序从下一个程序段继续执行。

1749286551777.png

 字逻辑运算操作

 

(1)逻辑运算指令

1749286588707.png

①逻辑“与”指令AND是将输入按位进行相“与”,有“0”出“0”,全“1”出“1”,运算结果从OUT输出。AND指令的应用如图2-58所示,如果IN1的值为2#1010_1100,IN2的值为2#1100_0101,执行该指令后,结果为2#1000_0100。

②逻辑“或”指令OR是将输入按位进行相“或”,有“1”出“1”,全“0”出“0”,运算结果从OUT输出。OR指令的应用如图2-58所示,如果IN1的值为2#1010_1100,IN2的值为2#1100_0101,执行该指令后,结果为2#1110_1101。

③逻辑“异或”指令XOR是将输入按位进行相“异或”,相异出“1”,相同出“0”,运算结果从OUT输出。XOR指令的应用如图2-58所示,如果IN1的值为2#1010_1100,IN2的值为2#1100_0101,执行该指令后,结果为2#0110_1001。

④逻辑“求反码”指令INVERT(INV)是将输入按位进行取反,有“0”出“1”,有“1”出“0”,运算结果从OUT输出。INV指令的应用如图2-58所示,如果IN的值为2#1110_1111_0011_0100(整数-4300),执行该指令后,结果为2#0001_00001100_1011。

4.png

(2)编码和解码指令

“解码”指令DECO是读取输入IN的值,并将输出值中位号与读取值对应的那个位置位为“1”,输出值中的其他位以“0”填充。IN的数据类型为UInt,OUT 的数据类型为位字符串。当输入IN的值大于31时,则将IN的值除以32,用余数进行解码操作。利用解码指令,可以用输入IN的值控制OUT中指定位的状态。在图2-59中,执行DECO指令,如果其IN的值为6,OUT为2#0100_0000(16#40),仅第6位为“1”。

“编码”指令ENCO与“解码”指令DECO相反,将IN中为“1”的最低位的位数送到OUT指定的地址。IN的数据类型为位字符串,OUT的数据类型为Int。在图2-59中所示的界面中,执行ENCO指令,如果IN的值为2#0101_0000(16#50),OUT指定的编码结果为4,即最低位为“1”的位数是4。

5.png

(3)SEL、MUX和DEMUX指令

“选择”指令SEL是根据开关(输入G)的情况,选择输入IN0或IN1中之一,并将其内容复制到输出OUT。如果输入G的信号状态为“0”,则将输入IN0的值传送到输出OUT中。如果输入G的信号状态为“1”,则将输入IN1的值传送到输出OUT中。在图2-60中,如果G为“1”(M3.0为“1”),则将IN1的值(200)传送到OUT。

1749286753995.png

6.png

移位与循环移位

 

(1)左移指令SHL

SHL可以对位字符串或整数进行操作,从指令框的“??”下拉列表中选择该指令的数据类型。当使能输入端EN有效时,SHL 指令将IN输入端的数据按二进制向左移动N位,低位补“0”,高位抛出,结果存放到OUT指定的单元。在使用移位指令时,EN端要用脉冲输入,这是由于CPU扫描速度很快,EN输入端未及时断开,会造成多次移位。SHL指令的应用如图2-61(a)所示,指令执行前,MW10的值为2#0101_1011_0101_1011,见图2-61(b)。在10.0的上升沿,执行SHL指令,MW10的值按位向左移动1位,变为2#1011_0110_1011_0110,见图2-61(c)。

(2)右移指令SHR

SHR可以对位字符串或整数进行操作,从指令框的“??”下拉列表中选择该指令的数据类型。对字或双字操作:当使能输入端EN有效时,SHR指令将IN输入端的数据按二进制向右移动N位,高位补“0”,低位抛出,结果存放到OUT指定的单元。对整数或双整数操作:当IN 输入端为正数时,SHR指令将IN输入端的数据按二进制向右移动N位,高位补“0”,低位抛出,结果存放到OUT指定的单元:当IN输入端为负数时,SHR指

令将IN输入端的数据按二进制向右移动N位,高位补“1”,低位抛出,结果存放到OUT指定的单元。SHR指令的应用如图2-61(a)所示,指令执行前,MW12的值为2#10000000_0100_0100,见图2-61(b)。在I0. 0的上升沿,执行SHR指令,MW12的值按位向右移动2位,高位补“1”,变为2#1110_0000_0001_0001,见图2-61(c)。

(3)循环左移指令ROL

ROL只能对位字符串操作,从指令框的“??”下拉列表中选择该指令的数据类型。当使能输入端EN有效时,ROL指令将IN输入端的数据按二进制向左循环移动N位,最高N位移动到最低N位,结果存放到OUT指定的单元。ROL指令的应用如图2-61(a)所示,指令执行前,MW14的值为2#1010_0011_1010_0011,见图2-61(b)。 在I0.0的上升沿,执行ROL指令,MWI4的值循环左移3位,最高3位移动到最低3位,变为2#0001_1101_0001_1101,见图2-61(c)。

(4)循环右移指令ROR

ROR只能对位字符串操作,从指令框的“??”下拉列表中选择该指令的数据类型。当使能输入端EN有效时,ROR指令将IN输入端的数据按二进制向右循环移动N位,最低N位移动到最高N位,结果存放到OUT指定的单元。ROR指令的应用如图2-61(a)所示,指令执行前,MW16的值为2#1011_0011_1011_0011,见图2-61(b)。在10.0的上升沿执行ROR指令,MW16的值循环右移4位,最低4位移动到最高4位,变为2#0011_1011_0011_1011,见图2-61(c)。

7.png

 模拟量输入输出

 

(1)模拟量输入

①模拟量输入量程与模拟值。S7-1200 CPU 1214C集成了2通道模拟量输入(默认地址IW64和IW66,分辨率10位),只能使用0~10V的单极性模拟量电压输入。电压输入分为单极性和双极性,电流输入只有单极性。如果需要双极性或电流输入,可以选择信号模块SM1231或信号板SB1231。表2-7给出了单极性模拟量输入与模拟值之间的对应关系,其中最重要的关系是单极性模拟量量程的上、下限分别对应模拟值27648和0。也就是0~10V(或0~20mA、4~20mA)对应的模拟值为0 ~27648。

8.png

表2-8给出了双极性模拟量输入与模拟值之间的对应关系,其中最重要的关系是双极性模拟量量程的上、下限分别对应模拟值27648和-27648。也就是-10~10V、-5~5V、-2.5~2.5V或-1.25~1.25V对应模拟值为-27648~27648。

9.png

②模拟量输入模块接线与组态。模拟量输入信号模块SM1231 AI4X13 位的接线如图2-62(a)所示。DC为供电电源,要求使用24VDC供电。该模拟量输入模块有4个道,分别为通道0至通道3。每个输入通道的“+”连接模拟量输入信号的正极,模拟量输入的“–”连接模拟量输入的负极。比如可以将模拟量输入通道0的0+连接到模拟量输入电压的正极,0-连接到模拟量输入电压的负极。模拟量输入应使用屏蔽双绞线电缆连接模拟量信号,这样会减少干扰。

可以对模拟量输入信号的类型进行组态,通道0使用+10V模拟量电压输入的组态如图2-62(b)所示,可以看到该通道的地址为IW96,测量类型可以选择电压或电流,电压范围或电流范围也可以选择。

10.png

(2)模拟量输出

①模拟量输出的模拟值与输出量程。S7-1200的输出信号类型可以是电压或电流,分为单极性和双极性。表2-9给出了双极性模拟输出值与输出量程的对应关系,其中最重要的关系是双极性模拟输出值-27648~27648对应的输出量程为-10~10V。

11.png

表2-10给出了单极性模拟输出值与输出量程的对应关系,其中最重要的关系是单极性模拟输出值0~27648对应的模拟量输出为0~10V(或0~20mA、4 ~20mA)。

12.png

②模拟量输出接线。模拟量输出信号模块SM1232 AQ2X14位的接线如图2-63(a)所示。DC为供电电源,要求使用24VDC供电。该模拟量输出模块有2个通道,分别为通道0、通道1。每个输出通道的M为输出信号公共端,比如可以将模拟量输出通道0的0M连接到负载的负极,0连接到负载的正极。

在使用时,需要对模拟量输出信号的类型进行组态,通道0输出电流0~20mA的组态如图2-63(b)所示,可以看到该通道的地址为QW96,测量类型可以选择电压,输出电压范围+10V ;也可以输出电流,输出电流范围可以选择0~20mA或4~20mA。可以设定从RUN模式切换到STOP模式时通道的替代值。

13.png

免责声明:本站所提供信息均来源于网友提供或网络搜集,由本站编辑整理,如涉及版权问题,请联系本站管理员予以更改或删除
旗下服务
在线课程 现场培训
微信公众号
© 2019-现在 版权所有,并保留所有权利。ICP备案证书号:沪ICP备18011190号-4

沪公网安备 31011202007493号