S7200最经典应用资料文档格式.docx

上传人:b****5 文档编号:19713194 上传时间:2023-01-09 格式:DOCX 页数:86 大小:542.96KB
下载 相关 举报
S7200最经典应用资料文档格式.docx_第1页
第1页 / 共86页
S7200最经典应用资料文档格式.docx_第2页
第2页 / 共86页
S7200最经典应用资料文档格式.docx_第3页
第3页 / 共86页
S7200最经典应用资料文档格式.docx_第4页
第4页 / 共86页
S7200最经典应用资料文档格式.docx_第5页
第5页 / 共86页
点击查看更多>>
下载资源
资源描述

S7200最经典应用资料文档格式.docx

《S7200最经典应用资料文档格式.docx》由会员分享,可在线阅读,更多相关《S7200最经典应用资料文档格式.docx(86页珍藏版)》请在冰豆网上搜索。

S7200最经典应用资料文档格式.docx

CPU 

224 

DC/DC/DC进行定位控制,并具有位置监视和位置校正

H-64

H.14

用S7-200实现PID控制

H-80

H.15

模拟量输入的处理

H-92

H.16

S7-200与PC之间的连接:

从Windows应用程序中读数据

H-98

H.1模拟电位器

概述

本例包含了有关 

的模拟电位器(POT)的使用信息。

电位器的位置转换为 

至 

255 

之间的数字值,然后,存入两个特殊存储器字节 

SMB28 

和 

SMB29 

中,分别对应电位器0和电位器1 

的值。

需要一把小螺丝刀用以调整电位器的位置。

本应用示例介绍了使用模拟电位器调整定时器设定值的三种方案。

例图

程序框图

程序和注释

方案1说明了用模拟电位器对定时器设定值进行细调的方法。

首先通过程序中的偏移量(本例中为20ms)对定时器进行粗调,然后再用电位器能把定时器的设定值精确地调整到满意的设置。

每个定时器周期之后,执行子程序1中的指令,把POT 

0的值(在SMB28中)读到AC1,除以2,再加上200ms偏移量。

返回主程序时,AC2中的定时器循环计数值加1,并拷贝到输出字节(QB0),以供显示。

在方案2中,对电位器1(POT 

1)的100次扫描值在AC3中累加后并取平均,再存入VW12。

如果该值低于低保护限值VW14,或高于高保护限值VW16(两者均在首次扫描时初始化),则将新值VW12拷贝到VW14、VW16和VW18中。

然后再分别对VW16和VW14的值减、加3ms,作为新限值,而VW18中的平均值被传回主程序作为定时器T34的设定值。

返回主程序时,VW20中的定时器循环计数值加1,并拷贝到输出字节(QB1),以供显示。

在方案3中,把电位器0(POT 

0)的值直接作为定时器T35的设定值,AC2中的定时器循环计数值加1,并拷贝到输出字节(QB0),以供显示。

本程序长度为110个字。

// 

标题:

模拟电位器:

*主程序 

*

这是S7-200的一个演示程序,介绍了使用模拟电位器调整定时器设定值的三种方案。

方案1:

对来自POT 

0的值进行换算并加偏移量,以调整定时器的设定值,可以从200ms调到的1.48s。

每个定时器周期QB0加1。

方案2:

从POT 

1来的值经过滤波给定时器提供0ms到约2.55s的稳定的设定值。

每个定时器周期QB1

加1。

方案3:

把POT 

0的值直接作为定时器设定值。

模拟电位器POT 

0和POT 

1的值可以分别从SMB28和SMB29中以一个字节读出。

每次扫描时,POT的值会变化一点,方案1和2都能为定时器提供稳定的设定值。

方案1的设定值会改变1次或2次,但每个定时器周期只装载一次。

方案2的设定值非常稳定,每次扫描都装载。

方案3的设定值每次扫描都会改变。

主程序:

LD 

SM0.1 

首次扫描时清除工作缓冲区:

MOVD+0,AC0 

AC0=0。

MOVD+0,AC3 

AC3=0。

MOVW+0,VW10 

VW10=0。

MOVW+32000,VW14 

低限工作区复位。

MOVW+0,VW16 

高限工作区复位。

每次扫描时POT的值会改变一点。

下面的指令用来在每个定时器周期捕获一次换算后的值,并提供一个稳定的定时器设定值。

LDI0.0 

如果输入I0.0为1状态,则选方案1。

TONT33,VW0 

POT 

0的值经运算后作为T33的设定值。

CALL1 

调用子程序1对POT 

0的值进行换算并加偏移量。

LDT33 

若T33计时到,

INCWAC2 

则AC2加1,即定时器循环计数。

MOVBAC2,QB0 

