📄 rs-232接口转换为rs-485接口的智能转换器_中国蓝科信息技术网.htm
字号:
COLOR: #0000cc; TEXT-DECORATION: underline
}
#usrbar A:link {
COLOR: #0000cc; TEXT-DECORATION: underline
}
#usrbar A:visited {
COLOR: #0000cc; TEXT-DECORATION: underline
}
#ft {
CLEAR: both; FONT-SIZE: 12px; COLOR: #666666; LINE-HEIGHT: 20px; FONT-FAMILY: Arial; HEIGHT: 20px; TEXT-ALIGN: center
}
#ft A {
COLOR: #7777cc; TEXT-DECORATION: underline
}
#ft A:link {
COLOR: #7777cc; TEXT-DECORATION: underline
}
#ft A:visited {
COLOR: #7777cc; TEXT-DECORATION: underline
}
#usrbar {
LETTER-SPACING: normal
}
#usrbar A {
LETTER-SPACING: normal
}
#usrbar A:link {
LETTER-SPACING: normal
}
#usrbar A:visited {
LETTER-SPACING: normal
}
#ft {
LETTER-SPACING: normal
}
#ft A {
LETTER-SPACING: normal
}
#ft A:link {
LETTER-SPACING: normal
}
#ft A:visited {
LETTER-SPACING: normal
}
</STYLE>
<DIV id=usrbar><NOBR>
<SCRIPT> var myref = encodeURI("http://hi.baidu.com/xjmbs/blog/item/937ac909cb498383d1581bde%2Ehtml");</SCRIPT>
<A href="http://www.baidu.com/" target=_blank>百度首页</A> | <A
href="http://hi.baidu.com/" target=_blank>百度空间</A>
<SCRIPT language=JavaScript>
document.write(" | <a href='http://passport.baidu.com/?login&tpl=sp&tpl_reg=sp&u="+myref+"'>登录</a>");
</SCRIPT>
</NOBR></DIV>
<DIV id=main align=left><!--[if IE]>
<SCRIPT>
var objmain = document.getElementById("main");
function updatesize(){ var bodyw = window.document.body.offsetWidth; if(bodyw <= 790) objmain.style.width="772px"; else if(bodyw >= 1016) objmain.style.width="996px"; else objmain.style.width="100%"; }
updatesize(); window.onresize = updatesize;
</SCRIPT>
<![endif]-->
<DIV id=header>
<DIV class=lc>
<DIV class=rc></DIV></DIV>
<DIV class=tit><A class=titlink title="马斌山的空间 http://hi.baidu.com/xjmbs"
href="http://hi.baidu.com/xjmbs">中国蓝科信息技术网</A></DIV>
<DIV
class=desc>蓝科信息技术是综合性工农业自动化技术服务,电子产品研发,电子产品和电子元件销售为主单位,有项目找不到人做那就找蓝科;有项目没有技术人员来维护找蓝科;要购买产品找蓝科……蓝科与你真诚合作!</DIV>
<DIV id=tabline></DIV>
<DIV id=tab><A href="http://hi.baidu.com/xjmbs">主页</A><A class=on
href="http://hi.baidu.com/xjmbs/blog">博客</A><A
href="http://hi.baidu.com/xjmbs/album">相册</A><SPAN>|</SPAN><A
href="http://hi.baidu.com/xjmbs/profile">个人档案</A> </DIV></DIV>
<DIV class=stage>
<DIV class=stagepad>
<DIV style="WIDTH: 100%">
<TABLE class=modth cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD class=modtl width=7> </TD>
<TD class=modtc noWrap>
<DIV class=modhead><SPAN class=modtit>查看文章</SPAN></DIV></TD>
<TD class=modtc noWrap align=right></TD>
<TD class=modtr width=7> </TD></TR></TBODY></TABLE>
<DIV class=modbox id=m_blog>
<DIV class=tit>RS-232接口转换为RS-485接口的智能转换器</DIV>
<DIV class=date>2007-03-26 00:23</DIV>
<TABLE style="TABLE-LAYOUT: fixed">
<TBODY>
<TR>
<TD>
<DIV
class=cnt>摘要:介绍一种将RS-232接口转换为RS-485接口的智能转换器,该转换器采用串口窃电技术获取电源,采用单片机技术实现了数据收发流向的自动控制。文中给出了转换器的硬件电路及软件设计方法。<BR>关键词:接口转换
串口窃电 低功耗
<P></P>
<P>现代工业企业,由于自动化设备众多,往往采用局域网控制形式,而利用RS-485接口组网简单,成本低廉,且通信距离可满足一般工业应用,因此获得了广泛应用,但一般的微机系统或工业自动化设备,如PLC,智能化仪表等,往往仅具有RS-232接口,因此
实现RS-232接口与RS-485接口的转换,就具有重要的实际意义。传统的做法是在原设备内扩展一个通信适配卡,由该卡实现RS-232→RS-485接口的转换。采用接口转换卡存在着以下几方面的问题:⑴由于各设备采用的总线结构不同,转换卡的通用性较差;⑵占用原系统的软硬件资源较多;⑶硬件复杂,成本高,尤其对一些硬件结构紧凑或无法改动原设备软硬件资源的自动化设备,使该方案根本无法实施。<BR>针对上述情况,我们设计了一种小巧的无须外部供电的智能收发转换器,实现了RS-232和RS-485接口间的智能转换。<BR>转换器系统构成<BR>本智能转换器作为一个独立的电平转换控制器,主要完成电源获取、RS-232电平与RS-485电平间的转换及实现数据流向的自动控制,其系统构成框图如图1所示:</P>
<P></P>
<P><IMG src="RS-232接口转换为RS-485接口的智能转换器_中国蓝科信息技术网.files/0407011.jpg"
border=0></P>
<P>图1
系统构成框图<BR>由于本收发器要从标准RS-232接口上获取电源,而RS-232接口可提供的电源功率又十分有限,所以如何降低转换器的功率消耗是本设计的重点。为降低功耗,本转换器均选用<BR>新型低功耗器件。<BR>电源电路<BR>本转换器采用串口窃电的方法从RS-232接口获取电源,并经DC/DC电路转换为+3V电源供给单片机及接口电平转换芯片使用。<BR>标准RS-232接口中有三个发送信号,即数据终端准备好DTR,请求发送RTS和发送数据TXD。这三根输出信号线中,每根线上的典型输出电流为±8mA,典型输出电压为±12V。我们即从此三根线中来获取电源,因TXD发送数据线处于等待发送及发送“1”的时间要大于发送“0”的时间,故电源转换采用负电源输入方式,以最大限度的增加电源输入功率,保证转换电路的正常工作。<BR>从RTS和DTR两根信号线上可获取的输入功率为P=2×U×I=2×12×8=192mw,当电源转换效率为85%,输出电压为3V时,RTS和DTS可提供的输出电流为I=P.η/U=54.4mA。<BR>而考虑TXD处于等待发送及发送“1”态时,也可为系统提供一定的功率,
故由RS-232接口提供的输出电流将大于此值。这里将DTR、RTS及TXD三根输出线经二极管整流隔离后输出电压为-12V,输出电流大于54.4mA的负电源,为降低转换器功耗,将电源输出电压选取为+3V显然各公司提供的DC-DC转换器中没有一个能直接做到-12V输入+3V输出,因此我们采用MAXIM公司的MAX716电源IC,稍做改动,实现了此功能。由MAXIM716设计的DC-DC转换电路如图2所示。</P>
<P></P>
<P><IMG src="RS-232接口转换为RS-485接口的智能转换器_中国蓝科信息技术网.files/0407012.jpg"
border=0></P>
<P>图2 DC-DC
转换电路<BR>由MAXIM716设计的电源电路主要特点是转换效率高达85%,外围电路简单,无需变压器,低功耗静态电流仅100μA,该转换器的输入电压范围为-2.5V〜-13.5V,输出电压为+3V,输出电流可达300mA,但由于输入功率的限制在本设计中仅可输出略大于54.4mA的电流。<BR>RS-232接口<BR>本转换器采用一只单发/单收RS-232接口芯片用于完成RS-232电平到TTL电平的转换,对接口芯片的要求是低工作电源、低功耗、小体积。在这里我们选用MAXIM公司的MAX3221E,该芯片的工作电压为3〜5.5V,静态电流小于1μA,负载电流小于2mA,数据传输率为120kbps,外围元件少,仅需4个0.1μf的外接电容,且该芯片的体积也是同类产品中体积最小的,MAX2321E还具有±15KV
ESD保护功能,接口电路见图3。<BR><BR><IMG
src="RS-232接口转换为RS-485接口的智能转换器_中国蓝科信息技术网.files/0407013.jpg" border=0></P>
<P>图3 智能转换接口电路</P>
<P>RS-485接口<BR>RS-485接口芯片用于完成将TTL电平转换为RS-485接口电平的任务,本转换器采用MAX3485作为RS-485接口芯片,该芯片的主要技术参数为:工作电源为3~3.6V,工作电流1mA,数据传输率为12Mbps。当驱动60Ω负载时(RS-485网络终端匹配电阻120Ω的并联值)峰值电流可达50mA。<BR>防雷保护<BR>通信线路中瞬态电压干扰是威胁通信接口安全的主要因素,而雷电波保护是必不可少的,为保证通信网络的安全,这里采用瞬态电压抑制器TVS作为保护器件,该器件可承受高达数KV的脉冲电压和数十至数百安培的浪涌电流,瞬间承受功率高达数千瓦,本转换器在RS-485的发送端及接收端采用了3只TVS,分别对线路之间和线路对地间的瞬态电压干扰进行抑制,可避免雷电对通信网络的破坏。<BR>单片机<BR>本转换器采用Microchip公司的微功耗小体积单片机PIC12C508A,其主要参数为;工作电压2.7〜5V,工作电流小于1mA,6根I/O口线,512字节ROM。PIC12C058A完成的功能是读取波特率设置开关的数值及串行数据位数开关的状态,从而根据开关的数值或状态完成收发数据的自动转换控制功能,各引脚功能如下:GP0、GP1、GP4、GP5四个引脚设定对应于16种常用的波特率(300、600、1200至38.4kbps等8种以及900、1800至115.4kbps等8种)的延时时间,GP3对应于10位或11位串行数据格式,GP2为TXD输入,用来检测UART何时发送和停止发送数据,GP1为复用输出引脚用于控制MAX3485的接收使能,GP0也为复用输出引脚,用来控制MAX3485的发送使能。<BR>本转换器使用的最大电流为各芯片峰值工作电流之和,即:<BR>IΣ=0.12+2.0+50.0+1.0=53.12mA,此电流小于DC-DC转换器的最小输出电流54.4mA,从而证明了串口窃电技术是完全可行的。<BR>软件设计<BR>单片机软件部分主要完成功能如下:上电后单片机将所有的I/O设为输入,并读入I/O状态且保存到寄存器中,接下来将GP0和GP1设定为输出状态并将其设为低电平输出,即RS-485口处于禁止发送接收允许状态,CPU根据数据开关的设定值,确定出用户设定的波特率和串行数据格式,从而预置内部的延时设定,CPU检测到UART开始通信后,打开发送使能,经内部预置延时后开始在一个位宽时间内检测是否有下一个起始位到来,如检测到则重新延时等待,否则关闭发送使能,结束当前通信,重新检测UART起始位。<BR>结束语<BR>本转换器采用串口窃电技术而省略了外部电源,采用新型低电压、低功耗器件设计,一方面支持了串口窃电技术,另一方面又简化了电路设计,降低了成本,同时该转换器还具有很强的防雷电冲击能力使得本转换器具有很高的实用价值,在扩展基于RS-485总线的通信网络分支及延伸RS-232总线通信距离方面均可得到广泛的应用。</P></DIV></TD></TR></TBODY></TABLE><BR>
<DIV class=opt><A title=查看该分类中所有文章
href="http://hi.baidu.com/xjmbs/blog/category/¼¼Êõ½»Á÷">类别:技术交流</A> | <A
title=将此文章添加到百度搜藏
onclick="window.open('http://cang.baidu.com/do/add?it='+encodeURIComponent('RS-232接口转换为RS-485接口的智能转换器'+'_百度空间')+'&iu='+encodeURIComponent(location.href)+'&fr=sp#nw=1','_s','scrollbars=no,width=600,height=450,right=75,top=20,status=no,resizable=yes'); return false;"
href="http://cang.baidu.com/do/add" target=_blank>添加到搜藏</A> | 浏览(<SPAN
id=result></SPAN>) </DIV>
<DIV class=line></DIV>
<SCRIPT language=JavaScript>
allkey=allkey+"f3f14f2c10fdb1ec8a139920_937ac909cb498383d1581bde_";
</SCRIPT>
<DIV id=in_comment><A name=comment></A>
<DIV class=tit>网友评论:</DIV>
<SCRIPT>
function writecmt(type,id,cmtname,cmturl,cmttime){
var html1="";
if(type==1){
if(cmturl==""){
html1="<a name='"+id+"'>"+cmtname+"</a> - <span class='date'>"+cmttime+"</span> ";
}else{
html1="<a name='"+id+"' href='"+cmturl+"' target='_blank' title='"+cmturl+"'>"+cmtname+"</a> - <span class='date'>"+cmttime+"</span> ";
}
}else{
if(cmtname=="匿名网友"){
if(cmturl==""){
html1="<a name='"+id+"'>"+cmtname+"</a> - <span class='date'>"+cmttime+"</span> ";
}else{
html1="<a name='"+id+"' href='"+cmturl+"' target='_blank' title='"+cmturl+"'>"+cmtname+"</a> - <span class='date'>"+cmttime+"</span>";
}
}else{
if(cmturl==""){
html1="<div class='f14' style='display:inline'>网友:<a name='"+id+"'>"+cmtname+"</a> - <span class=\"date\">"+cmttime+"</span></div>";
}else{
html1="<div class='f14' style='display:inline'>网友:<a name='"+id+"' href='"+cmturl+"' target='_blank' title='"+cmturl+"'>"+cmtname+"</a> - <span class=\"date\">"+cmttime+"</span></div>";
}
}
}
document.write(html1);
}
</SCRIPT>
<DIV id=page></DIV></DIV>
<DIV id=in_send>
<FORM id=popFormSubmit name=form1 onsubmit="return checkcmtform()"
action=/xjmbs/commit method=post><INPUT type=hidden value=8 name=ct> <INPUT
type=hidden value=1 name=cm> <INPUT type=hidden value=937ac909cb498383d1581bde
name=spBlogID>
<SCRIPT language=JavaScript>
document.write("<input type='hidden' name='spRefURL' value='"+window.location.href+"'>");
</SCRIPT>
<DIV class=tit>发表评论:</DIV>
<TABLE cellSpacing=5 cellPadding=0 width=620 border=0>
<TBODY>
<TR>
<TD class=f14>姓 名:</TD>
<TD><INPUT id=spBlogCmtor style="WIDTH: 220px" onfocus=hidErr(1);
maxLength=49 onchange="checkname('spBlogCmtor')" name=spBlogCmtor>
<DIV id=nmerror style="DISPLAY: none">*姓名最长为50字节</DIV></TD></TR>
<TR id=1_err style="DISPLAY: none">
<TD> </TD>
<TD>
<DIV class=error id=1_err_con></DIV></TD></TR>
<TR>
<TD class=f14>网址或邮箱:</TD>
<TD><INPUT id=spBlogCmtURL style="WIDTH: 360px" onfocus=hidErr(2);
maxLength=128 onchange="checkeandu('spBlogCmtURL')" name=spBlogCmtURL>
(选填)</TD>
<SCRIPT>
G("spBlogCmtor").value="";
G("spBlogCmtURL").value="";
</SCRIPT>
</TR>
<TR id=2_err style="DISPLAY: none">
<TD> </TD>
<TD>
<DIV class=error id=2_err_con></DIV></TD></TR>
<TR>
<TD class=f14 vAlign=top>内 容:</TD>
<TD><TEXTAREA id=spBlogCmtText style="WIDTH: 520px; HEIGHT: 155px" onfocus=showverkey();hidErr(3); name=spBlogCmtText></TEXTAREA>
<SCRIPT>
G("spBlogCmtor").value=G("spBlogCmtor").defaultValue;
G("spBlogCmtText").value="";
</SCRIPT>
</TD></TR>
<TR id=3_err style="DISPLAY: none">
<TD> </TD>
<TD>
<DIV class=error id=3_err_con></DIV></TD></TR>
<TR id=vercode>
<TD class=f14 vAlign=top>验证码:</TD>
<TD vAlign=top><INPUT type=hidden
value=16FB8B8937EB0ACADF883BC301015BC0B835B8CAEB8FEDE3A3B3B25E67AB5D8999B03F9FFDCE75C2AC39D2ADDB9DA72F0DD091A8C6904D11A49057516F594EBD
name=spVcode> <INPUT maxLength=4 size=6 name=spVerifyKey
autocomplete="off">请输入下图中的四位验证码,字母不区分大小写。<BR>
<SCRIPT language=JavaScript>
var imgsrc="http://post.baidu.com/cgi-bin/genimg?16FB8B8937EB0ACADF883BC301015BC0B835B8CAEB8FEDE3A3B3B25E67AB5D8999B03F9FFDCE75C2AC39D2ADDB9DA72F0DD091A8C6904D11A49057516F594EBD";
document.write("<img id='verifypic' src='"+imgsrc+"' width='120' height='40'>");
function newverifypic(){
document.getElementById("verifypic").src = imgsrc +"&t="+ Math.random();
}
</SCRIPT>
<A title=看不清左边的字符 href="javascript:newverifypic();">看不清?</A> </TD></TR>
<TR>
<TD class=f14 vAlign=top> </TD>
<TD class=f14
vAlign=top><INPUT type=submit value=发表评论 name=btn_ok></TD></TR></TBODY></TABLE></FORM></DIV><BR></DIV>
<TABLE height=8 cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD class=modbl width=7> </TD>
<TD class=modbc> </TD>
<TD class=modbr width=7> </TD></TR></TBODY></TABLE></DIV></DIV></DIV></DIV>
<SCRIPT language=javascript>
<!--
var hstr="/xjmbs/brwstat?key1=1";
document.write("<script src='"+hstr+"&key2="+allkey+"'><\/script>");
//-->
</SCRIPT>
<BR>
<CENTER>
<DIV id=ft>©2007 Baidu</DIV></CENTER>
<SCRIPT>
if(document.getElementById("m_blog"))
{
var imgarray = document.getElementById("m_blog").getElementsByTagName('img');
var imgw = document.getElementById("m_blog").offsetWidth;
imgw =imgw-40;
for(var i=0; i<imgarray.length; i++){
if(imgarray[i].className=="blogimg" && imgarray[i].width>=imgw) imgarray[i].width=imgw;
}
}
</SCRIPT>
</CENTER><IMG style="DISPLAY: none" src=""> </BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -