1、如何读如何读STL程序:程序:如果读程序时发现自己不明白的语言,可以:如果读程序时发现自己不明白的语言,可以:1,转换成梯形图:快捷键,转换成梯形图:快捷键ctrl1,当然大,当然大多数都转换不过去多数都转换不过去;2,按下,按下F1寻求帮助;寻求帮助;3,下载此程序到模拟器中,单步观察效果,下载此程序到模拟器中,单步观察效果,看一看哪些寄存器发生改变。看一看哪些寄存器发生改变。系统的逻辑错误造成的停机往往是由于提示系统的逻辑错误造成的停机往往是由于提示错误前面的错误引起的。错误前面的错误引起的。STL指令及其结构:指令及其结构:语句指令:语句指令:操作码操作码 操作数操作数执行该操作所需要的
2、信执行该操作所需要的信息息 有些语句指令不带操作数,它们操作的对象是唯一的有些语句指令不带操作数,它们操作的对象是唯一的。NOT/对逻辑操作结果(对逻辑操作结果(RLO)取反。取反。A I 0.1 /对输入继电器对输入继电器 I 0.1 进行与操作进行与操作 L MW10 /将字将字MW10装入累加器装入累加器1定义要执行的功能定义要执行的功能操作数:操作数:操作数:标识符标识符 标识参数标识参数 L M W 10表示操作数在该存储区表示操作数在该存储区域内的具体位置域内的具体位置 主标识符:表示操作数所在的存储区主标识符:表示操作数所在的存储区 主要有:I(输入映像区),Q(输出映像区),M
3、位存储区),PI(外部输入),PQ(外部输出),T(定时器),C(计数器),DB(数据块),L(本地数据)等 辅助标识符进一步说明操作数的位数长度辅助标识符进一步说明操作数的位数长度包括有:X(位),B(字节),W(字2字节),D(双字4字节)表示操作数存放区域及操作表示操作数存放区域及操作数位数(位、字节、字等)数位数(位、字节、字等)操作数表示:操作数表示:存储区域存储区域位位字节字节字字双字双字输入映像区(输入映像区(I)IIBIWID输出映像区(输出映像区(Q)QQB QWQD位存储区(位存储区(M)MMB MW MD外部输入存储区(外部输入存储区(PI)PIB PIW PID外部输
4、出存储区(外部输出存储区(PQ)PQB PQW PQD数据块(用数据块(用“OPNDB”打打开)开)DBX DBB DBW DBD数据块(用数据块(用“OPNDI”打开)打开)DIXDIB DIW DID临时堆栈(临时堆栈(L)LLBLWLD寻址方式寻址方式:立即寻址立即寻址立即寻址立即寻址 SET /把把 RLO(Result of Logic Operation)置置“1”L 27 /把整数把整数27装人累加器装人累加器1 L C#0100 /把把 BCD码常数码常数0100装入累加器装入累加器1 立即寻址立即寻址:对常数或常量的寻址方式,操作数本身包含对常数或常量的寻址方式,操作数本身包
5、含在指令中在指令中编程、编程、调试及调试及故障排故障排除除现场设现场设备详细备详细介绍介绍系统及网系统及网络介绍络介绍数据格式:7654321 010.7 10.6 10.5 10.4 10.3 10.2 10.1 10.0MB10MB11MB12MB13MB14MW10MW12MW11 MD11MB15 MD12 MD10编程、编程、调试及调试及故障排故障排除除现场设现场设备详细备详细介绍介绍系统及网系统及网络介绍络介绍实例:数据分配举例数据分配举例数字表示方法:数字表示方法:BYTE:L B#16#10 L byte#16#10WORD:L 2#1000000000000 L W#16#1
6、000 L word#16#1000DWORD:L DW#16#A21234 L dword#16#A21234INT:L 1D INT:L L#1REAL:L 1.234567e+13 TIME:L S5T#1H1M50S寻址方式寻址方式:直接寻址直接寻址直接寻址直接寻址 A I0.0 /对输入位对输入位I0.0进行进行“与与”逻辑操作逻辑操作 S L20.0 /把本地数据位把本地数据位L20.0置置1 =M115.4 /将将RLO的内容传给位存储区中的位的内容传给位存储区中的位M115.4 L DB1.DBD 12 /把数据块把数据块DB1双字双字DBD12中的内容传送给累加器中的内容传送
7、给累加器1 /双字表示双字表示32位,如浮点数为位,如浮点数为32为双字为双字直接直接寻址寻址:在指令中直接给出操作数的存储单元在指令中直接给出操作数的存储单元地址地址寻址方式寻址方式:存储器间接寻址存储器间接寻址存储器间接寻址存储器间接寻址存储器存储器间接寻址间接寻址:标识参数由一个存储器给出,存储器标识参数由一个存储器给出,存储器的内容对应该标识参数的值的内容对应该标识参数的值(该值又称该值又称为地址指针为地址指针)这种寻址方式能动态改变操作数存储器的地址,常用于程序循环这种寻址方式能动态改变操作数存储器的地址,常用于程序循环过程中的寻址。过程中的寻址。A IMD 2 /对由对由MD 2指
8、出的输入位进行指出的输入位进行“与与”逻辑操作,如:逻辑操作,如:MD 2值为值为 /2#0000 0000 0000 0000 0000 0000 0101 0110表示表示I 10.6L IBDID 4 /将由双字将由双字DID 4指出的输入字节装入累加器指出的输入字节装入累加器1,如:,如:DID 4值为值为 /2#0000 0000 0000 0000 0000 0000 0101 0000表示对表示对IB10操作操作OPN DBMW 2 /打开由字打开由字MW2指出的数据块,如指出的数据块,如MW2为为3,则打开,则打开DB3 寻址方式寻址方式:寄存器间接寻址寄存器间接寻址寄存器间接
9、寻址寄存器间接寻址(指针指针指针指针)寄存器寄存器间接寻址间接寻址:在在S7中有两个地址寄存器(中有两个地址寄存器(AR1和和AR2)地址寄存器的内容地址寄存器的内容 偏移量偏移量 地址指针地址指针L P#8.6 /将将P#8.6装入装入A 1LAR1 /将累加器将累加器1的内容传送至地址寄存器的内容传送至地址寄存器1L P#10.0 /将将P#10.0装入装入A1LAR2 /将累加器将累加器1的内容传送至地址寄存器的内容传送至地址寄存器2A IAR1,P#1.0 /AR1+偏移量偏移量(9.6)=QAR2,P#4.1 /AR1+偏移量偏移量(14.1)LAR1 P#STAT53/把把指针指向
10、指针指向STAT53 L 0 /把把0装入装入ACCU1T DIW AR1,P#0.0 /把地址寄存器内指向起始地址区的数据赋值把地址寄存器内指向起始地址区的数据赋值在线监视在线监视 很多时候需要在线监视的。在线监视的情况如图,各个寄存器的情况详见下页。系统的内部寄存器:系统的内部寄存器:S7 CPU的寄存器有(的寄存器有(7个):个):累加器累加器 32位位累累加加器器1 (ACCU1)主主累累加加器器2 (ACCU2)辅辅2个个32位累加器位累加器*地址寄存器地址寄存器 32位位地址寄存器地址寄存器1 (AR1)地址寄存器地址寄存器2 (AR2)2个个32位地址寄存器位地址寄存器*数数据据
11、块块地地址址寄寄存存器器 32位位共享数据块共享数据块 DB 背景数据块背景数据块 DI 2个个32位数据块地址寄存位数据块地址寄存器器状态字寄存器状态字寄存器 16位位状态位状态位 1个个16位状态字寄存器位状态字寄存器*系统存储区:系统存储区:S7S7300 CPU300 CPU有三个基本存储区:有三个基本存储区:外设I/O存储区 P输出(映像区)Q输入(映像区)I位存储区 M定时器 T计数器 C系统存储区系统存储区系统存储区系统存储区存放操作数据(存放操作数据(I/O、位存储、定时位存储、定时器等)器等)物理上是物理上是CPU的的RAM,存储区的大小因存储区的大小因CPU型号而型号而异。
12、异。临时本地数据存储区(L堆栈)可执行用户程序:逻 辑 块(OB、FB、FC)数据块(DB)工作存储区工作存储区工作存储区工作存储区存放存放CPU运行时,所执行的用户程运行时,所执行的用户程序单元逻辑块(序单元逻辑块(OB、FB、FC)、)、数据块(数据块(DB)的复制件;的复制件;存放存放临时本地数据,这部分存储区称临时本地数据,这部分存储区称L堆栈(主要是存放用户程序的临时堆栈(主要是存放用户程序的临时变量)变量)物理上是物理上是CPU模块的部分模块的部分RAM动态装载存储区:存放用户程序装载存储区装载存储区装载存储区装载存储区存放用户程序存放用户程序 物理上是物理上是CPU的部分的部分R
13、AM、EEPROM、外置外置FEPROM等等名名称称存储区存储区存存储储区区功功能能输入(输入(I)过程输入映像过程输入映像表表每个扫描周期开始,读取过程输入值,记录输入映像表每个扫描周期开始,读取过程输入值,记录输入映像表访问方式:位、字节、字、双字访问方式:位、字节、字、双字输出(输出(O)过程输出映像过程输出映像表表扫描周期结束,输出映像表内容扫描周期结束,输出映像表内容输出端口输出端口访问方式:位、字节、字、双字访问方式:位、字节、字、双字外设输入(外设输入(PI)外设输出(外设输出(PO)外设输入外设输入/输输出出外设存储区允许直接访问现场设备外设存储区允许直接访问现场设备访问方式:
14、字节、字、双字(不能访问位)访问方式:字节、字、双字(不能访问位)位存储区(位存储区(M)中间的变量中间的变量存存放放程程序序运运行行的的中中间间结结果果,访访问问方方式式:位位、字字节节、字字、双字双字定时器(定时器(T)定时器定时器计时时钟访问该存储区中的计时单元计时时钟访问该存储区中的计时单元定时器指令可以访问该存储区和计时单元定时器指令可以访问该存储区和计时单元计数器(计数器(C)计数器计数器计数器指令可以访问该存储区计数器指令可以访问该存储区临时本地数据存储临时本地数据存储区(区(L)L堆栈堆栈在在FC、OB块运行时,块变量声明表中临时变量存放在块运行时,块变量声明表中临时变量存放在
15、该存储区。该存储区。数据块(数据块(DB)数据块数据块DB块存放数据信息,可被所有逻辑块访问(共享数据块存放数据信息,可被所有逻辑块访问(共享数据块)或被块)或被FB块特定占用(背景数据块使用块特定占用(背景数据块使用DI访问)访问)1,外设访问,外设访问(P)不通过不通过映像区;2,有些变频器等超出了,有些变频器等超出了映像区的范围所以,只能使用外设访问的范围所以,只能使用外设访问(P);3,外设访问,外设访问(P)在程序执行到此位置时进行读写操作,而普通的输入输出在程序执行到此位置时进行读写操作,而普通的输入输出,则在程序开始读则在程序开始读入,结束输出;入,结束输出;状态字:状态字:15
16、876543210BR CC1CC0 OSOVOR STA RLO FC首次检测位首次检测位首次检测位首次检测位 *逻辑操作结果逻辑操作结果逻辑操作结果逻辑操作结果*状态位状态位状态位状态位 或位或位或位或位 溢出位溢出位溢出位溢出位 溢出状态保持位溢出状态保持位溢出状态保持位溢出状态保持位 条件码条件码条件码条件码0 0 条件码条件码条件码条件码1 1 1 1 二进制结果位二进制结果位二进制结果位二进制结果位 状态字表示状态字表示CPUCPU执行指令时所具有的状态,用户程序可以访问和执行指令时所具有的状态,用户程序可以访问和检测状态字,并可以根据状态字中的某些位决定程序的走向和检测状态字,并
17、可以根据状态字中的某些位决定程序的走向和进程。进程。逻辑操作结果逻辑操作结果(RLO):Result of Logic Operation,RLO位置位置:状态字位:状态字位 “1 1”作用作用:存储位逻辑指令或算术比较指令的结果。:存储位逻辑指令或算术比较指令的结果。无法判断无法判断RLO的数值时,可以查看的数值时,可以查看FC位的情况。位的情况。在某行按下在某行按下F1,就知道该指令是否影响,就知道该指令是否影响RLO。见下页。见下页STAlSTA表示被操作的数据的当前状态,表示被操作的数据的当前状态,0或者或者1;l仅表示布尔量;仅表示布尔量;l非布尔量的数值以非布尔量的数值以ACCU累
18、加器表示累加器表示l例如第一句为例如第一句为ANI0.0lI0.0现在为现在为0,则,则STA为为0;l但是执行完毕后但是执行完毕后RLO为为1。FC/RLO的变化示例:的变化示例:语句表语句表 实际状态实际状态 检测结果检测结果 RLO FC说明说明0FC0:下一条指令开始新逻辑下一条指令开始新逻辑串串AI0.01111首次检测结果存放首次检测结果存放RLO,FC置置1ANI0.10111检测结果与检测结果与RLO运算,结果存运算,结果存RLO=Q1.010RLO赋值给赋值给Q1.0,FC清清0I0.0I0.1Q1.0DI和和DB的区别的区别l访问背景数据块时,使用DI;当然也可以使用DB访问背景数据块;lDI的作用体现在:再单个FB里面调用了除背景数据块外的其他数据块时,可以用DB进行操作,而背景数据块可以使用DI进行操作。如右图:可以OPN DB DBMS/以后所有的DB*操作均是对应DB4,而所有的DI*操作均对应DB433CDB交换数据块内容,例如把背景数据块里面的内容与共享数据块交换,可以访问共享数据块,进行操作处理。L的对应的对应 好多程序里面直接使用L变量,此时你可以上Temp里面查看,寻求对应关系,如果找不到对应关系也无所谓,当一个临时变量使好了,出了这个块就什么都没了。






