首页 理论教育现场总线应用技术|PROFIBUS-DP上位机通信程序设计

现场总线应用技术|PROFIBUS-DP上位机通信程序设计

【摘要】:如果已经设计好了能完成某种功能的从站,就可以编写上位机测试程序来测试从站的性能。本节采用CP5611网络接口卡,以FBPRO-8DO八路数字量输出智能节点为例,介绍PROFIBUS-DP上位机通信程序设计,编程环境使用VC++6.0。2)将CP5611网络接口卡提供的DPN USER.H和DPLIB.LIB两个文件复制到刚刚新建的项目根目录下,并且添加到应用程序中。3)在VC++6.0环境下编写通信程序。2)对dpn_ptr.user_data[j]的值超出了以下范围:①DPN_SLV_WRITE_READ。6)没有正确安装CP5611网络接口卡的驱动程序。

如果已经设计好了能完成某种功能的从站,就可以编写上位机测试程序来测试从站的性能。

本节采用CP5611网络接口卡,以FBPRO-8DO八路数字量输出智能节点为例,介绍PROFIBUS-DP上位机通信程序设计,编程环境使用VC++6.0。本程序能够完成应用程序的初始化、数据读入和数据输出以及应用程序的复位等基本操作。

PROFIBUS-DP上位机通信程序设计步骤为:

1)在VC++6.0下创建一个应用程序。

2)将CP5611网络接口卡提供的DPN USER.H和DPLIB.LIB两个文件复制到刚刚新建的项目根目录下,并且添加到应用程序中。

3)在VC++6.0环境下编写通信程序。

下面介绍通信程序中用到的几个函数的使用方法。

1.定义变量

2.调用初始化函数dpn init(&dpn ptr)

在使用该函数之前,必须对该函数做一些初始化操作,其他函数使用前也必须首先对变量初始化:

如果有错误,可以参考初始化函数的返回值来解决。

只有当初始化正确后,才能进一步进行以下操作。如果出现错误,可能原因有以下几种:

1)已经调用了初始化函数,并且已经成功,还没有调用复位函数,又一次调用初始化函数。

2)对dpn_ptr.user_data[j]的值超出了以下范围:

①DPN_SLV_WRITE_READ。

②DPN_SLV_READ。

③DPN_SLV_NO_ACCESS。

3)设置了DPN_SLV_WRITE_READ或DPN_SLV_READ属性的模块没有在配置软件中进行正确配置。

4)dpn_ptr.reference.board_select=1;dpn_ptr.reference.access=(DPN_SYS_NOT_ CENTRAL)|(DPN_ROLE_NOT_CENTRAL);属性设置不正确。

5)Set_PG/PC设置不正确,也不能初始化成功。(www.chuimin.cn)

6)没有正确安装CP5611网络接口卡的驱动程序。

7)在初始化前没有将配置好的参数文件正确下载到系统中。

3.数据输出dpn_out_slv(&ptr_ptr)

4.数据读入dpn_in_slv(&dpn_ptr)

初始化函数的返回值没有错误后,可以进行其他函数的操作,但有时并不能达到我们期望的结果,比如数据不能读取到上位机,或者上位机的数据不能正确下载到从站中。初始化正确但是不能正常通信的可能原因有以下几种:

1)从站没有工作。

2)从站电源指示灯亮,但是电源电压低,微处理器没有工作。

3)通信电缆没有连接好。

4)通信电缆太长或通信速率太快。

5)没有正确设置终端电阻

6)地址设置不一致。

5.读取总线参数dpn_read_bus_par(&dpn_ptr)

6.复位dpn_reset(&dpn_ptr)

//退出时程序要复位

dpn_ptr.reference.board_select=1;

dpn_ptr.reference.access=(DPN_SYS_NOT_CENTRAL)|(DPN_ROLE_NOT_CENTRAL);

dpn_reset(&dpn_ptr);

//程序正确复位后error_code=0;