把AC2的最低有效字节拷贝到输出字节QB0,以供显示。

RT33,1 

定时器T33复位。

LDI0.1 

如果输入I0.1为1状态,则选方案2。

CALL2 

调用子程序2,对POT 

1的值进行滤波运算后存入VW18。

TONT34,VW18 

VW18的值作为T34的设定值。

LDT34 

若T34计时到,

INCWVW20 

则VW20加1,即定时器循环计数。

MOVBVB21,QB1 

把VW20最低有效字节(VB21)拷贝到输出字节QB1,以供显示。

RT34,1 

定时器T34复位

LDI0.2 

如果输入I0.2为1状态,

ANI0.0 

且方案1不在运行(I0.0=0),则选方案3。

MOVW0,AC1 

清除累加器1(AC1)

MOVBSMB28,AC1 

送POT 

0的值到AC1。

TONT35,AC1 

0的值作为T35的设定值。

LDT35 

若T35计时到,

把AC2最低有效字节拷贝到输出字节QB0,以供显示。

RT35,1 

定时器T35复位。

MEND 

主程序结束

方案1的子程序

SBR1 

子程序1。

换算POT 

0的值并加上偏移量后存在VW0中,再返回主程序。

每个定时器周期检查POT 

0的变化。

清除累加器1(AC1)。

0的值给AC1。

DIV2,AC1 

AC1除2,即把POT 

0的输入范围从0~255换算成0~127。

+120,AC1 

加200ms偏移量。

MOVWAC1,VW0 

把AC1值拷贝到VW0,以便能让程序员读取。

RET 

子程序1结束。

方案2的子程序

SBR2 

子程序2。

对POT 

1值采样100次,然后求平均值。

INCWVW10 

扫描计数器加1。

MOVBSMB29,AC0 

1的值到AC0。

+1AC0,AC3 

再加到以前的总和中(即累加POT1的值,共累加100次)。

LDWVW10,100 

100次扫描之后。

DIV100,AC3 

求平均值。

MOVWAC3,VW12 

存平均值。

MOVW0,VW10 

扫描计数器复位。

MOVD0,AC3 

工作内存复位。

AW<

=VW12,VW14 

检查新的平均值是否在保护区之外。

OW>

=VW12,VW16 

FILLVW12,VW14,3 

把新的平均值存入VW14,VW16,VW18。

-1+3,VW14 

设置新的低保护限。

+1+3,VW16 

设置新的高保护限。

1的滤波值存在VW18中,返回主程序

H.2怎样使用高速计数器

本例叙述SIMATIC 

S7-200的高速计数器(HSC)的一种组态功能。

对来自传感性(如编码器)信号的处理,高速计数器可采用多种不同的组态功能。

本例用脉冲输出(PLS)来为HSC产生高速计数信号,PLS可以产生脉冲串和脉宽调制信号,例如用来控制伺服电机。

既然利用脉冲输出,必须选用CPU 

224DC/DC/DC。

下面这个例子,展示了用HSC和脉冲输出构成一个简单的反馈回路,怎样编制一个程序来实现反馈功能。

本例描述了S7-200 

DC/DC/DC的高速计数器(HSC)的功能。

HSC计数速度比PLC扫描时间快得多,采用集成在CPU 

224中的20K硬件计数器进行计数。

总的来说,每个高速计数器需要10个字节内存用来存控制位、当前值、设定值、状态位。

本程序长度为91个字。

在主程序中,首先将输出Q0.0置,0,因为这是脉冲输出功能的需要。

再初始化高速计

数器HSC0,然后调用子程序0和1。

HSC0起动后具有下列特性:

可更新CV和PV值,正向计数。

当脉冲输出数达到SMD72中规定的个数后,程序就终止。

主程序

LDSM0.1 

首次扫描标志(SM0.1=1)。

RQ0.0,1 

脉冲输出Q0.0复位(Q0.0=0)。

MOVB16#F8,SMB37 

装载HSC0的控制位:

激活HSC0,可更新CV,可更新PV,

可改变方向,正向计数。

HSC指令用这些控制位来组态HSC。

MOVD0,SMD38 

HSC0当前值(CV)为0。

MOVD1000,SMD42 

HSC0的第一次设定值(PV)为1000。

HDEF0,0 

HSC0定为模式0。

CALL0 

调用子程序0。

调用子程序1。

MEND// 

主程序结束。

子程序0:

子程序0初始化,并激活脉冲输出(PLS)。

在特殊存储字节SMB67中定义脉冲输出特性:

脉冲串(PT0),时基,可更新数值,激活PLS。

SMW68定义脉冲周期,其值为时基的倍数。

最后,在SMD72中指定需要产生的脉冲数。

(SMD72)为内存双字,即4个字节)。

