+发表新主题
ztc08 发布于2025-7-5 09:00 253 次浏览 25 位用户参与讨论
跳转到指定楼层

处理定时中断

***概述***
---- 本例用定时中断来产生闪烁频率脉冲。当连在输入端IO.1的开关接通时,闪烁频率减半

---- 当连在输入端I0.0的开关接通时,又恢复成原有的闪烁频率。

---- 叙述由定时中断引起的一般性处理以及改变其时间基准。

---- --具体程序(有详细中文注释)欢迎下载直接调试:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

已有25人评论

ztc08 发表于 2025-7-5 09:09:20

步执行顺序(事件鼓定时器)
***概述***
---- 本程序实现了一个按事件步顺序执行的例子。每步均包含一系列的动作,一步紧跟一步并且只有所有前提条件均满足时,才能执行。如下所示

  前提条件 实际输出  
第一步:  I0.1已被置为1  Q0.2 Q0.3
第二步:  间隔5秒(T37定时器)  Q0.1 Q0.4  
第三步:  间隔5秒(T38定时器)  Q0.0 Q0.5  
第四步:  I0.2已被置为1  Q0.1 Q0.3 Q0.5  
第五步: 间隔5秒(T39定时器)
并且I0.3已被置为1 Q0.3  
复位步执行顺序(I0.0已被置为1)  无

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

ztc08 发表于 2025-7-5 09:14:44

s7-200做Modbus RTU
***概述***


----本程序包括一组子程序和中断程序,通过S7-200自由端口功能来产生从Modbus RTU. 它支持下列Modbus功能:
----1.读输出(线圈)
----2.读输入(触点)
----3.读保持寄存器(V 存储器).
----4.读输入寄存器
----5.写单路输出
----6.写单路保持寄存器
----15.写多路输出
----16.写多路保持寄存器

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

ztc08 发表于 2025-7-5 09:22:24
PLC与M20 GSM Modem的通信(本实例已经损坏,如果找出完整的源文件再传上来.)
概述
---- 本例说明如何以自由协议实现S7-200与M20 GSM Modem的通信。可实现的功能为:当M20收到GSM短信息时,可以自动向发送方回发一条短信息,信息的内容由用户自行定义。
  AT指令:
---- 本例中使用的AT指令主要有四个:

1,短信息格式选择指令CMGF
---- M20支持两种格式的短信息,PDU格式和TEXT格式。
---- AT+CMGF=0 设置短信为PDU格式(默认)
---- AT+CMGF=1 设置短信为TEXT格式
---- 本例中将使用TEXT格式,因此必须对M20进行初始化。

2,读短信息指令CMGR
---- 指令格式为:AT+CMGR=< index >,index一般为1到15的整数,视SIM卡的容量而定,它表示所要阅读的短信息在SIM卡中的存储位置。在本例中,由于收到的短信息在阅读后都会被删除,因此每次收到的短信息都会被保存到第一个存储位置,在收到短信息后,用AT+CMGR=1即可阅读。

3,发送短信息指令CMGS
---- 指令格式为:AT+CMGS=< da >,da为目标手机号,如"13800138000"。M20接到指令后返回一个"〉"提示输入短信内容,短信内容以CHR(26)结束。

4,删除短信息指令CMGD
---- 指令格式为:AT+CMGD=< index >,index与读指令中的index含义相同。本例中使用AT+CMGD=1来删除收到的短信息。
---- 注:所有的指令都以CHR(13)作为结束
  PLC程序执行过程:
