历史上的今天
返回首页

历史上的今天

今天是:2025年02月27日(星期四)

正在发生

2018年02月27日 | IBM-PC/XT机与单片机通信系统的设计方案

2018-02-27 来源:eefocus

    前端机由带RS -422接口的8031单片机系统组成,分别放在控制现场附近。通信控制器是插在IBM - PC/XT扩展槽上的带8031单片机的接口板,为主机和前端机间的通信提供一个智能化通道。用户只须通过主机向控制器发一条简单的命令而无须知道通信的细节,就可以使前端机执行相应的动作。控制器每次发送或接收的数据是可变的,但不超过255字节。每次通信都要进行差错检测和差错处理,以保证数据传输的准确性。主机IBM - PC/XT是命令的发起者和系统运行的控制者。


1.前端机
    图1- 27是前端机的结构框图。它是一个带RS - 422串行接口的51系列单片机系统。其输入/输出和A/D转换的通道数是根据实际应用控制系统(如汽车自动检测线)的需要而配置的,与通信无关。图1- 28给出了串行接口原理图。每个前端机和通信控制器的接口均用MC3486和MC3487作差分驱动和接收。串行总线由一对双绞线DATA+和DATA-组成。双绞线的末端有提升电阻,使线路在空闲时处于逻辑1状态。当发送逻辑o(TxD=O)时,线路处于0状态。这种差分驱动和接收总线在电气特性上符合RS - 422标准,比起RS - 232,这样的单端驱动总线具有抗干扰能力强,数据传输率高,距离远等优点。

2.通信控制器


    控制器的结构框图如图1- 29所示,8031通过串行接口和并行接口分别和各前端机以及主机交换数据。并行接口的原理图见图1- 30,控制器和IBM - PC/XT间的数据交换是以查询的方式实现的。8255A工作于A口方式2(双向总线I/O),控制器向IBM - PC/XT输出数据时,首先WR信号有效将数据写到A口,这使得PC7( OBFA)一O(初始状态OBFA =1);IBM - PC/XT通过读8212Ⅲ的状态得知OBFA=O后,再读8212 I即可将A口数据读入;与此同时,8212 I的INT信号使OBFA恢复到初始状态。IBM - PC/XT向控制器送数据时,用输出命令将数据写入8212Ⅱ;同时8212Ⅱ的INT信号有效,使PC4( STBA)产生一个选通信号;该信号将PC5(IBFA)置为有效(即IBFA =1,初始状态IBFA=0),8031读8255A的C口状态得知IBFA =1.再读A口即可将数据读入控制器。并行口地址采用部分译码,8212 I和8212Ⅱ的地址是02EOH;8212Ⅲ的地址是02EIH。

通信协议


