基础实用入门的西门子S7-200PLC学习笔记
一、输入信号:I0.0-I0.7; I1.0-I1.7
二、输出信号:Q0.0-Q0.7; Q1.0-Q1.5
三、继电器:M0.0-M31.7;共256位
四、时间继电器(从T37开始编):通电延时(TON)
有记忆的通电延时(TONR)
断电延时(TOF)
图1
以图1为例,IN为输入信号,TON表示这个时间继电器是通电延时,T37表示这个继电器命名为T37,100ms是单位基数, PT为延迟时间
时间继电器延迟时间算法:PT时间单位基数;图1中延迟时间为100100ms=10000ms=10s
五、计数器(C0-C255):增计数器(CTU)
减计数器(CTD)
增减计数器(CTUD)
图2
以图2为例,C1表示这个计时器命名为C1,CTU表示这个计数器为增计数器,CU为触发信号,R为复位信号,PV为计数次数
提示:1. 计数器CU端与R端不能存在or状态
2.计数器要从最左端主线直接输入信号
3.一个网络里只能有一个计数器
六、上升沿(P):上升沿触发,当输入信号状态由0—1则发生动作,反之由1—0则不动作
下降沿(N):下降沿触发,当输入信号状态由1—0则发生动作,反之由0—1则不动作
七、特殊功能寄存器(SM):
SM0.0:使运行时一直为1,是常ON继电器,一般用在程序开始最左侧第一位置,办证每次都扫描;
SM0.1:是CPU第一次上电运行时动作一次,也就是一个上升沿,一般作为初始故障复位使用;
SM0.2:当机器执行数学运算结果为负时,该位被置1;
SM0.3:开机后进入RUN方式,该位被置1一个扫描周期;
SM0.4:是以1min为周期的脉冲波形,可以作为计数器触发使用;
SM0.5:是以1秒为周期的脉冲波形,可以作为计数器触发使用;
SM0.6:为扫描时钟脉冲,首次扫描为1,下次为0,在下次为1,以此类推;
SM1.0:当执行某些指令,其结果为0时,将改位置为1;
SM1.1:当执行某些指令,其结果溢出或非法数值时,将改位置为1;
SM1.2:当执行数学运算指令,其结果为负数时,将改位置为1;
SM1.3:试图除以0时,将改位置为1。
八、顺序控制继电器(S):
顺序控制继电器区为顺序控制继电器的数据而建立一个存储区,用S表示;可以按位、字节、字、双字四种方式来存取。
(1)位:S0.0-S31.7,共256点
(2)字节:SB0-SB31,共32字节
(3)字:SW0-SW30,共16字
(4)双字:SD0-SD28,共8个双字
注:程序中S上方是置位的起始位置,下方的数字是从起始位置开始的总点数,如图三表示从Q0.0开始置位三个点(Q0.0,Q0.1,Q0.2);R的上方下方表达意思与S一样。
图3
九、复位(R):用法与顺序控制继电器一样,顺序控制继电器是置位,R为复位。
十、跳转指令与标签指令
跳转指令(JMP):在预置触发信号接通时,使程序跳转到标签处执行;
标签(LBL):标记跳转的目的地位置;
JMP与LBL指令上方的数字为对应的位置,即当JMP指令上方数字为n时,接通时会自动跳转到相对应的上方数字为n的LBL命令的位置来执行程序,常用来切换两个不同工作状态下的不同的程序。
十一、高速计数器(HC)
用来累积比CPU的扫描速率更快的事件,计数过程与扫描周期无关。
十二、累加器(AC)
用来向子程序传递参数和从子程序返回参数,或用来临时保存中间的运算结果。
十三、程序组织单元(POU)
将主程序、子程序和中断程序统称为程序组织单元(POU),各POU都有自己的64B的局部存储器;使用梯形图和功能模块图时,将保留局部存储器的最后4B。
十四、局部存储器(L)、变量存储器(V)
仅在它被创建的POU中有效,各POU不能访问别的POU的局部存储器;变量存储器(V)是全局存储器,可以被所有的POU访问。
十五、模拟量输入(AI)
AI模块将连续变化的模拟量按比例转换为一个字长(16位)的数字量,用区域标识符AI、表示数据长度的W(字)和起始字节的地址来表示模拟量输入的地址,例如AW16,模拟量输入值为只读数据。
十六、模拟量输出(AQ)
AO模块将长度为一个字的数字转换为现实世界的模拟量,用区域标识符AQ、表示数据长度W(字)和起始字节的地址来表示存储模拟量输出的地址,例如AQW32,模拟量输出值是只写数据,用户不能读取模拟量输出值。
十七、使能输入与使能输出
梯形图中,用方框镖师某些指令,例如定时器和数学运算指令,通常方框指令的输入端在左边,输出端在右边;能流从左至右,不能有短路、开路和反方向的能流,前一个方框的输出可以作为后一个方框的输入。
十八、移位指令与循环移位指令
梯形图 | 语句表 | 描述 |
---|---|---|
SHR_B | SRB OUT,N | 右移字节 |
SHL_B | SLB OUT,N | 左移字节 |
SHR_W | SRW OUT,N | 右移字 |
SHL_W | SLW OUT,N | 左移字 |
SHR_DW | SRD OUT,N | 右移双字 |
SHL_DW | SLD OUT,N | 左移双字 |
表1、移位指令
梯形图 | 语句表 | 描述 |
---|---|---|
ROR_B | RRB OUT,N | 循环右移字节 |
ROL_B | RLB OUT,N | 循环左移字节 |
ROR_W | RRW OUT,N | 循环右移字 |
ROL_W | RLW OUT,N | 循环左移字 |
ROR_DW | RRD OUT,N | 循环右移双字 |
ROL_DW | RLD OUT,N | 循环左移双字 |
SHRB | SHRB DATA,S BIT,N | 移位寄存器 |
表2、循环移位指令
十九、数据转换指令
实现字节(B)与整数(I)、整数与双整数(DI)、BCD码与整数、双整数(DI)与实数(R)之间的转换指令,以及七段译码指令。
梯形图 | 语句表 | 描述 |
---|---|---|
B_I | BTI IN,OUT | 字节转换为整数 |
I_B | ITB IN,OUT | 整数转换为字节 |
I_DI | ITD IN,OUT | 整数转换为双整数 |
DI_I | DTI IN,OUT | 双整数转换为整数 |
DI_R | DTR IN,OUT | 双整数转换为实数 |
I_BCD | IBCD OUT | 整数转换为BCD码 |
BCD_I | BCDI OUT | BCD码转换为整数 |
ROUND | ROUND IN,OUT | 实数四舍五入为双整数 |
TRUNC | TRUNC IN,OUT | 实数截位取整为双整数 |
SEG | SEG IN,OUT | 段码 |
DECO | DECO IN,OUT | 解码 |
ENCO | ENCO IN,OUT | 编码 |
表3、数据转换指令
二十、时钟指令
梯形图 | 语句表 | 描述 |
---|---|---|
READ_RTC | TORD T | 读取实时时钟 |
SET_RTC | TODW T | 设置实时时钟 |
READ_RTCX | TODRX T | 读取扩展实时时钟 |
SET_RTCX | TODWX T | 设置扩展实时时钟 |
表4、时钟指令
例:
图4
如图4所示,表示在I0.0的上升沿读取日期时间值,用VB42开始的时间缓冲区保存读取的值。将所编程序下载到PLC之后,打开I0.0,可以在状态表里监控VD42和VD46中读取的BCD码值,图中读取的值为2020年4月21日15点21分16秒,星期二;
在星期的取值中,星期的取值范围为07,1表示星期日,27表示星期一到星期六,为0时将禁用星期(保持为0)。
二十一、看门狗
CPU循环的循环监视时间的开始(500ms);程序执行时间超过500ms或者进入死循环时会报错。
二十二、过程映像区
在循环程序处理过程中,CPU需要一致的过程映像信号。为此在程序执行之前读取/写入过程信号。在随后的程序处理中。CPU在对输入(I)和输出(Q)地址区寻址时不直接访问信号模块,而是访问包含I/O过程映像的CPU系统存储区。
二十三、主程序、子程序、中断程序
主程序循环执行,可以调用子程序;
子程序可以清晰的指出程序需要的功能,主程序中加入的子程序要先执行子程序才能执行下一段主程序,子程序中还可以调用子程序,一共可以调用8个,想全部执行完才能进入下一段主程序;S7-200 CPU最多可以调用64个子程序(CPU226为128个);子程序可以带参数调用,在子程序的局部变量表中设置参数的类型,一共可以带16个参数。
中断程序:发生某一事件后执行此程序;只能嵌一个子程序;中断程序有不同的优先级,中断程序不能再被打断,会按照发生的时间顺序和优先级排队。
二十五、FOR/NEXT指令
每条FOR指令必须对应一条NEXT指令;FOR/NEXT指令循环可嵌套深度可达8层;FOR指令用沿触发;循环结束,当下一次允许时,FOR/NEXT指令复位它自己,并把初始值拷贝到INDX中。
二十六、程序控制,顺序控制
每条SCR指令必须对应有SCRE结束之灵;
不能把同一个S位用于不同程序中,例如:如果在主程序中用了S0.1,在子程序中就不能再使用它;
在SCR段之间不能使用JMP和LBL指令,但可以在SCR段内使用跳转和标号指令;SCR段之间的跳转,可以使用SCRT或复位/置位指令
在SCR段中不能使用END指令
二十七、程序控制其余指令
RET:根据前一个逻辑从子程序返回主程序;软件自动在子程序最后增加无条件返回。
END:根据前一个逻辑条件终止主程序;可以在主程序中使用“有条件结束”指令,但不能在子程序或中断程序中使用;软件自动在主程序最后增加无条件结束。
STOP:重新将PLC转换至STOP模式。
WDR:重新触发CPU的看门狗定时器,扩展扫描允许使用的时间,而不会出现看门狗错误;慎用!!!
DIAG-LED:设置诊断LED灯;当输入参数IN的数值为零,则诊断LED会被设置为不发光。如果输入参数IN的数值大于零,则诊断LED会被设置为发光(黄色)。
二十八、BGN-ITIME和CAL-ITIME指令可测量两任务的时间间隔,也可间接实现定时功能。
二十九、rs-485口MODBUS通讯
Modbus主站读写程序
注意:1、Modbus RTU主站功能是通过指令库中预先编好的程序功能块实现的,该库只针对Port0口有效
2、Modbus RTU主站使用了一些用户中断,在用户程序中不能禁止中断
3、此处访问的为一个从站,若访问不同的从站,可通过改变从站地址来实现
第一步初始化:复位modbus库完成位,初始化完成后,启动读写指令m0.1置位
第三步:M0.1置位读取从站数据,读取保持寄存器40001-40008 8个数据根据数据格式写入&VB1000,40001,40002为32位浮点数,则保持在VB1000 VB1001 VB1002 VB1003中,依次类推,读取完成M2.1置位,复位读取从站保持寄存器MO.1 M2.3
M2.2置位,写数据开始,VB3000写入00001中,写完成,M2.3置位,开始读,M2.2复位。
将程序写入PLC,通过串口调试助手,PLC给电脑发送如下指令
03 02 00 00 00 08 78 2E是PLC要读取从站的输入点
03 0F 00 00 00 08 01 00 7F 4C是PLC要写从站的输入点
03 03 00 00 00 08 45 EE是PLC要读从站的保持寄存器
三十、PLC为从站MODBUS通讯
PLC中各寄存器地址与MODBUS地址对照表
功能号 | Modbus地址 | s7-200Plc地址 | 描述 |
---|---|---|---|
0 | 00001—00128 | Q0.0—Q15.7 | Q输出 |
00001 | Q0.0 | ||
00002 | Q0.1 | ||
00003 | Q0.2 | ||
… | … | ||
00127 | Q15.6 | ||
00128 | Q15.7 | ||
1 | 10001—10128 | I0.0—I15.7 | I输入 |
10001 | I0.0 | ||
10002 | I0.1 | ||
10003 | I0.2 | ||
… | … | ||
10127 | I15.6 | ||
10128 | I15.7 | ||
3 | 30001—30032 | AIW0—AIW62 | AI模拟量输入 |
30001 | AIW0 | ||
30002 | AIW2 | ||
30003 | AIW4 | ||
… | … | ||
30031 | AIW60 | ||
30032 | AIW62 | ||
4 | 40001—4**** | T—T+2*(****-1) | V区(T为起始位) |
40001 | T | ||
40002 | T+2*(2-1) | ||
40003 | T+2*(3-1) | ||
… | … |
三十一、SCR指令
SCR指令专门用于编制顺序控制程序。顺序控制程序被分为LSCR与SCRE指令之间的若干个SCR段,一个SCR段对应于顺序功能图中的一步。
一个SCR程序段一般有以下三种功能:
1)驱动处理:在该段状态有效时,要做什么工作,有时也可能不做任何工作。
2)指定转移条件和目标:满足什么条件后状态转移到何处。
3)转移源自动复位功能:状态发生转移后,置位下一个状态的同时,自动复位原状态。
S7-200 PLC提供了三条顺序控制指令:装载SCR(LSCR)指令、SCR传输(SCRT)指令和SCR结束(SCRE)指令。如下图所示
SCR指令的操作如下:
1)装载SCR (LSCR,Load SCR)指令用来表示一个SCR段(即顺序功能图中的步)的开始。指令中的操作数S—Bit为顺序控制继电器S(BOOL型)的地址,顺序控制继电器S为1状态时,执行对应的SCR段中的程序,反之则不执行。
2) SCR传输(SCRT,SCR Transition)指令将程序控制权从一个激活的SCR段传递到另一个SCR段,即步的活动状态的转换。执行SCRT指令,当SCRT线圈“得电”时,SCRT指令中指定的顺序功能图中的后续步对应的顺序控制继电器S位置位(变为1状态),同时当前活动步对应的顺序控制继电器S位被系统程序复位(变为0状态),当前步变为不活动步。
在SCRT指令执行时,复位当前激活的程序段的S位并不会影响S堆栈。SCR段会一直保持能流直到退出。
3) SCR结束(SCRE,SCR END)指令标志着SCR段的结束。
使用SCR指令时有以下的限制:
1) SCR指令仅对元件S有效,顺序控制继电器S也具有一般继电器的功能,所以对它能够使用其他指令。
2)不能把同一个S位用于不同程序中,例如如果在主程序中使用了SO.1,则在子程序中就不能再使用它。
3)在SCR段中不能使用JMP和LBL指令,即不允许用跳转的方法跳入或跳出SCR段;但可以在SCR段附近使用跳转和标号指令或者在段内跳转。
4)在SCR段中不能使用FOR、NEXT和END指令。
5)在状态发生转移后,所有的SCR段的元件一般也要复位,如果希望继续输出,可使用置位/复位指令。
6)在使用顺序功能图时,SCR段的编写可以不按顺序编排。
三十二、闭环控制与PID控制器
PID控制(即比例-积分-微分)优点:
1、即使没有控制系统的数学模型,也能得到比较满意的控制效果;
2、通过调用PID指令来编程,程序设计简单,参数调整方便;
3、有较强的灵活性和适应性,根据被控对象的具体情况,可以采用P、PI、PD、和PID等方式,S7-200的PID指令还采用了一些改进的控制方式。
模拟量闭环控制:
在模拟量闭环控制系统中,被控量c(t)被传感器和变送器转换为标准量程的直流电流、电压信号PV(t),PLC用模拟量输入模块中的A-D转换器,将它们转换为时间上离散的多位二进制过程变量(又称为反馈值)PVn。
模拟量与数字量之间的相互转换和PID程序的执行都是周期性的操作,其间隔时间称为采样周期Ts。各数字量中的下标n表示该变量是第n次采样计算时的数字量。
工作原理:
闭环负反馈控制可以使过程变量PVn等于或跟随设定值SPn。
性能指标:
由于给定输入信号或扰动输入信号的变化,使系统的输出量发生变化,在系统输出量达到稳态之前的过程称为过渡过程或动态过程;系统的动态过程的性能指标用阶跃响应的参数来描述,阶跃响应是指系统的输入信号阶跃变化时系统的响应。
闭环控制带来的问题:
使用闭环控制后,并不能保证得到良好的动静态性能,这主要是由系统中的滞后因素造成的,闭环中的滞后因素主要来源于被控对象。
闭环控制反馈极性的确定:
闭环控制必须保证系统是负反馈(误差=设定值-过程变量),而不是正反馈(误差=设定值+过程变量);如果系统接成了正反馈,将会失控,被控量会往单一方向增大或减少,给系统的安全带来极大的威胁。
判断反馈极性的办法:
在调试时断开模拟量输出模块与执行机构之间的连线,在开环状态下运行PID控制程序。如果控制器有积分环节,因为反馈被断开了,不能消除误差,模拟量输出模块的输出电压或电流会向一个方向变化;这时如果假设接上执行机构,能减少误差,则为负反馈,反之为正反馈。
自己学习所记录,有不足请指教,若有兴趣一起交流,关注微信公众号:电子开发网