• 6ES7231-0HC22-0XA8产品齐全
  • 6ES7231-0HC22-0XA8产品齐全
  • 6ES7231-0HC22-0XA8产品齐全

产品描述

产品规格模块式 包装说明全新品牌西门值+ 包装说明 全新 - 产品规格子 现场安装

6ES7231-0HC22-0XA8产品齐全


以PIC单片机为核心控制DS18B20温度传感器等外围电路模块实现了对多路温度的实时监测。论述了系统设计思路和软件设计流程。系统具有温度监测、自动拨号、语音报警功能,有较强的实用价值。 
关键词:单片机;温度监测;自动拨号;语音报警 
1系统硬件电路的设计 
1.1系统的功能框图 
系统的主要组成部分包括:温度传感器DS18B20、PIC16F877单片机、可编程键盘/显示器接口芯片8279、OCM4X8C液晶显示器、MODEM、ISD2560语音芯片和信号音检测模块CR6230,系统的功能框图如图1所示。 
系统选用美国Microchip公司生产的价格低廉、性能优良的PIC16F877单片机作为控制主体,充分利用其提供的软硬件资源,可使控制系统硬件电路设计相对简洁,提高系统的可靠性。但由于系统中的各种功能模块较多,每个模块都需要单片机给出一定数量的控制线、数据线等来完成相应的功能,而单片机的I/O资源有限,所以必须进行I/O扩展。这里是通过由单片机的3个I/O引脚(RC1-RC3)控制译码器74LS138从而给出8个选通信号,分别选通几个74LS373和74LS245来实现对各模块的控制与通信的。 
此外,需要给单片机设计复位电路,这里采用RC复位电路,频率约为4MHz。 
1.2多路温度采集 
针对测量环境、精度和系统主机对监测点传输距离的不同要求,以及考虑元件的成本,选择美国DALLAS半导体公司较新推出的一种数字化单总线器件DS18B20。在硬件上,DS18B20与单片机的连接有两种方法。一种是将DS18B20的UDD接外部电源,GND接地,其I/O与单片机的I/O线相连;另一种是用寄生电源供电,此时DS18B20的UDD、GND接地,其I/O接单片机I/O。无论是内部寄生电源还是外部供电,DS18B20的I/O口线要接5K见左右的上拉电阻。DS18B20有六条控制命令,如表1所示。 
CPUCPU对DS18B20的访问流程是:先对DS18B20初始化,再进行ROM操作命令,最后才能对存储器操作和对数据操作。DS18B20每一步操作都要遵循严格的工作时序和通信协议。 
1.3信息显示 
采用OCM4X8C液晶显示模块作为输出显示。可显示汉字及图形,采用单片机8位并行连接方式,通过给定命令和显示数据完成不同界面的显示。当单片机通过译码器对连接液晶显示模块的双向锁存器74LS245使能,并且相关引脚通过单片机传送适当的电平时,给出一定的指令字。实现显示的过程是:在传送命令的状态下先选择指令集清屏,然后*在资料写入或读取时游标的移动方向及显示的移位,开显示,设定显示地址,然后进入传送数据的状态,根据要显示的内容从中文字库中找出相应的16进制代码并将其依次传给液晶显示器(此时要注意每行显示的字数限制),之后单片机就可以对液晶显示模块进行读写操作。
1.4拨号设计 
采用外置MODEM来实现拨号功能,单片机与MODEM之间采用串行通信,连接方式见图2。将电话线接入MODEM后,单片机按照RS232通信标准与MODEM相连,这里是通过MAX232芯片来实现TTL电平与RS232电平的转换,按照MODEM的工作波特率(9600bps)设置后,单片机串口发出相应AT命令可实现对MODEM的控制,同时MO-DEM在执行该命令后会返回一定的信息。返回信息对于判断MODEM是否正常工作以及电话是否拨通和被接听都有重要的作用。 
 

