首页 理论教育FBPRO-8DI八路智能节点系统设计

FBPRO-8DI八路智能节点系统设计

【摘要】:图6-9 主程序流程图图6-10 中断程序流程图;更新输出数据指针,结果放到USER_OUT_PTR中有3个输入缓冲器用于数据输入,当向上位机发送数据时,首先应计算输入数据缓冲器的起始地址,计算方法如下:FBPRO-8DI八通道隔离型数字量输入智能节点程序清单如下,其中数据格式为8个字节输出,4个字节输入,第一个字节为地址,第二个字节为功能码,第三个字节为字节长度,第四个字节为开关状态。

1.硬件结构

FBPRO-8DI八路数字量输入智能节点的硬件框图如图6-6所示。

在图6-6中,微控制器选用Philips公司的P89C51RD2,采用74HC245读取从站地址和数字量的输入状态,通信控制器采用Siemens公司的SPC3,X5045为Xicor公司的串行E2PROM和WDT一体化电路,DC-DC电路选用功率为2W的电源模块,VD1为状态指示灯,RS-485驱动器采用TI公司的65ALS1176。

在该智能节点的设计中,读取数字量输入的口地址为0DFFFH,SPC3的起始地址为1000H,设定智能节点从站地址号的口地址为7FFFH。

2.数字量输入电路

数字量输入电路如图6-7所示。

978-7-111-35607-3-Chapter06-8.jpg

图6-6 FBPRO-8DI智能节点的硬件框图

978-7-111-35607-3-Chapter06-9.jpg

图6-7 数字量输入电路

当跳线器JP1的1—2短路,跳线器JP2的1—2断开、2—3短路时,输入端DI+和DI-可以接一干接点信号。

当跳线器JP1的1—2断开,跳线器JP2的1—2短路、2—3断开时,输入端DI+和DI-可以接一有源接点。

在图6-7中,数字量输入端所用的电源为+24V,也可以是+15V或+5V电源,只需改变电阻R1的阻值即可。

3.软件设计

从站程序包括3个部分:SPC3的初始化程序、SPC3的中断处理程序和具体的I/O应用程序。程序采用结构化编程思想,以便于以后的功能拓展。

在Power_On状态,从站能从2类主站接收Set_Slave_Add报文来改变它的地址,然后从站进入Wait_Prm状态,等待参数化,此状态从站可以接收Get_Cfg和Slave_Diag报文。参数化完成后,从站进入Wait_Cfg状态,等待Chk_Cfg报文。另外,此状态从站可接收Slave_Diag、Set_Prm和Get_Cfg报文。如果Chk_Cfg报文接收完成后,从站将进入Data_Exch状态进行数据通信。此时,从站可接收Writing_Outputs、Reading_Inputs、Global_Control、Slave_Diag、Chk_Diag和Get_Cfg报文。若组态和数据交换不成功,就会返回到参数化阶段。Wait_Prm在对从站进行组态时,必须要编写它的GSD文件。只有有了GSD文件,在COM PRO-FIBUS组态软件下才能对从站组态,否则主站无法识别从站。

从站初始化阶段的顺序如图6-8所示。

978-7-111-35607-3-Chapter06-10.jpg

图6-8 从站初始化阶段的顺序

从站主程序流程图如图6-9所示。

SPC3初始化包括设置SPC3允许的中断,写入从站识别号和地址,设置SPC3方式寄存器,设置诊断缓冲区、参数缓冲区,配置诊断缓冲区、参数缓冲区、地址缓冲区,初始化长度,并根据以上初始值求出各个输入、输出缓冲区的指针及辅助缓冲区的起始地址和范围。中断程序流程图如图6-10所示。

