PROFIBUSDP主站通信程序设计_第1页
PROFIBUSDP主站通信程序设计_第2页
PROFIBUSDP主站通信程序设计_第3页
PROFIBUSDP主站通信程序设计_第4页
PROFIBUSDP主站通信程序设计_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PROFIBUS-DP主站通信程序设计假设已经设计好了能完成某种功能的从站,就可以编写主站测试程序来测试从站的性能。CP5611FBPRO-8DI八路数字量输入智能节点为例PROFIBUS-DP主站通信程序设计,编程环境使用VC++6.0。本程序能够完成应用程序的初始化、数据读入、数据输出和应用程序的复位等根本操作。PROFIBUS-DP主站通信程序设计步骤为:VC++6.0下创立一个应用程序;CP5611DPN_USER.HDPLIB.LIB两个文件拷贝到刚刚建的工程根名目下,并且添加到应用程序中;VC++6.0环境下编写通信程序。通信程序中主要函数介绍定义变量dpn_interfacedpn_ptr;//使用前必需首先定义dpn_interface的构造:structdpn_interface{structREFERENCEreference;//子构造体unsignedcharstat_nr;//站地址unsignedcharlength;//返回数据长度unsignedshortinterror_code;//错误代码unsignedcharslv_state;//DP从站状态unsignedcharsys_state;//DP主站状态unsignedcharsys_event;//大事信息unsignedcharuser_data[MAX_DATA_LEN];//数据区};structREFERENCE{unsignedcharboard_select;//CP板卡选择设置unsignedcharaccess;//系统访问设置};dpn_init(&dpn_ptr)CP5611/5613进展访问操作之前必需调用初始化函数。使用初始化函数之前,必需对该函数做一些初始化操作,其他函数使用前也必需首先对变量初始化:dpn_ptr.reference.board_select=1;//CP5611/5613的板卡号,假设系统中1dpn_ptr.reference.access=(DPN_SYS_NOT_CENTRAL)|(DPN_ROLE_NOT_CENTRAL);//系统中不设置高级任务和高级恳求//以上两项一般固定dpn_ptr.length=126;//length=profibus网络中最大的从站地址intj=0;for(j=0;j<126;j++)//设置设备读写属性{if(“网络中存在该地址”){dpn_ptr.user_data[j]=DPN_SLV_WRITE_READ;//假设网络中存在本地址,则将属性设置为DPN_SLV_WRITE_READ0}else}