---- PLC在第一次扫描时执行初始化子程序,对端口及RCV指令进行初始化,并向M20发送AT+CMGF=1设置短信息格式为TEXT格式。初始化完成后,运行RCV指令使端口处于接受状态。
---- 当M20收到短信息时,会发送 +CMTI: "SM", 1 在PLC的接收完成中断中判断CMTI这四个字符来对M1.0进行置位,在主程序中通过该标志位调用ReadSMS子程序。
---- ReadSMS子程序中执行的操作为:复位子程序的触发条件(复位M1.0),置位M0.0,停止端口的接收,然后向M20发送AT+CMGR=1阅读收到的短信息。置位M0.0的目的是在发送完成中断中判断是哪个子程序执行了发送操作,从而重新对RCV指令进行设置,以接收Modem返回的信息(其他的子程序也采用了相同的做法:SendSM1的触发位为M1.1,子程序执行时置位M0.1;SendSM2的触发位为M1.2,子程序执行时置位M0.2;DelSM的触发位为M1.3,子程序执行时置位M0.3;ReSend的触发位为M1.4,子程序执行时置位M0.4)。Modem在接收到AT+CMGR=1后会将收到短信息的内容发送给PLC,信息的格式为:
---- +CMGR: "REC UNREAD","+8613801184286",,"02/03/05,13:44:12+32"
---- CALL ME
---- OK
---- 其中"CALL ME"为短信息的实际内容,该信息转换为十六进制的形式为:
---- 0D 0A 2B 43 4D 47 52 3A 20 22 52 45 43 20 55 4E 52 45 41 44 22 2C 22 2B 38 36 31 33 38 30 31 31 38 34 32 38 36 22 2C 2C 22 30 32 2F 30 33 2F 30 35 2C 31 33 3A 34 34 3A 31 32 2B 33 32 22 0D 0A 43 41 4C 4C 20 4D 45 0D 0A 0D 0A 4F 4B 0D 0A
---- 这样,在发送完成中断中,以M0.0为条件,将RCV指令的接收的起始字符设置为空格符CHR(32)(十六进制的20)用以接受M20发送的短信息内容。在接收完成中断中,用接受缓冲的第一个字节等于CHR(32)来触发SendSMS1子程序。
---- SendSMS1子程序将从收到短信息的内容中提取出发送方的电话号码,并向M20发送AT+CMGS="发送方号码",Modem在接到该指令后返回的信息为:
---- >
---- 对应的十六进制形式为:
---- 0D 0A 3E 20
---- 其中0D 0A为不可显示字符,20为空格符
---- 这样,在发送完成中断中以M0.1位条件设置接收的起始字符为"〉"CHR(62)用以接受M20发送的提示信息。在接收完成中断中,用接受缓冲的第一个字节等于CHR(62)来触发SendSMS2子程序。
---- SendSMS2子程序将所要发送的内容加上结束字符CHR(26)发送个给M20。如果短信息正确发送,M20返回 +CMGS: xxx(xxx为该SIM卡已发送的短信数量);如果信息未能正确发送,则M20返回 +CMS ERROR。在接收完成中断中,用CMGS来触发DelSMS子程序,用ERROR来触发ReSend子程序。
---- DelSMS子程序向M20发送AT+CMGD=1用来删除收到的短信息,ReSend子程序重新发送SendSMS1中的指令AT+CMGS=" 发送方号码"。
---- 点击下在原程序
---- 附:Modem发送的信息格式
---- 收到短信息时:
---- +CMTI: "SM", 1
---- 0D 0A 2B 43 4D 54 49 3A 20 22 53 4D 22 2C 20 31 0D 0A
---- 读取短信息内容时:
---- +CMGR: "REC UNREAD","+8613801184286",,"02/03/05,13:44:12+32"
---- CALL ME
---- OK
---- 0D 0A 2B 43 4D 47 52 3A 20 22 52 45 43 20 55 4E 52 45 41 44 22 2C 22 2B 38 36 31 33 38 30 31 31 38 34 32 38 36 22 2C 2C 22 30 32 2F 30 33 2F 30 35 2C 31 33 3A 34 34 3A 31 32 2B 33 32 22 0D 0A 43 41 4C 4C 20 4D 45 0D 0A 0D 0A 4F 4B 0D 0A
---- 发送短信息时:
---- >
---- 0D 0A 3E 20
---- 发送成功时:
---- +CMGS: 160
---- OK
---- 0D 0A 2B 43 4D 47 53 3A 20 31 36 30 0D 0A 0D 0A 4F 4B 0D 0A
---- 发送失败时:
---- +CMS ERROR: 500
回复

使用道具 举报

ztc08 发表于 2025-7-5 09:30:24

灯泡亮度控制
***概述***
---- 这个示例解释了一个使用S7-200的集成高速脉冲输出指令来控制灯泡(24V/1W)亮度的例子,模拟电位器0的设置值影响输出端Q0.0方波信号的脉冲宽度,也就是灯泡的亮度。调整电位器时需要一把(2.5mm)螺丝刀。

***程序和注释***
---- 在程序的每次扫描过程中,模拟电位器0的值,通过特殊存储字节SMB28被拷贝到内存字MW0的低字节MB1。电位器的值除以8作为脉宽,脉宽和脉冲周期的比率大致决定了灯泡的亮度(相对于最大亮度)。除以8会带来这样一个额外的好处,即丢弃了SMB28所存值的3个最低有效位,从而使程序更稳定。如果电位器值变化了,那么将重新初始化输出端Q0.0的脉宽调制,借此电位器的新值将被变换成脉宽的毫秒值。

---- 例:SMB28=80 (电位器0的值)
-------- 80/8=10
-------- 10/25(=脉宽/周期)=40%(电压时间比)=40%最大亮度

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

ztc08 发表于 2025-7-5 09:39:25

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

----下面这个例子说明了脉宽调制(PWM)是如何工作的。输出端Q0.0输出方波信号,其脉宽每周期递增0.5秒,周期固定为5秒,并且脉宽的初始值为0.5秒,当脉宽达到设定的最大值4.5秒时,脉宽改为每周期递减0.5秒,直到脉宽为0为止,以上过程周而复始

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

wodeug6 发表于 2025-7-10 05:36:52
真强
回复

使用道具 举报

sy323 发表于 2025-7-10 17:00:52
谢楼主
回复

使用道具 举报

张镐 发表于 2025-7-11 13:50:43
不对啊,都打不开啊
回复

使用道具 举报

haha365365 发表于 2025-7-12 23:32:43
支持楼主的劳动成果,顶一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ| Archiver|手机版|小黑屋| 碧波制图网 Published by Stonespider

Copyright © 2021-2023 Kangli Wu   All Rights Reserved.

Powered by Discuz! X3.5( 苏ICP备18011607号-1 )

快速
回复
返回
列表
返回
顶部