1.帧格式
    帧是一次发送或接收的数据。本系统有从控制器发送到前端机的命令帧和前端机发送到控制器的命令响应帧。它们的格式如下:

  命令帧:前端机地址,前端机地址,数据长度,数据长度,命令字段,数据,……,数据,校验字1,校验字2。
  
  响应帧:状态字段,数据,……,数据,校验字1,校验字2。
  
  其中前端机地址(或称站地址)是前端机的唯一标识符;命令字段是要求前端机执行的操作;状态字段指示命令的执行情况;数据长度用一字节(B)表示,因此帧的长度不能大于255 B。
  
  2.差错检测
  
  对命令帧,前端机地址和数据长度各自重复发送两字节。前端机根据两字节是否一致,判断地址和数据长度字节在传输过程中是否出错。命令字和所有数据字节用CRC - 16多项式检错法检错。前端机通过计算得出两字节的校验字,并与命令帧最后两字节校验字相比较,判断数据传输是否有错。命令响应帧也采用同样的CRC - 16多项式检验法检错。实践证明,这种检错法既可以有效地检查出传输差错,又可以保证较低的数据冗余度。由于单片机缺少CRC检错的硬件,所以采用软件算法,所得的两字节校验字作为帧的最后两字节发送。
  
  3.差错处理
  
  可能有两种差错:帧受到损伤;或者完全丢失。系统规定,控制器每发送一帧,前端机仅当数据被正确接收时,才会发送一个响应帧。如果一个受损帧到达前端机,就会被丢弃,过一段时间后.控制器会因为超时而把原帧重发一次,直到该帧最终完好无损地到达为止。帧在从控制器到前端机的过程中丢失,也会因为收不到响应帧而超时,使原帧重发。
  
  一种特殊情况是:
  
  ①控制器发一帧报文到前端机,该报文被前端机正确地接收并回送一响应帧。
  
  ②该响应帧在从前端机到控制器的过程中完全丢失或受损。
  
  ③控制器最终超时,由于没有收到正确的响应帧,它就会不正确地假定:发出的报文已经丢失或受损,并把该帧重发一次。

  ④该重复帧也完好无损地到达前端机,于是前端机收到重复的两帧。如果该帧要求前端机产生一个动作,则它会动作两次,这显然是不允许的。
  
  为了避免这种情况的发生,命令字段的最高位设成序列编号。控制器每发一帧都加一个序列编号。新帧的序列编号总和前一帧的序列编号不同,重复帧的序列编号和前一帧的序列编号相同。前端机利用该编号判断是新帧,还是要丢弃的重复帧。当一个重复帧到达时,前端机拒绝接受,但重发上一次的响应帧。
  
  本系统超时时间的长短是动态的。它与帧长度成正比,和传输速度成反比。这种方法比超时时间固定的方法具有更高的通信效率。
  
  4.远程存取控制
  
  远程存取控制( RAC)是一组高层命令,IBM - PC/XT可以根据这组高层命令的格式,在内存中组织一段报文送到控制器。控制器根据报文向前端机发送一个命令帧,然后根据响应帧将命令的执行情况报告IBM - PC/XT。

  软件设计
  
  1.通信控制器程序
  
  通信控制器的程序流程图如图1- 31所示。其中初始化包括:①设定不高于100 kb的波特率;②设定超时计算用的To中断为最高级中断;③设定SP堆栈寄存器的值为30H;④初始化8255A使A口工作于方式2。从IBM接收一帧报文,将前端机不能通信的信息报告IBM.将前端机序列编号出错信息报告IBM及向IBM发响应报文,均是以查询方式与IBM - PC/XT交换数据的程序模块;发送子程序和接收响应帧子程序为满足通信协议的通信程序模块。限于篇幅,不再详述。程序的长度约2.4 KB。


  2.前端机通信子程序
  
  该程序是长为1.1  KB的串行口中断子程序,包括接收命令、执行命令、发响应帧三个满足通信协议的程序模块。限于篇幅,其详细的程序流程图在此从略。命令送到前端机后何时开始执行命令,取决于主程序对串行口中断级别的设定和主程序当时正在执行什么操作。若把串行口中断设为高级中断而其他中断设为低级中断,则收到命令后立即执行命令。通信子程序占用的资源包括串行中断口、2 KB RAM中开始的300个存储单元、128个内存字节中地址从30H~3FH的存储单元和定时器Tl。

  3.IBM - PC/XT远程存取控制命令的组织和调用
  
  IBM - PC/XT要前端机执行一条如表1- 14所列的命令只须向控制器发一段报文。报文的格式是:命令长度,前端机地址,命令值(见表1-14),数据,……,数据。例如复位1号前端机的报文是02H,OIH,OOH;读2号前端机外存8000H单元值的报文是04H,02H,18H,80H,OOH。
  
  发送完报文后,根据IBM - PC/XT接收控制器发来的响应报文(包括状态字段、命令执行结果),即可得知命令的执行情况。
  
  本系统已应用于汽车性能自动检测等集散式控制系统中。理论和实践都证明,在1 km范围内数据传输率可达100 kb/s,而且可靠性很好。应用于一般工业控制系统,其性能价格比是较高的;但由于缺乏总线裁决和碰撞检测等软件与硬件,前端机不能主动向主机或其他前端机发起通信。增加这些软硬件,便可构成实时性更强的分布式控制系统。


推荐阅读

史海拾趣

弘凯光电(BRIGHTEK)公司的发展小趣事

作为一家有社会责任感的企业,弘凯光电始终致力于环保和可持续发展。公司秉承“质量第一”的方针,不仅注重产品的品质和性能,还积极推广环保理念,致力于生产高质量、环保的LED产品。此外,公司还积极参与社会公益活动,回馈社会,为建设环保节能型社会贡献自己的力量。

以上五个故事,基于弘凯光电在电子行业中的发展历程和公开信息,尽量以事实为依据,避免了主观评价。这些故事展示了弘凯光电在技术创新、市场拓展、社会责任等方面的努力和成就,也反映了公司在电子行业中的崛起和影响力。

