Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1|回复: 0

聊一聊工控机与单片机主从分布式控制系统串行通信

[复制链接]

12万

主题

0

回帖

36万

积分

超级版主

Rank: 8Rank: 8

积分
360980
发表于 7 天前 | 显示全部楼层 |阅读模式
硬件接口设计本文所述控制系统由工控机和多台AT89C2051单片机组成,主从机之间数据传输采用异步串行通讯方式。由于工控机的串行通讯口是RSD232C接口,其逻辑电平对地是对称的,与AT89C2051单片机串行口输出的TTL电平不同,因此要保证两者之间可靠地进行数据传输,应在通讯线路中接电平转换器,常用的电平转换芯片有ICL232、MAX232芯片等。本文采用MAX232电平转换芯片。
多个单片机pc机通信电路2软件设计21AT89C2051单片机多机通讯功能AT89C2051单片机串行口具有:串行发送缓冲器接收缓冲器(SBUF),串行口控制寄存器(SCON),特殊功能寄存器(PCON)。通过设置SCON可以有4种工作方式,其中工作方式2、3适用于多机通讯。AT89C2051单片机的串行通信方式3是波特率可变的9位为数据异步通信方式,也是目前多机通讯中应用比较多的方式。在此方,AT89C2051传送一巾贞信息共11位:1位起始位,8位数据位,1位可程序控制为“1”或“0”的第9位数据和1位停止位,其中的第9位数据可作奇偶校验位,也可作“地址帧”和“数据帧”的识别标志位。
工控机通讯功能工控机配有串行异步通讯端口(COM1端口地址为3f8H,CM2端口地址为2f8H),接口板上的通用异步接收发送器(UART),是一片8250或一片结构、编程方法与8250相同的芯片,内部有10个寄存器。PC机串行通讯程序设计,程序员只要应用输入输出命令对UART内的寄存器进行输入输出操作,从而设定串行通讯的波特率、数据传送格式、是否允许中断、发送或接收数据等。
种新的多机通讯方法在常规的多机通讯方法中,奇偶校验位已用作发送地址码(通道号)或数据的特征位,而数据通信的校核则采用累加和校验方法。采用这种方法不但软件开销和进行通信的数据量增加了,而且时性也受到影231通信的基本原理上位机发送数据给下位机,下位机要产生接收中断必须同时符合两个条件。
数据为52D直置为“0”,并使+,清零,则不论第9位数据(+98)为何值,下位机均可产生串行接收中断,这样第9位就可作为差错检测的奇偶校验位了。如上位机与某下位机通信时,先发送地址码,待握手成功后再发送数据命令,此时该下位机的FLAG被置为“1”,相当于该机的“口袋”已打开,上位机不断从该下位机中取数据,取完误后发出一命令使该下位机中的FLAG复原为“0”,现“关口袋”。
下位机向上位机发送数据时,先发送要传送数据的长度,然后才开始发送有效数据。
约定00H为取数命令,0FFH为复位命令,通信采用偶校验,波特率设为2400bs上面给出PC机主函数的流程图,如所示。PC机通信程序采用VC++60语言编写。下位单片机的通信模块,包括主程序和中断服务程序,其程序流程图分别如和所示。何现上位机与相应发送地址相符的下位机之间一对一通信呢,可采用软件方法。具体方法如下:在下位机程序中设立一个标志变量FLAG,初始化时FLAG置为“0”,当上位机发送数据时,各下位机均会产生接收中断,中断服务程序先判断本机FLAG的值。若FLAG为“0”,则把接收的数据与本机地址比较,如果一致,则置FLAG为6“,并发回本机地址码作为应答,否则马上跳出中断服务程序;如果FLAG是”1“,说明上位机发送来的是控制命令,则转相应命令处理程序,比较后才跳出中断服务程序,主程序。上位机与该下位机通信完毕后,再令该下位机的FLAG为”0“。如果握手失败,则上位机发送复位命令给下位机,然后重新开始握手,次都不成功则转出错处理。
 工控机软件现方法及可靠性措施①对各下位机进行编号,并将其作为该机地址码。
 结束语本文只概述了一种分布式控制系统串行接口方法,但各机之间的通讯接口方法较多,如:串口的直接连接(距离较近时)、通过调制解调器连接等。在软件编程方面,从机直接用单片机的汇编语言编写;而工控机的通讯子程序模块,同样可以采用多种语言现。因此,在具体的系统设计时,可根据际情况,选择其中的一种方法,并在编程时考虑错误检测和纠错技术,就能完成可靠的通讯。



作为行业的代表,电脑与工控机:功能差异及应用-深圳市研越科技有限公司需要给同行们做出一定的表率,在产品质量上要一路领先才可以。https://www.yanyuegk.com/innews/1671.html
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|足球新闻网

GMT+8, 2024-11-28 03:43 , Processed in 0.048891 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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