数据输入和输出处理(输入、输出相对于主站而言)及用户诊断数据输入放在应用程序循环中。在一个应用循环中,由应用来刷新输入BUF中的数据,以保证所有输入数据是最新的数据。而SPC3在接收到由PROFIBUS主站传送的不同输出数据时,会产生输出标志位(同样位于中断请求字单元),CPU通过在应用循环中轮循标志位来接收主站数据。对于特定应用的诊断信息,需要实时传递到主站。主应用程序在应用循环中判断是否有可用的诊断BUF存在,当有空闲BUF时应用程序输入诊断信息,并请求更新。对于实时性要求严格的系统,应采用中断方式进行输出数据和诊断数据处理

当上位机向从站发送数据后,在输出缓冲器中可以得到的输出数据。在SPC3中有3个输出缓冲器,通过下面的程序段可以确定输出数据缓冲器的起始地址。

978-7-111-35607-3-Chapter06-11.jpg

图6-9 主程序流程图

978-7-111-35607-3-Chapter06-12.jpg

图6-10 中断程序流程图

;更新输出数据指针,结果放到USER_OUT_PTR中

978-7-111-35607-3-Chapter06-13.jpg

978-7-111-35607-3-Chapter06-14.jpg

有3个输入缓冲器用于数据输入,当向上位机发送数据时,首先应计算输入数据缓冲器的起始地址,计算方法如下:

978-7-111-35607-3-Chapter06-15.jpg

FBPRO-8DI八通道隔离型数字量输入智能节点程序清单如下,其中数据格式为8个字节输出,4个字节输入,第一个字节为地址,第二个字节为功能码,第三个字节为字节长度,第四个字节为开关状态。

(1)P89C51RD2内部单元定义

978-7-111-35607-3-Chapter06-16.jpg

978-7-111-35607-3-Chapter06-17.jpg

(2)常数定义

978-7-111-35607-3-Chapter06-18.jpg

(3)SPC3内部单元定义

1)00H~15H可读的寄存器单元。

978-7-111-35607-3-Chapter06-19.jpg(www.chuimin.cn)

2)00H~15H可写的寄存器单元。

978-7-111-35607-3-Chapter06-20.jpg

3)00H~15H可写的寄存器的值。

978-7-111-35607-3-Chapter06-21.jpg

4)16H~3DH单元。

978-7-111-35607-3-Chapter06-22.jpg

978-7-111-35607-3-Chapter06-23.jpg

5)16H~3DH寄存器单元填充的数据。

978-7-111-35607-3-Chapter06-24.jpg

(4)设置输入输出数据的长度

978-7-111-35607-3-Chapter06-25.jpg

978-7-111-35607-3-Chapter06-26.jpg

(5)程序开始

978-7-111-35607-3-Chapter06-27.jpg

(6)主循环程序

978-7-111-35607-3-Chapter06-28.jpg

(7)SPC3复位程序

978-7-111-35607-3-Chapter06-29.jpg

978-7-111-35607-3-Chapter06-30.jpg

978-7-111-35607-3-Chapter06-31.jpg

978-7-111-35607-3-Chapter06-32.jpg

(8)延时子程序

978-7-111-35607-3-Chapter06-33.jpg

(9)SPC3中断断子程序

978-7-111-35607-3-Chapter06-34.jpg

978-7-111-35607-3-Chapter06-35.jpg

978-7-111-35607-3-Chapter06-36.jpg

(10)更新输入数据缓冲区指针

978-7-111-35607-3-Chapter06-37.jpg

(11)更新输出数据指针并将结果放到USER_OUT_PRT中

978-7-111-35607-3-Chapter06-38.jpg

978-7-111-35607-3-Chapter06-39.jpg

(12)清除SPC3内部的RAM

978-7-111-35607-3-Chapter06-40.jpg

978-7-111-35607-3-Chapter06-41.jpg

(13)wd_dp_mode_timeout_function子程序

978-7-111-35607-3-Chapter06-42.jpg

978-7-111-35607-3-Chapter06-43.jpg

978-7-111-35607-3-Chapter06-44.jpg

978-7-111-35607-3-Chapter06-45.jpg