在C 语言中,具有一定功能、相对独立的程序段称为函数。无论主函数main()位于程序中的什么位置,程序执行时总是从main()开始。C 语言程序的一般结构如图5.1 所示。它具有以下特点:图5.1C 程序中的函数C 语言允许一个程序由多个源文件组成,每个源文件可以独立编译,一个源文件可以被不同的程序使用。一个C 程序有且仅有一个主函数main,主函数可以放在任何一个源文件中,程序总是从主函数开始执行。......
2023-10-21
1.定义变量
2.初始化函数dpn_init(&dpn_ptr)
编写上位机程序时,在对CP5611/5613进行访问操作之前必须调用初始化函数。使用初始化函数之前,必须对该函数做一些初始化操作,其他函数使用前也必须先对变量初始化。
如果有错误,可以参考初始化函数的返回值来解决。
interror=dpn_ptr.error_code有以下几种错误情况:
各错误代码的含义如下:
1)DPN_NO_ERROR:无错误。返回值是有效的,并且必须进行判断。
2)DPN_ACCESS_ERROR:调用的DP应用程序无权写该函数或从站。
3)DPN_APPL_LIMIT_ERROR:超出多用户操作中DP应用程序的最大允许数目。
4)DPN_CENTRAL_ERROR:函数必须且仅能由中央DP应用程序调用。
5)DPN_CLOSE_ERROR:关闭DP应用程序出错。
6)DPN_LENGTH_ERROR:dpn_interface、dpn_interface_s和dpn_interface_s_ext结构体的元素“length”超出允许数值范围,或者dpn_out_slv、dpn_out_slv_m和dpn_out_slv_m_ext的数据长度与配置值不匹配。
7)DPN_MEM_BOARD_ERROR:CP上没有足够的空闲内存。
8)DPN_MEM_HOST_ERROR:主站上没有足够的空闲内存。
9)DPN_MODE_ERROR:当前无法执行函数调用。调用dpn_set_mode()函数时发生该错误,可能是因为在改变操作方式时试图跳过一个状态。
10)DPN_NO_DBASE_ERROR:DP数据库无入口或入口错误。
11)DPN_OPEN_ERROR:DP应用程序注册错误(例如,未下载驱动,未插入CP等)。
12)DPN_RECEIVE_ERROR:CP对接口驱动的确认错误。
13)DPN_REFERENCE_DIFF_ERROR:多用户方式错误。调用dpn_init()函数时,refer-ence结构体元素的入口与统一CP上注册的其他DP应用程序的dpn_init()函数不匹配。
14)DPN_REFERENCE_ERROR:dpn_interface、dpn_interface_m和dpn_ifc_m_ext结构体的元素reference无效。
15)DPN_SEND_ERROR:接口驱动对CP的调用错误。
16)DPN_SLV_STATE_ERROR:dpn_interface结构体的slv_state元素无效。
17)DPN_STAT_NR_ERROR:dpn_interface、dpn_interface_s和dpn_interface_s_ext结构体的元素stat_nr无效,或者数据库中不存在从站。
18)DPN_USER_DATA_ERROR:dpn_interface结构体的一个或多个user_data数组无效。
19)DPN_WRONG_BOARD_ERROR:dpn_interface结构体的reference.board元素无效。输入有效值(1~4)以匹配安装CP(CP_L2_1对应1,CP_L2_2对应2)。
20)DPN_SYS_STATE_ERROR:dpn_interface结构体的sys_state元素无效。
21)DPN_GLB_CTRL_ERROR:调用dpn_global_crtl()函数时控制命令的数值范围非法。
22)DPN_BOARD_ERROR:CP固件错误(例如,第二层无法正常启动)。
23)DPN_WD_EXPIRED_ERROR:DP应用程序的运行监控信号检测到超时,从而导致任务无法执行。
24)DPN_OPEN_LICENSE_ERROR:无法打开授权。
25)DPN_LOAD_L2_VXD_ERROR:无法装载SOFTNET CP需要的第二层驱动。
26)DPN_OPEN_L2_VXD_ERROR:无法打开SOFTNET CP需要的第二层驱动。该错误在第二层驱动启动时显示。可能的原因:总线短路,软入口已经使用,内部AMPRO2错误,信息服务器(SIM9SYNC)未运行。
只有当初始化正确后,才能进行下一步操作。如果出现错误,可能原因有以下几种:
·已经调用了初始化函数,并且已经成功,但没有调用复位函数,又一次调用了初始化函数。
·对dpn_ptr.user_data[j]的值超出了以下3种状态设置:DPN_SLV_WRITE_READ、DPN_SLV_READ或DPN_SLV_NO_ACCESS。(www.chuimin.cn)
·设置了DPN_SLV_WRITE_READ或DPN_SLV_READ属性的模块,但没有在配置软件中进行正确配置。
·dpn_ptr.reference.board_select和dpn_ptr.reference.access属性设置不正确。
·Set PG/PC设置不正确,也不能初始化成功。
·没有正确安装CP5611网络接口卡的驱动程序。
·在初始化前没有将配置好的参数文件正确下载到系统中。
3.数据输出函数dpn_out_slv(&ptr_ptr)
数据输出函数将有效数据传送到DP从站。通过该函数可以将上位机的控制命令发到指定的DP从站,完成对从站的控制操作。例如,下面程序段是向地址为m_ptradd的DP从站发送了8个字节的有效数据。
4.数据读入函数dpn_in_slv(&dpn_ptr)
数据输入函数读入DP从站的有效数据。通过该函数可以将DP从站的数据读入到上位机,完成对从站的监控操作。例如,下面程序段是读入地址为m_ptradd的DP从站8个字节的有效数据。
返回的从站状态类型代码的含义如下:
·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从站不在数据传输段并且有诊断数据存在。
返回的系统状态代码的含义如下:
1)DPN_SYS_OFFLINE(Offline模式):停止与所有主站和DP从站的通信,FDL从令牌环中退出。用户接口等待一个启动信号。
2)DPN_SYS_STOP(Stop模式):总线参数集装入FDL,FDL为活动状态,能处理与2类主站的通信,不能轮询DP从站。
3)DPN_SYS_CLEAR(Clear模式):对从站设置参数,检查通信接口配置并读取这些DP从站用户的数据。输出数据将被忽略。
4)DPN_SYS_OPERATE(Operate模式):1类主站与指定的DP从站进行用户数据交换。来自DP从站的输入数据传送给用户,用户的输出数据传送给DP从站。用户接口退出Operate模式时,主站将通过功能Global_Control清除所有DP从站的输出。
初始化函数的返回值没有错误后,可以进行其他函数的操作。但有时并不能达到用户期望的结果,比如数据不能读取到上位机,或者上位机的数据不能正确下载到从站中。初始化正确但是不能正常通信的可能原因有以下几种:
·从站没有工作。
·从站电源指示灯亮,但是电源电压低,微处理器没有工作。
·通信电缆没有连接好。
·通信电缆太长或通信速度太快。
·没有正确设置终端电阻。
·地址设置不一致。
5.读取总线参数函数dpn_read_bus_par(&dpn_ptr)
返回值,user_data[ ]为总线参数,总线参数的结构如下所示。
6.复位函数dpn_reset(&dpn_ptr)
退出时程序要复位,程序代码如下所示。
程序正确复位后error_code=0。
有关现场总线与工业以太网及其应用技术的文章
在C 语言中,具有一定功能、相对独立的程序段称为函数。无论主函数main()位于程序中的什么位置,程序执行时总是从main()开始。C 语言程序的一般结构如图5.1 所示。它具有以下特点:图5.1C 程序中的函数C 语言允许一个程序由多个源文件组成,每个源文件可以独立编译,一个源文件可以被不同的程序使用。一个C 程序有且仅有一个主函数main,主函数可以放在任何一个源文件中,程序总是从主函数开始执行。......
2023-10-21
PROFIBUS是一种用于工厂自动化车间级监控和现场设备层数据通信与控制的现场总线技术。与其他现场总线系统相比,PROFIBUS的最大优点在于具有稳定的国际标准EN50170作保证,并经实际应用验证具有普遍性。PROFIBUS开放性和不依赖于厂商的通信的设想,已在10多万成功应用中得以实现。图10-3 PROFIBUS协议结构在总线初始化和启动阶段建立令牌环。......
2023-06-18
一般来说,通信企业可分为通信运营企业、通信设备供应企业、通信服务支持企业几类。技术类岗位在通信运营企业中,工资待遇较高,要求也是相当高,在学历、职业技能和自身能力方面有着严格的要求,只有不断地提升自己,才能在激烈的竞争中保持着持续的竞争力。......
2023-08-29
计算机与外部设备或计算机与计算机之间的数据交换称为通信。1.异步串行通信的字符格式在异步串行通信中,信息的两种状态分别以mark和space标志。图中给出的是8位数据位、1位奇偶校验位和1位停止位,加上1位起始位,共11位组成一个传输帧。图9-1异步串行通信的字符格式1)起始位。2.异步串行通信的传送速率异步串行通信的传送速率用于表示数据传送的快慢。在全双工方式下,通信双方需要两根数据线进行数据传送。......
2023-11-17
互联网采用TCP/IP协议并不是ISO规定的标准协议,但是作为应用最广泛的协议已经成为大规模网络通信的事实标准。TCP/IP协议实际上是由一组协议组成的,通常也称作TCP/IP协议簇。图10.10IPv4协议头部从图中可以看出这是个复杂的结构,最常用字段是源地址和目的地址,用来寻址和查路由。如图10.9所示,TCP协议位于网络互联层后,是IP协议的上层协议。......
2023-11-19
根据西门子S7通信的经验,即“当字长不大于2”或选择“以字为单位传送”时,用MOVE指令编程;当字长大于2且选择“所有字一起传送”时,用SFC14/15编程”。由于从这里的组态中可以看出“输入/输出各占四个字节”,可以使用两次MOVE指令。鉴于通信程序简单,程序可以直接编写在OB1中。图13-51 编程MOVE指令1)传送到变频器驱动装置的第1个字是控制字。当MW2=0100 0000 0000 0000 B=4000 H=16384(十进制)时,相当于50Hz。......
2023-06-18
在C语言中,以函数首部声明函数的形式称为函数原型。使用函数原型是C语言的一个重要特征,主要作用是利用它在程序的编译阶段对调用函数的合法性进行全面检查。......
2023-11-18
CAN通信程序的设计需要充分利用双CAN构建的环形通信网络,实现正常情况下的高效、快速的数据通信,以及实现故障情况下的及时、准确的故障性质确定和故障定位。CAN通信数据包的分帧情况见表11-7。......
2023-11-22
相关推荐