ImageVerifierCode 换一换
格式:DOCX , 页数:99 ,大小:604.50KB ,
资源ID:7379128      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7379128.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(s7200典型程序例子.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

s7200典型程序例子.docx

1、s7200典型程序例子S7-200 应用示例本章概述节内 容页H.1模拟电位器H2H.2怎样使用高速计数器H6H.3自由通信口模式的简单应用H10H.4处理脉宽调制H13H.5可逆电动机起动器电路适用于改变三相交流感应电动机旋转方向H16H.6步执行顺序(事件鼓定时器)H19H.7S7-200用自由通信口模式和并行打印机连接H23H.8通过自由通信口模式接受条形码阅读器的信息H27H.9集成脉冲输出通过步进电机进行定位控制H31H.10SIMATIC S7-221通过自由通信口模式控制贺氏(Hayes)调制解调器H37H.11几台SIMATIC S7-200 PLC使用自由通信口模式连接在一个

2、远程I/O网络上H43H.12S7-224与SIMOVERT电机驱动器之间的自由通信口通信接口H-54H.13用S7-200 CPU 224 DC/DC/DC进行定位控制,并具有位置监视和位置校正H-64H.14用S7-200实现PID控制H-80H.15模拟量输入的处理H-92H.16S7-200与PC之间的连接:从Windows应用程序中读数据H-98H.1 模拟电位器概述本例包含了有关 SIMATIC S7-200 的模拟电位器(POT)的使用信息。电位器的位置转换为 0 至 255 之间的数字值,然后,存入两个特殊存储器字节 SMB28 和 SMB29 中,分别对应电位器0和电位器1

3、的值。需要一把小螺丝刀用以调整电位器的位置。本应用示例介绍了使用模拟电位器调整定时器设定值的三种方案。例图模拟电位器程序框图10.0程序和注释方案1说明了用模拟电位器对定时器设定值进行细调的方法。首先通过程序中的偏移量(本例中为20ms)对定时器进行粗调,然后再用电位器能把定时器的设定值精确地调整到满意的设置。每个定时器周期之后,执行子程序1中的指令,把POT 0的值(在SMB28中)读到AC1,除以2,再加上200ms偏移量。返回主程序时,AC2中的定时器循环计数值加1,并拷贝到输出字节(QB0),以供显示。在方案2中,对电位器1(POT 1)的100次扫描值在AC3中累加后并取平均,再存入

4、VW12。如果该值低于低保护限值VW14,或高于高保护限值VW16(两者均在首次扫描时初始化),则将新值VW12拷贝到VW14、VW16和VW18中。然后再分别对VW16和VW14的值减、加3ms,作为新限值,而VW18中的平均值被传回主程序作为定时器T34的设定值。返回主程序时,VW20中的定时器循环计数值加1,并拷贝到输出字节(QB1),以供显示。在方案3中,把电位器0(POT 0)的值直接作为定时器T35的设定值,AC2中的定时器循环计数值加1,并拷贝到输出字节(QB0),以供显示。本程序长度为110个字。/ 标题:模拟电位器: / * * * * * * * * * * * * * *

5、 *主程序 * * * * * * * * * * * * * * * / 这是S7-200的一个演示程序,介绍了使用模拟电位器调整定时器设定值的三种方案。 / 方案1:对来自POT 0的值进行换算并加偏移量,以调整定时器的设定值,可以从200ms调到的1.48s。 每个定时器周期QB0加1。 / 方案2:从POT 1来的值经过滤波给定时器提供0ms到约2.55s的稳定的设定值。每个定时器周期QB1 加1。 / 方案3:把POT 0的值直接作为定时器设定值。每个定时器周期QB0加1。 / 模拟电位器POT 0和POT 1的值可以分别从SMB28和SMB29中以一个字节读出。 / 每次扫描时,P

6、OT的值会变化一点,方案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 / 高限工作区复位。 / 方案1: / 每次扫描时POT的值会改变一点。 / 下面的指令用来在每个定时器周期捕获一次换算后

7、的值,并提供一个稳定的定时器设定值。 LD I0.0 / 如果输入I0.0为1状态,则选方案1。 TON T33,VW0 / POT 0的值经运算后作为T33的设定值。 CALL 1 / 调用子程序1对POT 0的值进行换算并加偏移量。 LD T33 / 若T33计时到, INCW AC2 / 则AC2加1,即定时器循环计数。 MOVB AC2,QB0 / 把AC2的最低有效字节拷贝到输出字节QB0,以供显示。 R T33,1 / 定时器T33复位。 / 方案2: LD I0.1 / 如果输入I0.1为1状态,则选方案2。 CALL 2 / 调用子程序2,对POT 1的值进行滤波运算后存入VW

8、18。 TON T34,VW18 / VW18的值作为T34的设定值。 LD T34 / 若T34计时到, INCW VW20 / 则VW20加1,即定时器循环计数。 MOVB VB21,QB1 / 把VW20最低有效字节(VB21)拷贝到输出字节QB1,以供显示。 R T34,1 / 定时器T34复位/ 方案3: LD I0.2 / 如果输入I0.2为1状态, AN I0.0 / 且方案1不在运行(I0.0=0),则选方案3。 MOVW 0,AC1 / 清除累加器1(AC1) MOVB SMB28,AC1 / 送POT 0的值到AC1。 TON T35,AC1 / POT 0的值作为T35的

9、设定值。 LD T35 / 若T35计时到, INCW AC2 / 则AC2加1,即定时器循环计数。 MOVB AC2,QB0 / 把AC2最低有效字节拷贝到输出字节QB0,以供显示。 R T35,1 / 定时器T35复位。 MEND / 主程序结束 / 方案1的子程序 SBR 1 / 子程序1。 / 换算POT 0的值并加上偏移量后存在VW0中,再返回主程序。 LD T33 / 每个定时器周期检查POT 0的变化。 MOVW 0,AC1 / 清除累加器1(AC1)。 MOVB SMB28,AC1 / 送POT 0的值给AC1。 DIV 2,AC1 / AC1除2,即把POT 0的输入范围从0

10、255换算成0127。 +1 20,AC1 / 加200ms偏移量。 MOVW AC1,VW0 / 把AC1值拷贝到VW0,以便能让程序员读取。 RET / 子程序1结束。 / 方案2的子程序 SBR 2 / 子程序2。 / 对POT 1值采样100次,然后求平均值。 INCW VW10 / 扫描计数器加1。 MOVB SMB29,AC0 / 送POT 1的值到AC0。 +1 AC0,AC3 / 再加到以前的总和中(即累加POT1的值,共累加100次)。 LDW VW10,100 / 100次扫描之后。 DIV 100,AC3 / 求平均值。 MOVW AC3,VW12 / 存平均值。 MOV

11、W 0,VW10 / 扫描计数器复位。 MOVD 0,AC3 / 工作内存复位。 AW= VW12,VW16 / FILL VW12,VW14,3 / 把新的平均值存入VW14,VW16,VW18。 -1 +3,VW14 / 设置新的低保护限。 +1 +3,VW16 / 设置新的高保护限。 RET / POT 1的滤波值存在VW18中,返回主程序H.2 怎样使用高速计数器概述本例叙述SIMATIC S7-200的高速计数器(HSC)的一种组态功能。对来自传感性(如编码器)信号的处理,高速计数器可采用多种不同的组态功能。本例用脉冲输出(PLS)来为HSC产生高速计数信号,PLS可以产生脉冲串和脉

12、宽调制信号,例如用来控制伺服电机。既然利用脉冲输出,必须选用CPU 224DC/DC/DC。下面这个例子,展示了用HSC和脉冲输出构成一个简单的反馈回路,怎样编制一个程序来实现反馈功能。例图程序框图程序和注释本例描述了S7-200 DC/DC/DC的高速计数器(HSC)的功能。HSC计数速度比PLC扫描时间快得多,采用集成在CPU 224中的20K硬件计数器进行计数。总的来说,每个高速计数器需要10个字节内存用来存控制位、当前值、设定值、状态位。本程序长度为91个字。 / 主程序: / 在主程序中,首先将输出Q0.0置,0,因为这是脉冲输出功能的需要。再初始化高速计 / 数器HSC0,然后调用

13、子程序0和1。 / HSC0起动后具有下列特性:可更新CV和PV值,正向计数。 / 当脉冲输出数达到SMD72中规定的个数后,程序就终止。 / 主程序 LD SM0.1 / 首次扫描标志(SM0.1=1)。 R Q0.0,1 / 脉冲输出Q0.0复位(Q0.0=0)。 MOVB 16#F8,SMB37 / 装载HSC0的控制位: / 激活HSC0,可更新CV,可更新PV, / 可改变方向,正向计数。 / HSC指令用这些控制位来组态HSC。 MOVD 0,SMD38 / HSC0当前值(CV)为0。 MOVD 1000,SMD42 / HSC0的第一次设定值(PV)为1000。 HDEF 0,

14、0 / HSC0定为模式0。 CALL 0 / 调用子程序0。 CALL 1 / 调用子程序1。 MEND / 主程序结束。 / * * * * * * * * * * * * * * * * * * * * / 子程序0: / 子程序0初始化,并激活脉冲输出(PLS)。 / 在特殊存储字节SMB67中定义脉冲输出特性:脉冲串(PT0),时基,可更新数值,激活PLS。 / SMW68定义脉冲周期,其值为时基的倍数。 / 最后,在SMD72中指定需要产生的脉冲数。(SMD72)为内存双字,即4个字节)。 / 子程序0 SBR 0 / 子程序0 MOVB 16#8D,SMB67 / 装载脉冲输出(