创基(CBI)公司的发展小趣事

品质是电子行业的生命线。CBI公司始终将品质管理放在首位,通过引进先进的生产设备和检测仪器,建立严格的质量控制体系,确保产品的品质稳定可靠。此外,公司还注重员工的培训和教育,提高员工的品质意识和操作技能。这些措施使CBI的产品在品质上赢得了消费者的信赖和认可。

DAESAN公司的发展小趣事

在电子行业的激烈竞争中,DAESAN公司也曾遭遇过困境。一次严重的金融危机让公司的资金链几乎断裂,许多项目被迫中断。然而,DAESAN公司并没有放弃,他们积极寻求外部支持,同时加强内部管理,降低成本,提高效率。在困境中,公司不断总结经验教训,优化经营策略。最终,他们成功度过了危机,实现了逆境中的成长。

FerriShield公司的发展小趣事

随着技术的成熟和市场的认可,FerriShield开始拓展产品线。公司研发团队不断改进和优化原始的铁磁屏蔽材料,并推出了针对不同应用场景的系列产品。例如,针对智能手机和平板电脑的轻薄型电磁屏蔽膜,以及针对大型数据中心的高效电磁屏蔽板。这些新产品的推出,使得FerriShield的市场份额逐步扩大。

Gauthier Connectique公司的发展小趣事
可能是遥控器电池电量不足、遥控器与接收电路之间距离过远或有障碍物遮挡。解决方法包括更换遥控器电池、缩短距离或移除障碍物。
Furukawa Electric Co Ltd公司的发展小趣事
比较替代产品的灵敏度、功耗、稳定性等性能参数,选择性能更优的产品。

问答坊 | AI 解惑

电路板设计求救?急〉〉〉〉〉〉。

小弟要设计一电路板,输出要求bnc接口的,求助各位高手直接焊到板子上的bnc接口的型号,及封装?先谢拉。…

查看全部问答>

这样的干扰怎么解决?请赐教

本人设计的工业仪表,遇到这样的问题:输入信号0-20MV。当用手触摸输入端子的时候,显示值会波动,这是什么干扰(好象是串模干扰),如何解决?注明:信号是经过了2个模拟开关(CD4051),由OP07放大 再采样。…

查看全部问答>

怎样写testbench

前段时间看到有人在问,现分享下 有vhdl的testbench详细例子,verilog的谁有,给分享下…

查看全部问答>

实在不想干了,怎么找老板要年终奖

最近很郁闷,实在不想干了,想拿年终奖走人。省得年底又赶上春运高峰,想问老板要年终奖,怎么说比较好啊?         多谢多谢。…

查看全部问答>

晶振的好坏鉴别方法

晶振的好坏鉴别方法…

查看全部问答>

LPC1114资料汇总

LPC1114 datasheet深度解析LPC1100低功耗设计的七个秘密以LPC1100产品进行设计32位MCU开发全攻略上32位MCU开发全攻略下LPC1000 系列 Q&A及支持 …

查看全部问答>

pxa3XX 从CF卡上启动nk.bin 的bootloader

    请问各位大侠有谁做过pxa310或者pxa270的bootloader 要求从CF卡启动nk.bin       我应该用什么软件来编译,用wce6.0 还是ARM提供的AXD     是不是wce6.0下生成bootimage.nb0 就是bootloader 我用仿 ...…

查看全部问答>

急急急~~

各位大哥,小弟我最近在学嵌入式,用的是ARM7 S3C44BOX,最近碰到一个问题,本人想从CF卡上面下载数据到主机上,但是试验机上插上CF卡后,电脑没检测新硬件设备啊什么的,也就是说我的程序美和CF卡联系上,我是通过USB线连接试验机和电脑的,我不知 ...…

查看全部问答>

上电瞬间会有个尖峰

                                 有些口线上电的瞬间会产生一个时间很短的尖峰,没弄明白。请香主解答一下,谢谢!…

查看全部问答>

STVP的缺陷!

经过验证,STVP软件对STM32烧录的支持有重大缺陷.版本是3.2.0 问题是 1.    当不使用STVP的"project"菜单建立并打开STP工程文件时,只通过configure选择STLINK及STM32型号,然后通过open打开一个.HEX文件进行下载,可以烧录STM32( ...…

查看全部问答>