dpn_ptr.user_data[j]=0;//FBPRO-8DI2,应当设置//dpn_ptr.user_data[2]=DPN_SLV_WRITE_READ;dpn_init(&dpn_ptr);//调用初始化函数假设有错误,可以参考初始化函数的返回值来解决。interror=dpn_ptr.error_code;有以下几种:错误代码解释如下:DPN_NO_ERROR:无错误。返回值是有效的,并且必需进展推断。DPN_ACCESS_ERRORDP应用程序无权写该函数或从站。DPN_APPL_LIMIT_ERRORDP应用程序的最大允许数目。DPN_BOARD_ERROR:CP固件错误〔2层无法正常启动〕。DPN_CENTRAL_ERRORDP应用程序调用。DPN_CLOSE_ERROR:关闭DP应用程序出错。DPN_GLB_CTRL_ERROR:调用dpn_global_crtl函数时掌握命令的数值范围非法。DPN_LENGTH_ERROR:dpn_interface、dpn_interface_s和dpn_interface_s_ext构造体的元素“length”超出允许数值范围,或者dpn_out_slv、dpn_out_slv_mdpn_out_slv_m_ext的数据长度与配置值不匹配。DPN_MEM_BOARD_ERROR:CP上没有足够的空闲内存。DPN_MEM_HOST_ERROR:主站上没有足够的空闲内存。DPN_MODE_ERROR:当前无法执行函数调用。调用dpn_set_mode函数时发生该错误,可能是由于在转变操作方式时试图跳过一个状态。DPN_NO_DBASE_ERROR:DP数据库无入口或入口错误。DPN_OPEN_ERROR:DP应用程序注册错误〔例如未下载驱动、未插入CP等〕。DPN_RECEIVE_ERROR:CP对接口驱动确实认错误。DPN_REFERENCE_DIFF_ERROR:多用户方式错误。调用dpn_init函数时,referenceCPDP应用程序的dpn_init函数不匹配。DPN_REFERENCE_ERROR:dpn_interface、dpn_interface_m和dpn_ifc_m_ext构造体的元素reference无效。DPN_SEND_ERROR:CP的调用错误。DPN_SLV_STATE_ERROR:dpn_interface构造体slv_state元素无效。DPN_STAT_NR_ERROR:dpn_interface、dpn_interface_s和dpn_interface_s_extstat_nr无效,或者数据库中不存在从站。DPN_SYS_STATE_ERROR:dpn_interface构造体的sys_state元素无效。DPN_USER_DATA_ERROR:dpn_interface构造体的一个user_data数组无效。DPN_WD_EXPIRED_ERROR:DP应用程序的运行监控信号检测到超时从而导致任务无法执行。DPN_WRONG_BOARD_ERROR:dpn_interfacereference.board元素无效。输入有效值〔14〕CP〔CP_L2_11,CP_L2_22〕。DPN_LOAD_L2_VXD_ERRORSOFTNETCP需要的其次层驱动。可system(Windows95系统)或System32\Driver(WindowsNT系统)中删除而造成。DPN_OPEN_L2_VXD_ERRORSOFTNETCP需要的其次层驱动。该错误在其次层驱动启动时显示。可能的缘由:总线短路,软入口已经使用,AMPRO2错误,信息效劳器〔SIM9SYNC〕未运行。只有当时始化正确后,才能进一步进展以下操作。假设消灭错误,可能缘由有以下几种:已经调用了初始化函数,并且已经成功,但没有调用复位函数,又一次调用了初始化函数。dpn_ptr.user_data[j]的值超出了以下三种状态设置:DPN_SLV_WRITE_READ、DPN_SLV_READDPN_SLV_NO_ACCESSDPN_SLV_WRITE_READDPN_SLV_READ属性的模块没有在配置软件中进展正确配置。dpn_ptr.reference.board_selectdpn_ptr.reference.access属性设置不正确。SetPG/PC设置不正确,也不能初始化成功,关于它的设置见6.5.5。CP5611网络接口卡的驱动程序。在初始化前没有将配置好的参数文件正确下载到系统中。数据输出函数dpn_out_slv(&ptr_ptr)DP从站。通过该函数可以将上位机的掌握命DP从站,完成对从站的掌握操作。例如下面程序段向地址为m_ptraddDP从站发送了八字节的有效数据。dpn_ptr.reference.board_select=1;dpn_ptr.reference.access=(DPN_SYS_NOT_CENTRAL)|(DPN_ROLE_NOT_CENTRAL);ptr_ptr.stat_nr=m_ptradd;//从站地址ptr_ptr.length=8;//与从站的参数化数据必需全都,本例中8字节输出,8字节输入ptr_ptr.user_data[0]=0;//PC8个字节的输出数据ptr_ptr.user_data[1]=0;//8字节数据可自定义ptr_ptr.user_data[2]=0;ptr_ptr.user_data[3]=0;ptr_ptr.user_data[4]=0;ptr_ptr.user_data[5]=0;ptr_ptr.user_data[6]=0;ptr_ptr.user_data[7]=0;dpn_out_slv(&ptr_ptr);dpn_in_slv(&dpn_ptr)DP从站的有效数据。通过该函数可以将DP从站的数据读入到上位机,完成对从站的监控操作。例如下面程序段即读入地址为m_ptraddDP从站八字节的有效数据。dpn_ptr.reference.board_select=1;dpn_ptr.reference.access=(DPN_SYS_NOT_CENTRAL)|(DPN_ROLE_NOT_CENTRAL);dpn_ptr.stat_nr=m_ptradd;//从站地址dpn_ptr.length=255;//此处必需设置255dpn_in_slv(&dpn_ptr);//返回值a1=ptr_ptr.user_data[0];//PC8个字节的输入数据a2=ptr_ptr.user_data[1];a3=ptr_ptr.user_data[2];a4=ptr_ptr.user_data[3];a5=ptr_ptr.user_data[4];a6=ptr_ptr.user_data[5];a7=ptr_ptr.user_data[6];a8=ptr_ptr.user_data[7];intlen=dpn_ptr.length;//返回实际数据长度interror=dpn_ptr.error_code;//返回错误代码,没有错误返回0intslvstate=dpn_ptr.slv_state;//返回从站状态,有以下取值返回从站状态类型代码解释如下:DPN_SLV_STAT_OFFLINE:DP从站不在数据传输段〔CP启动〕DPN_SLV_STAT_NOT_ACTIVE:从站在本地数据库中未激活DPN_SLV_STAT_READY:DP从站处于数据传输段DPN_SLV_STAT_READY_DIAG:DP从站处于数据传输段并且有诊断数据存在DPN_SLV_STAT_NOT_READY:DP从站不在数据传输段DPN_SLV_STAT_NOT_READY_DIAG:DP从站不在数据传输段并且有诊断数据存在intsysstate=dpn_ptr.sys_state;//返回系统状态,有以下取值返回系统状态代码解释如下:DPN_SYS_OFFLINE〔Offline模式〕:DP从站的通信,FDL从令牌环中退出。用户接口等待一个启动信号。DPN_SYS_STOP〔STOP模式〕:FDL,FDL2类主站的通信DP从站。DPN_SYS_CLEAR〔CLEAR模式〕:对从站设置参数,检查通信接口配置并读DP从站用户的数据。输出数据将被无视。DPN_SYS_OPERATE〔OPERATE模式〕:1DP从站进展用户DP从站的输入数据传送给用户,用户的输出数据传送给DPOPERATEGlobal_Control去除DP从站的输出。初始化函数的返回值没有错误后,可以进展其他函数的操作,但有时并不能到达我们期望的结果,比方数据不能读取到上位机,或者上位机的数据不能正确下载到从站中。初始化正确但是不能正常通信的可能缘由有以下几种:从站没有工作。从站电源指示灯亮,但是电源电压低,微处理器没有工作。通信电缆没有连接好。通信电缆太长或通信速度太快。没有正确设置终端电阻。地址设置不全都。读取总线参数dpn_read_bus_par(&dpn_ptr)dpn_ptr.reference.board_select=1;dpn_ptr.reference.access=(DPN_SYS_NOT_CENTRAL)|(DPN_ROLE_NOT_CENTRAL);dpn_ptr.length=255;//255固定dpn_read_bus_par(&dpn_ptr);返回值,user_data[]为总线参数,总线参数的构造如下所示: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;主站通信程序开发实例在生疏了主要的通信函数后,下面给出FBPRO-8DI即8通道隔离型数字量输入智能节点的上位机开发程序实例,例程中省略了对话框的局部初始化程序,着重给出了PROFIBUS-DP通信程序局部。期望能在读者进展上位机通信开发过程中,起到抛砖引玉的作用。voidCMy8DIDlg::initpro//初始化{dpn_ptr.reference.access=(DPN_SYS_NOT_CENTRAL)|(DPN_ROLE_NOT_CENTRAL);dpn_ptr.reference.board_select=1;//以上两行一般固定不变dpn_reset(&dpn_ptr);//复位for(intj=0;j<126;j++)//设置设备读写属性{{}else}

if(devFlag[j])//网络中存在该地址dpn_ptr.user_data[j]=DPN_SLV_WRITE_READ;dpn_ptr.user_data[j]=0;dpn_ptr.length=126;dpn_ptr.reference.access=(DPN_SYS_NOT_CENTRAL)|(DPN_ROLE_NOT_CENTRAL);dpn_ptr.reference.board_select=1;//以上两行一般固定不变dpn_init(&dpn_ptr);//调用初始化函数//初始化出错处理,错误类型参考上一节代码解释dpn_ptr.reference.access=(DPN_SYS_NOT_CENTRAL)|(DPN_ROLE_NOT

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论