15、PLS0)的控制位:PT0,时基1ms,可更新,激活。 MOVW 1,SMW68 / 脉冲周期1ms。 MOVD 30000,SMD72 / 产生30000个脉冲。 PLS 0 / 起动脉冲输出(PLS 0),从输出端Q0.0输出脉冲。 RET / 子程序0结束。 / * * * * * * * * * * * * * * * * * * * * / 子程序1: / 子程序1起动HSC0,并把中断程序0分配给中断事件12(HSC 0的当前值CV等于设定值PV)。 / 只要脉冲计数值(当前值CV)达到设定值(PV),该事件就会发生。 / 最后,允许中断。 / 子程序1 SBR 0 / 子程序1。

16、 ATCH 0,12 / 把中断程序0分配给中断事件12(HSC 0的CV=PV)。 ENI / 允许中断。 HSC 0 / 按主程序中对HSC 0的初始组态特性,起动HSC0。 RET / 子程序1结束。 / * * * * * * * * * * * * * * * * * * * * / 中断程序0: / 当HSC 0的计数脉冲达到第一,设定值1000时,调用中断程序0。 / 输出端Q0.1置位(Q0.1=1)。 / 为HSC 0设置新的设定值1500(第二设定值) / 用中断程序1取代中断程序0,分配给中断事件12(HSC 0的CV=PV)。 / 中断程序0 INT 0 / 中断程序0