选用4选1模拟开关4052芯片完成单片机与MODEM串行通信外和传感器模块的MAX485串行通信的控制。当单片机端口C的RC3=1、RC2=0、RC1=1时,译码器74LS138的译码线Y5有效,使得74LS373有效,因而来自单片机的RD4位锁存至4052的INH端,此时RD4的低电平来控制4052的选通。因4051的INH端通过反相器连接4052的INH端,所以不被同时选中。 
为了实现MODEM与单片机的实时通信,将系统板上用于连接MODEM的D型插口的RST与CTS互联,DTR与DSR互联。 
1.5语音控制模块 
该部分主要是通过单片机控制语音芯片ISD2560来实现多段语音存储和播放。通过给定相应段地址和控制信号(录放音P/R和使能控制CE),ISD2560及其外围电路即可实现对多段语音的存储和播放。由于语音的存储有600个地址,所以要用A0-A9共十位进行表示,对ISD2560输入地址,首先单片机的端口D通过74LS373输入A0-A7八位地址,然后再单独输入A8、A9两个高位地址。和放音是单片机通过RD7控制录放音引脚P/R实现的。 
1.6信号音检测模块 
信号音检测模块CR6230用于实现准确识别各种电话信号音,包括拨号音、回铃音、忙音和催挂音等功能。即:若得出某种后,相应的信号引脚则输出有效TTL电平。 
接听的判断过程是单片机控制MODEM拨号后,识别回铃音信号是否有效,若无效则重拨或改拨号码;回铃音信号有效则等待,若其变为无效则判断此时对方是否接听,此后还要根据MODEM的返回值来进一步确定是否真被接听。信号的识别需要一定的周期才可以保可靠性和准确率,所以在检测到信号音后要延时大约1s的时间,以保证准确的识别结果;同理,当信号消失后也应略有延时再。硬件设计是将电话线路经通信变压器CRE变换隔离后接入到CR6230的信号输入端IN引脚。通信变压器CRE3用于电话终端产品和中继线产品的线路接口部分,技术指标符合邮电部入网标准。将CR6230的BS、RS、PS、SS引脚分别通过锁存器74LS373与单片机的D3~D0连接,单片机通过读取端口D的低四位就能获得CR6230返回的当前信号状态。另外,若单片机通过控制译码器的Y2引脚将CR6230的CS引脚设置为接收低电平时,BS、RS、PS、SS引脚也将被设置为低电平,这样,其上的信号被以等待接收新的信号。 
2系统的软件设计流程图 
系统软件设计的难点在于对DS18B20的控制(如图3)。 
3结语 

设计以PIC单片机系统为核心,由单片机、温度传感器、RS-485串口通信和计算机组成,利用了DS18B20“*总线”数字化温度传感器,能够对多点的温度进行实时巡检。各检测单元(从机)能独立完成各自功能,同时能够根据主控机的指令对温度进行定时采集,测量结果不仅能在本地显示,而且可以利用单片机串行口,通过RS-485总线及通信协议将采集的数据传送到主控机,进行进一步的存档、处理。主控机负责控制指令的发送,控制各个从机进行温度采集,收集测量数据,并对测量(包括历史数据)进行整理、显示和存储。主控机与各从机之间能够相互联系、相互协调。本系统运行稳定、工作精度高,经测试,在-10℃~+70℃间测得误差为0.25℃,80℃到105℃时误差为0.5℃,当T105℃误差增大到1℃左右。实践证明,该控制系统操作方便,维修简单,运行稳定、可靠。 

202207281244519172844.jpg202202231632207636284.jpg


本例说明如何以自由协议实现S7-200与M20 GSM Modem的通信。可实现的功能为:当M20收到GSM短信息时,可以自动向发送方回发一条短信息,信息的内容由用户自行定义。

  AT指令:
---- 本例中使用的AT指令主要有四个:

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

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

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

    删除息指令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","+86",,"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","+86",,"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





http://zhangqueena.b2b168.com

产品推荐