APP下载

多通道I/O装置的设计与实现

2015-07-03段春艳

中国科技纵横 2015年12期
关键词:主板

【摘 要】由于目前市场上普遍使用的多I/O装置端口数量有限,且端口模式固定,这与功能越来越强大的工业控制系统相矛盾。本文主要针对工业控制领域低成本、高可靠性、高稳定性的要求,设计了一套基于STC12C5A60S2单片机的主从式多通道I/O装置。该装置由主板和分板组成,主板负责把分板传来的信息送给上位机,同时将上位机发来的指令传给分板。分板只负责接收I/O端口信息,并将这些信息传给主板,上位机不直接与分板通信。I/O端口的数量可以根据实际需要进行扩展,I/O端口模式通过程序可以任意设定。

【关键词】多通道 I/O端口 主板 分板

随着现代化工业的发展进步,工业控制系统的功能越来越强大,连接的外设也越来越多。这些外设通过I/O装置与计算机之间连接,计算机通过发送指令给I/O装置来完成对其他设备的控制,I/O装置起到桥梁的作用。因此要求I/O装置的端口数量应尽量多、输入输出端口能灵活配置、有较强的抗干扰能力、有标准的通信接口、性价比高。

1 多I/O装置的现状

目前市场上普遍采用多I/O卡或多I/0模块。

它们具有体积小巧、携带方便、工作温度范围宽、功耗低等优点,但也有不容忽视的缺点:

(1)端口数量不多,大部分产品为8、16、32个端口。若工业控制现场需要更多的I/O口,则只能通过组网来控制,这将使控制系统的结构复杂,同时也会使系统的不稳定性增加。(2)I/O端口模式固定,不能灵活配置。(3)价格昂贵,性价比不高。

为了解决上述问题,设计了一款端口数量能扩展、且输入输出端口能灵活配置的多通道I/O装置。它包括主板和分板,通过程序进行控制。

2 多通道I/O装置的硬件设计

考虑到STC12C5A60S2单片机自身的众多优点,该装置采用它作为主控芯片。但由于它只有40个I/O,如果端口数量成百上千的话,一片单片机显而易见满足不了。若采用多个单片机分开单独控制,则每个单片机都要与上位机通信,这样通信效率太低,而且结构复杂,基于以上原因我们选择了一种主从式的结构设计方案,如图1所示(以176个端口数量为例进行说明)。

图1 多通道I/O装置结构图

该结构由1块主板和11块分板构成,主板负责与上位机、分板通信,分板负责接收I/O端口信息,再将信息发送给主板。由于上位机只需与主板单独通信,而无需理会分板,通信效率得到很大提升。

2.1 主板

主板主要包括RS485通信电路、E2PROM扩展电路和地址选择电路,主板主要起到一个通信的作用。

2.2 分板

分板主要包括I/O模块电路、DA输出电路、分板地址选择电路、通信隔离保护电路。每一个多路I/O装置包括11个分板,每一个分板电路都是一样的,通过分板地址选择电路来设定分板的地址。

3 多通道I/O装置的软件设计

多通道I/O装置的软件设计以Keil C51为软件开发平台,分为主板程序和分板程序。主板程序主要完成和上位机、分板的通信。分板程序完成I/O口的输入和输出模式选择以及和主板的通信。

3.1 主板程序设计

主板程序主要完成和上位机、分板的通信以及对分板的每个I/O口功能进行配置。主要包括主板主程序设计、I/O口配置程序设计、主板串口初始化程序、主板串口发送数据程序、主板接受分板数据程序等。

3.1.1 主板主程序设计

多通道I/O装置的主板主程序主要是完成通信功能,包括和上位机、分板通信。主板上电后初始化串口1和串口2,然后清空接受数据缓冲区,接着发送分板I/O口模式配置信息,最后接受和解析上位机发送来的指令。

3.1.2 I/O口配置程序设计

通过主板程序可以配置每个I/O口为输入或输出端口,当作为输入端口时可以作为开关按键和计数按键。配置表信息以一个二维数组的形式在主程序中建立。具体代码如下:

uchar code Tab[11][33]={

{0x01,0x03,0x04,0x01,0x02,0x03,0x04,0x01,0x02,0x01,0x02,0x01,0x02,0x01,0x02,0x01,0x02,

//板1端口模式选择 0x00,0x00,0x01,0x01,0x02,0x02,0x03,0x03,0x04,0x04,0x05,0x05,0x06,0x06,0x07,0x07}, //板1关联通道选择

{0x02,0x01,0x02,0x01,0x02,0x01,0x02,0x01,0x02,0x03,0x04,0x03,0x04,0x01,0x02,0x01,0x02,

//板2端口模式选择 0x00,0x00,0x01,0x01,0x02,0x02,0x03,0x03,0x04,0x04,0x05,0x05,0x06,0x06,0x07,0x07}

//板2关联通道选择

……

{0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//板11端口模式选择 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}; //板11关联通道选择

端口模式选择表示定义每一个端口的功能,功能码与其对应的功能如表1所示。

表1 配置表功能码对应的功能

功能码 对应的功能

0x00 默认输出

0x01 输入(开)

0x02 输入(关)

0x03 输入(计数加)

0x04 输入(计数减)

3.1.3 主板串口初始化程序

由于主板既要与上位机通信,又要与分板通信,所以它有两个串口,串口1与分板通信,串口2与上位机通信。每个串行口可以同时发送和接受数据。由于它们通信时不会发生数据冲突,可以共用一个地址码。

3.2 分板程序设计

分板负责采集各个I/O端口的信息,并将采集的信息发送给主板,同时完成主板发送的命令。每个分板的程序都是完全相同的,通过拨码开关设定每个分板的地址。

分板程序主要包括分板I/O口模式选择程序、分板PWM程序设计、与主板通信程序等。

(1)分板I/O口模式选择程序。分板根据主板发来的I/O配置信息后确定每个I/O口模式,包括开关量输入模式、按键计数输入模式和输出模式。(2)分板PWM程序设计。每个分板带有一个DA通道,采用STC12C5A60S2单片机的两路PWM实现DA输出。(3)与主板通信程序。分板通过主板接收来自上位机的数据,每块板根据自己的地址,获取自己板的I/O配置命令,同时分板将I/O的信息发送给主板,由主板传给上位机。具体程序如下:

void RX1_Process(){ uint i; uint R_addr; R_addr=Config_addr(); if(RX1_Over==1)

{ if(k==363) { if(RX1_Buffer[R_addr]==slave)

{ for(i=R_addr+1;i

{ RX_flag=1; k=0; //led=!led; } else { RX1_CL0(); } } else if(k==1)

{ Master_ask_flag=1; //k=0; } else { RX1_CL0(); } RX1_Over=0; }}

4 系统调试

将研制的主板、分板通过RS485线与PC机相连,下载程序,用串口调试助手运行测试。经测试证明该装置能通过程序任意配置各端口为输入或输出模式,满足设计需求。

参考文献:

[1]陈铁军,谢春萍.PC机与RS485总线多机串行通信的软硬件设计.现代电子技术,2007.

[2]李岩.工业控制现场总线技术.技术与市场,2011.

[3]李阳春.自动控制理论在火电厂热工自动化中的应用.中国科技投资,2013.

作者简介:段春艳(1979—)湖南郴州人,女,汉族,硕士,湖南交通职业技术学院,研究方向:电子技术.

猜你喜欢

主板
沪市/深市主板观察
沪市/深市主板观察
沪市/深市主板观察
三季报净利润大幅增长股(沪市主板)
三季报净利润大幅下滑股(沪市主板)
三季报净利润大幅下滑股(深市主板)