17、。 S Q0. 1,1 / 输出端Q0.1置位(Q0.1=1)。 MOVB 16#A0,SMB37 / 重置HSC 0的控制位,仅更新设定值(PV)。 MOVD 1500,SMD42 / HSC 0的下一个设定值为1500(第二设定值)。 ATCH 1,12 / 用中断程序1取代中断程序0,分配给中断事件12。 HSC 0 / 起动HSC 0,为其装载新的设定值。 RETI / 中断程序0结束。 / * * * * * * * * * * * * * * * * * * * * / 中断程序1: / 当HSC 0的计数脉冲达到第二设定值1500时,调用中断程序1。 / 输出端Q0.2置位(Q0

18、.2=1)。 / HSC 0改成减计数,并置新的设定值1000(第三设定值)。 / 用中断程序2取代中断程序1,分配给中断事件12(HSC 0的CV=PV)。 / 中断程序1: INT 1 / 中断程序1。 S Q0. 2,1 / 输出端Q0.2置位(Q0.2=1)。 MOVB 16#B0,SMB37 / 重置HSC 0的控制位,更新设定值,并改成减计数(反向计数)。 MOVD 1000,SMD42 / HSC 0的下一个设定值为1000(第三设定值)。 ATCH 2,12 / 用中断程序2取代中断程序1,分配给中断事件12。 HSC 0 / 起动HSC 0,为其装载新的设定值和方向。 RET