子程序0

SBR0 

MOVB16#8D,SMB67 

装载脉冲输出(PLS0)的控制位:

PT0,时基1ms,可更新,激活。

MOVW1,SMW68 

脉冲周期1ms。

MOVD30000,SMD72 

产生30000个脉冲。

PLS0 

起动脉冲输出(PLS 

0),从输出端Q0.0输出脉冲。

子程序0结束。

子程序1:

子程序1起动HSC0,并把中断程序0分配给中断事件12(HSC 

0的当前值CV等于设定值PV)。

只要脉冲计数值(当前值CV)达到设定值(PV),该事件就会发生。

最后,允许中断。

子程序1

ATCH0,12 

把中断程序0分配给中断事件12(HSC 

0的CV=PV)。

ENI 

允许中断。

HSC0 

按主程序中对HSC 

0的初始组态特性,起动HSC0。

中断程序0:

当HSC 

0的计数脉冲达到第一,设定值1000时,调用中断程序0。

输出端Q0.1置位(Q0.1=1)。

为HSC 

0设置新的设定值1500(第二设定值)

用中断程序1取代中断程序0,分配给中断事件12(HSC 

中断程序0

INT0 

中断程序0。

SQ0. 

1,1 

MOVB16#A0,SMB37 

重置HSC 

0的控制位,仅更新设定值(PV)。

MOVD1500,SMD42 

HSC 

0的下一个设定值为1500(第二设定值)。

ATCH1,12 

用中断程序1取代中断程序0,分配给中断事件12。

起动HSC 

0,,为其装载新的设定值。

RETI 

中断程序0结束。

中断程序1:

0的计数脉冲达到第二设定值1500时,调用中断程序1。

输出端Q0.2置位(Q0.2=1)。

0改成减计数,并置新的设定值1000(第三设定值)。

用中断程序2取代中断程序1,分配给中断事件12(HSC 

INT1 

中断程序1。

2,1 

MOVB16#B0,SMB37 

0的控制位,更新设定值,并改成减计数(反向计数)。

0的下一个设定值为1000(第三设定值)。

ATCH2,12 

用中断程序2取代中断程序1,分配给中断事件12。

0,,为其装载新的设定值和方向。

中断程序1结束。

中断程序2:

0的计数脉冲达到第三设定值1000时,调用中断程序2。

输出端Q0.1和Q0.2复位(Q0.1=0,Q0.2=0)。

0的计数方向重新改为正向(增计数),并将当前计数值置为0,而设定值PV保持不变(1000)。

重新把中断程序0分配给中断事件12,程序再次起动HSC 

0运行。

当脉冲数达到SMD72中规定的个数后,程序就终止。

INT2 

中断程序2。

RQ0. 

1,2 

MOVB16#D8,SMB37 

0的控制位,更新CV,改为正向计数(增计数)。

0的当前值复位(CV=0)。

把中断程序0分配给中断事件12。

重新起动HSC 

0。

中断程序2结束。

H.3自由通信口模式的简单应用

自由通信口模式(Freeport 

Mode)的通信协议可自由定义,通信所需要的信息存放在特殊存储字节SMB30中,用户须作如下说明:

奇偶校验

每个字符的位数

波特率

自由通信口模式可以接收和发送数据。

本例用一个仿真的打印机程序来描述数据发送,再用一个条形码阅读器程序来说明数据接收。

打印

机程序框图

打印机程序和注解

此程序描述向打印机发送数据。

为了简化此例,窗口下的终端程序可代替打印机作为接收器边接。

打印机或终端的组态特性为9600波特,无奇偶校验,每字符8位。

本程序长度为13个字。

正确设置自由通信口模式对此应用很重要。

所需信息装载在特殊存储字节SMB30中。

这些输入数据可从操作手册中查询。

发送命令XMT包含了发送信息缓冲区的起始地址,该地址单元中只包含了发送信息的长度(以字节

为单位)。

第一次扫描(SM0.1=1)。

MOVB+9,SMB30 

自由通信口模式;

9600波特,无奇偶校验,每字符8位。

MOVB+1,VB100 

信息长度为1个ASCII字符。

MOVB16#41,VB101 

A字符长度为1个字节,A=41H(十六进制)。

输入I0.1起动发送。

EU 

识别脉冲上升沿。

XMTVB100,0 

发送。

条形码阅读器程序框图

条形码阅读器程序和注解

该程序描述数据接收,条形码阅读器通过接口把读到的数据用自由通信口模式发给SIMATIC 

S7-200。

为简化此例,窗口下的终端程序可代替条形码阅读器作为发送器连接。

本程序长度为15个字。

主 

程 

序 

接收数据借助于中断实现,当数据进入自由编程接口,接收中断事件(8)。

就被触发了。

在此应用中,将中断程序0(INT0)赋予接收中断事件(8)。

第一次扫描标志(SM0.1=1)。

MOVB+9,SMB30 

自由通信口模式:

ATCH+0,8 

指定接收中断事件8调用中断程序0。

结束主程序。

中断程序0 

在中断程序0,把存放在特殊存储字节SMB2中的接收字符和大写字母A作比较。

如果符合,则置输出位Q0.1为1。

INT 

接收中断程序0。

LDB=SMB2,16#41 

字节SMB2中的接收字符和A比较。

SQ0.1,1 

若字符为A,则置Q0.1为1。

返回主程序。

H.4处理脉宽调制

在S7-200系列中输出端Q0.0和Q0.1能够输出方波信号,而且方波信号的周期和脉宽均能独立调节,其中脉宽指的是在一个周期内,输出信号处于高电平的时间长度。

下面这个例子说明了脉宽调制(PWM)是如何工作的。

输出端Q0.0输出方波信号,其脉宽每周期递增0.5秒,周期固定为5秒,并且脉宽的初始值为0.5秒。

当脉宽达到设定的最大值4.5秒时,脉宽改为每周期递减0.5秒,直到脉宽为零为止。

以上过程周而复始。

在这个例子中必须把输出端Q0.0与输入端I0.0连接,这样程序才能控制PWM。

程序和注解

特殊存储字节SMB67用来初始化输出端Q0.0的PWM。

这个控制字内含PWM允许位,修改周期和脉宽的允许位,以及时间基数选择位等,由子程序0来调整这个控制字节。

通过ENI指令,使所有的中断成为全局允许,然后通过PLS0指令,使系统接受各设定值,并初始化&

ldquo;

PTO/PWM发生器&

rdquo;

,从而在输出端Q0.0输出脉宽调制(PWM)信号。

另外,周期5秒是通过将数值5000置入特殊存储字SMW68来实现的,初始脉宽0.5秒则通过将500写入特殊存储字SMW70来实现的。

这个初始化过程是在程序的第一个扫描周期通过执行子程序0来实现,第一个扫描周期标志是SM0.1=1。

当一个PWM循环结束,即当前脉宽为0秒时,将再一次初始化PWM。

辅助内存标记M0.0用来表明脉宽是增加,还是减少,初始化时将这个标记设为增加。

输出端Q0.0与输入端I0.0相连,这样输出信号也可送到输入端I0.0。

当第一个方波脉冲输出时,利用ATCH指令,把中断程序1(INT1)赋给中断事件0(I0.0的上升沿)。

每个周期中断程序1将当前脉宽增加0.5秒,然后利用DTCH指令分离中断INT1,使这个中断再次被屏蔽。

如果在下次增加时,脉宽大于或等于周期,则将辅助内存标记位M0.0再次置0。

这样就把中断程序2赋予事件0,并且脉宽也将每次递减0.5秒。

当脉宽值减为零时,将再次执行,初始化程序(子程序0)。

本程序长度为63个字。

在第一个扫描周期SM0.1=1。

调用子程序0来起动PWM,即初始化PWM。

LDW>

=SMW70,VW0 

如果脉宽大于等于(周期一脉宽),

RM0.0,1 

则将辅助内存标记位M0.0置0。

LDW=SMW70,0 

如果脉宽为零,

则调用子程序0来重新开始一个完整的PWM。

如果输入I0.0=1。

AM0.0 

且辅助内存标记位M0.0=1(脉宽增加),

ATCH1,0 

则把INT1赋给事件0(输入I0.0的正向上升沿)。

ANM0.0 

且辅助内存标记位M0.0=0(脉宽减少),

ATCH2,0 

则把INT2赋给事件0(输入I0.0的正向上升沿)。

初始化脉宽调制

SM0.0,1 

将增加脉宽的辅助内存标记位M0.0置1。

MOVB16#CB,SMB67 

设定输出端Q0.0的PTO/PWM控制字节

SM67.0:

=1 

&

THORN;

允许接受新的周期。

SM67.1:

允许接受新的脉宽。

SM67.3:

时间基数为1ms(若为0,则时间基数为1ms)。

SM67.6:

选择PWM模式(若为0,则PT0模式)。

SM67.7:

允许高速输出功能。

MOVW500,SMW70 

指定初始脉宽(500ms)。

MOVW5000,SMW68 

周期为5s。

允许全部中断。

对PTO/PWM生成器编程的指令。

MOVWSMW68,VW0 

将周期置入数据字VW0。

-1500,VW0 

将(周期-脉宽)的值置入数据字VW0。

子程序0结束并返回主程序。

中断服务程序 

I

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1