19、I / 中断程序1结束。 / * * * * * * * * * * * * * * * * * * * * / 中断程序2: / 当HSC 0的计数脉冲达到第三设定值1000时,调用中断程序2。 / 输出端Q0.1和Q0.2复位(Q0.1=0,Q0.2=0)。 / HSC 0的计数方向重新改为正向(增计数),并将当前计数值置为0,而设定值PV保持不变(1000)。 / 重新把中断程序0分配给中断事件12,程序再次起动HSC 0运行。 / 当脉冲数达到SMD72中规定的个数后,程序就终止。 / 中断程序2: INT 2 / 中断程序2。 R Q0. 1,2 / 输出端Q0.1和Q0.2复位(Q

20、0.1=0,Q0.2=0)。 MOVB 16#D8,SMB37 / 重置HSC 0的控制位,更新CV,改为正向计数(增计数)。 MOVD 0,SMD38 / HSC 0的当前值复位(CV=0)。 ATCH 0,12 / 把中断程序0分配给中断事件12。 HSC 0 / 重新起动HSC 0。 RETI / 中断程序2结束。H.3 自由通信口模式的简单应用概述自由通信口模式(Freeport Mode)的通信协议可自由定义,通信所需要的信息存放在特殊存储字节SMB30中,用户须作如下说明: 奇偶校验 每个字符的位数 波特率自由通信口模式可以接收和发送数据。本例用一个仿真的打印机程序来描述数据发送,

21、再用一个条形码阅读器程序来说明数据接收。例图打印机程序框图打印机程序和注解此程序描述向打印机发送数据。为了简化此例,窗口下的终端程序可代替打印机作为接收器边接。打印机或终端的组态特性为9600波特,无奇偶校验,每字符8位。本程序长度为13个字。 / 正确设置自由通信口模式对此应用很重要。 / 所需信息装载在特殊存储字节SMB30中。 / 这些输入数据可从操作手册中查询。 / 发送命令XMT包含了发送信息缓冲区的起始地址,该地址单元中只包含了发送信息的长度(以字节 为单位)。 LD SM0.1 / 第一次扫描(SM0.1=1)。 MOVB +9,SMB30 / 自由通信口模式;9600波特,无奇

22、偶校验,每字符8位。 MOVB +1,VB100 / 信息长度为1个ASCII字符。 MOVB 16#41,VB101 / A字符长度为1个字节,A=41H(十六进制)。 LD I0.1 / 输入I0.1起动发送。 EU / 识别脉冲上升沿。 XMT VB100,0 / 发送。 MEND / 主程序结束。条形码阅读器程序框图条形码阅读器程序和注解该程序描述数据接收,条形码阅读器通过接口把读到的数据用自由通信口模式发给SIMATIC S7-200。为简化此例,窗口下的终端程序可代替条形码阅读器作为发送器连接。本程序长度为15个字。 / * * * * * * * * * * * * 主 程 序

23、* * * * * * * * / 正确设置自由通信口模式对此应用很重要。 / 所需信息装载在特殊存储字节SMB30中。 / 这些输入数据可从操作手册中查询。 / 接收数据借助于中断实现,当数据进入自由编程接口,接收中断事件(8)。 / 就被触发了。 / 在此应用中,将中断程序0(INT0)赋予接收中断事件(8)。 LD SM0.1 / 第一次扫描标志(SM0.1=1)。 MOVB +9,SMB30 / 自由通信口模式:9600波特,无奇偶校验,每字符8位。 ATCH +0,8 / 指定接收中断事件8调用中断程序0。 ENI / 允许中断。 MEND / 结束主程序。 / * * * * *

24、* * * 中断程序0 * * * * * * * * / 在中断程序0,把存放在特殊存储字节SMB2中的接收字符和大写字母A作比较。 / 如果符合,则置输出位Q0.1为1。 INT / 接收中断程序0。 LDB =SMB2,16#41 / 字节SMB2中的接收字符和A比较。 S Q0.1,1 / 若字符为A,则置Q0.1为1。 RETI / 返回主程序。H.4 处理脉宽调制概述在S7-200系列中输出端Q0.0和Q0.1能够输出方波信号,而且方波信号的周期和脉宽均能独立调节,其中脉宽指的是在一个周期内,输出信号处于高电平的时间长度。下面这个例子说明了脉宽调制(PWM)是如何工作的。输出端Q0

25、.0输出方波信号,其脉宽每周期递增0.5秒,周期固定为5秒,并且脉宽的初始值为0.5秒。当脉宽达到设定的最大值4.5秒时,脉宽改为每周期递减0.5秒,直到脉宽为零为止。以上过程周而复始。在这个例子中必须把输出端Q0.0与输入端I0.0连接,这样程序才能控制PWM。例图程序框图程序和注解特殊存储字节SMB67用来初始化输出端Q0.0的PWM。这个控制字内含PWM允许位,修改周期和脉宽的允许位,以及时间基数选择位等,由子程序0来调整这个控制字节。通过ENI指令,使所有的中断成为全局允许,然后通过PLS0指令,使系统接受各设定值,并初始化“PTO/PWM发生器”,从而在输出端Q0.0输出脉宽调制(P

26、WM)信号。另外,周期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秒,

27、然后利用DTCH指令分离中断INT1,使这个中断再次被屏蔽。如果在下次增加时,脉宽大于或等于周期,则将辅助内存标记位M0.0再次置0。这样就把中断程序2赋予事件0,并且脉宽也将每次递减0.5秒。当脉宽值减为零时,将再次执行,初始化程序(子程序0)。本程序长度为63个字。 / * * * * * * * * * * * * 主 程 序 * * * * * * * * LD SM0.1 / 在第一个扫描周期SM0.1=1。 CALL 0 / 调用子程序0来起动PWM,即初始化PWM。 LDW= SMW70,VW0 / 如果脉宽大于等于(周期一脉宽), R M0.0,1 / 则将辅助内存标记位M0.

28、0置0。 LDW= SMW70,0 / 如果脉宽为零, CALL 0 / 则调用子程序0来重新开始一个完整的PWM。 LD I0.0 / 如果输入I0.0=1。 A M0.0 / 且辅助内存标记位M0.0=1(脉宽增加), ATCH 1,0 / 则把INT1赋给事件0(输入I0.0的正向上升沿)。 LD I0.0 / 如果输入I0.0=1。 AN M0.0 / 且辅助内存标记位M0.0=0(脉宽减少), ATCH 2,0 / 则把INT2赋给事件0(输入I0.0的正向上升沿)。 MEND / 主程序结束。 / * * * * * * * * 主 程 序 0 * * * * * * * * SB

29、R 0 / 初始化脉宽调制 S M0.0,1 / 将增加脉宽的辅助内存标记位M0.0置1。 MOVB 16#CB,SMB67 / 设定输出端Q0.0的PTO/PWM控制字节 / SM67.0:=1 允许接受新的周期。 / SM67.1:=1 允许接受新的脉宽。 / SM67.3:=1 时间基数为1ms(若为0,则时间基数为1s)。 / SM67.6:=1 选择PWM模式(若为0,则PT0模式)。 / SM67.7:=1 允许高速输出功能。 MOVW 500,SMW70 / 指定初始脉宽(500ms)。 MOVW 5000,SMW68 / 周期为5s。 ENI / 允许全部中断。 PLS0 / 对PTO/PWM生成器编程的指令。 MOVW SMW68,VW0 / 将周期置入数据字VW0。 -1 500,VW0 / 将(周期脉宽)的值置入数据字VW0。 RET / 子程序0结束并返回主程序。 / * * * * * * * * 中断服务程序 1 * * * * * * * * INT 1 / 增加脉宽。 +1 500,SMW70 / 脉宽增加500ms。 PLS 0 / 对PTO/PWM生成器编程的指令。 DTCH 0 / 将中断与事件0断开。 RETI / 中断服务程序1结束

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

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