一种变流器modbus通信程序设计方案董志然_第1页
一种变流器modbus通信程序设计方案董志然_第2页
一种变流器modbus通信程序设计方案董志然_第3页
一种变流器modbus通信程序设计方案董志然_第4页
一种变流器modbus通信程序设计方案董志然_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

北京科诺伟业科技有限公司 技术报告(董志然 2012-4-13)一种变流器 ModBus 通信程序设计方案1. 内容及目的本技术报告提出了一种采用使用 DSP 实现变流器 ModBus 通信协议的方法。使用有限的DSP 时间及空间资源,完成了变流器机侧控制器与主控 PLC 之间的 Modbus 协议的 RTU 模式数据传输。在现有 RS232 及 RS485 接口的基础上,完成了协议底层以及应用层功能,并成功应用于风力机模拟控制实验平台。2. 实现原理及思路Modbus 是一种主从方式的通信协议,即仅主设备可以初始化通信过程,从设备需要根据主设备提供的数据信息做出适当的响应。为减小通信开销,采用 RTU 的传输模式。标准的 Modbus 使用 RS232C、RS422 或者 RS485 串行接口,分析其通信流程,可见其可工作方式是半双工,本处使用 RS232C 通信接口实现半双工的通信方式。变流器的控制器 DSP2407 工作过程中需要完成大量的数据运算及处理,故可利用的剩余的时间与空间资源非常有限,本处采用主循环与中断协调工作的方式完成通信数据帧的校验、解析与包装。3. 软硬件关键技术及控制流程3.1 Modbus 协议通信方式及数据格式Modbus 通信协议采用主从方式,在同一个网络中有一个主设备及最多达 255 台从设备,从设备的地址编码为 1255。主设备地址码为 0,通信时采用广播方式,可以将消息发送给所有的从设备,从设备收到主设备发送来的地址码后与自己的地址码进行比较,如果一致时则与主设备进行通信。Modbus 通信以帧为单位,且定义了这些帧的意义,控制器只要按照协议解释其接收和发送的帧数据,就能与在同一网络中采用同样协议的控制器实现通信。常用的 Modbus 通信规约有两种:一种是 Modbus ASCII 格式;一种是 Modbus RTU 格式。一般来说,数据量少而且主要是文本的通信采用 Modbus ASCII 规约;数据量大而且是二进制数值的通信多采用 Modbus RTU 规约。本处正符合 Modbus RTU 格式特点,故选用第二种。数据格式如表 3.1 所示。起始标志 设备地址 功能代码 数据 CRC 校验结束T1-T2-T3-T4 8Bit 8Bit n 个 8Bit 16Bit T1-T2-T3-T4表 3.1 RTU 数据格式使用 RTU 模式,消息发送至少要以 3.5 个字符时间的停顿间隔开始。在程序中可以通过定时器完成。传输的第一个域是设备地址。网络设备不断侦测网络总线,包括停顿间隔时间,当第一个域(地址域)接收到,每个设备都进行解码以判断是否发往自己的。在最后一个传输字符之后,一个至少 3.5 个字符时间的停顿标定了消息的结束。一个新的消息可在此停顿北京科诺伟业科技有限公司 后开始。 整个消息帧必须作为一连续的流转输。如果在帧完成之前有超过 3.5 个字符时间的停顿时间,接收设备将刷新不完整的消息并假定下一字节是一个新消息的地址域。同样地,如果一个新消息在小于 3.5 个字符时间内接着前个消息开始,接收的设备将认为它是前一消息的延续。这将导致一个错误,因为在最后的 CRC 域的值不可能是正确的。地址码可以根据需要自行设置。功能码是通讯信息帧的第二个字节。ModBus 通讯规约可定义的功能码范围为 1127,其中为用户预留的是 6572、100110。根据实际需要,实现了以下功能码功能。#define SCI_READ_HLD_REG 0x03 / word,read N hold_reg #define SCI_READ_AI 0x04 / word,read N input_reg #define SCI_SET_1_HLD_REG 0x06 / word,write 1 hold_reg #define SCI_SET_N_HLD_REG 0x10 / word,write N hold_reg #define SCI_MASK_HLD_REG 0x16 / word,mask write N hold_reg #define SCI_SWAP_N_HLD_REG 0x17 / word,read and write N hold_reg#define SCI_INFORMATION 0x2b / read information Modbus 通信协议并没有强制规定设备组织数据的方式,从时间复杂度与空间复杂度考虑,统一了变流器数据模型为输入寄存器与保持寄存器两种,且统一编址。Modbus 通信主要是完成变流器与主控系统 PLC 之间的数据交换。故定义变流器 Modbus数据表如下所示,以直驱变流器为例:北京科诺伟业科技有限公司 /* * modbus 数据 * Version : 1.2sci_bufferNUM 关联变量 变量说明 属性 说明sci_buffer0 r 流水号sci_buffer1 预留.sci_buffer2 grid_data.state r 网侧.系统状态sci_buffer3 grid_data.error r 网侧.故障状态sci_buffer4 grid_data.i_d AQ4 r 网侧.电网 D 轴电流sci_buffer5 grid_data.i_q AQ4 r 网侧.电网 Q 轴电流sci_buffer6 grid_data.u_d VQ4 r 网侧.电网 D 轴电压sci_buffer7 grid_data.u_q VQ4 r 网侧.电网 Q 轴电压sci_buffer8 grid_data.u_dc VQ4 r 网侧.直流母线电压sci_buffer9 grid_data.breakers r 网侧.接触器状态sci_buffer10 grid_data.temperature1 CQ4 r 网侧.温度 1sci_buffer11 grid_data.temperature2 CQ4 r 网侧.温度 2sci_buffer12 grid_data.temperature3 CQ4 r 网侧.温度 3sci_buffer13 grid_data.i_a_rms AQ4 r 网侧.电网 A 相电流有效值sci_buffer14 grid_data.i_b_rms AQ4 r 网侧.电网 B 相电流有效值sci_buffer15 grid_data.i_c_rms AQ4 r 网侧.电网 C 相电流有效值sci_buffer16 grid_data.u_ab_rms VQ4 r 网侧.电网 AB 电压有效值sci_buffer17 grid_data.u_bc_rms VQ4 r 网侧.电网 BC 电压有效值sci_buffer18 grid_data.u_ca_rms VQ4 r 网侧.电网 CA 电压有效值sci_buffer19 grid_data.p WQ4 r 网侧.有功功率sci_buffer20 grid_data.q VarQ4 r 网侧.无功功率sci_buffer21 grid_data.s VAQ4 r 网侧.视在功率sci_buffer22 grid_data.i_d_ref AQ4 r 网侧.有功电流参考值sci_buffer23 grid_data.i_q_ref AQ4 r 网侧.无功电流参考值sci_buffer24 grid_data.pdp_err 网侧.PDP 故障码sci_buffer25 grid_data.temp1 网侧.temp1sci_buffer26 can_rx_buffer0 网侧.can 通信流水sci_buffer27 system.state r 机侧.系统状态sci_buffer28 system.error r 机侧.故障状态sci_buffer29 i_stator.d AQ4 r 机侧.定子 D 轴电流sci_buffer30 i_stator.q AQ4 r 机侧.定子 Q 轴电流sci_buffer31 u_stator.d VQ4 r 机侧.定子 D 轴电压sci_buffer32 u_stator.q VQ4 r 机侧.定子 Q 轴电压sci_buffer33 u_dc.value VQ4 r 机侧.直流母线电压sci_buffer34 rotor.n r/minQ0 r 机侧.转子机械转速sci_buffer35 system.breakers r 机侧.接触器状态sci_buffer36 system.low_speed r 机侧.电机转速过低指示sci_buffer37 system.temperature1 CQ4 r 机侧.温度 1sci_buffer38 system.temperature2 CQ4 r 机侧.温度 2sci_buffer39 system.temperature3 CQ4 r 机侧.温度 3sci_buffer40 i_stator.a_rms AQ4 r 机侧.定子 A 相电流有效值北京科诺伟业科技有限公司 sci_buffer41 i_stator.b_rms AQ4 r 机侧.定子 B 相电流有效值sci_buffer42 i_stator.c_rms AQ4 r 机侧.定子 C 相电流有效值sci_buffer43 rms.p WQ4 r 机侧.有功功率sci_buffer44 rms.q VarQ4 r 机侧.无功功率sci_buffer45 rms.s VAQ4 r 机侧.视在功率sci_buffer46 i_stator.d_ref AQ4 r 机侧.无功电流参考值sci_buffer47 i_stator.q_ref AQ4 r 机侧.有功电流参考值sci_buffer48 system.pdp_err r 机侧.PDP 故障码sci_buffer49 temp1 机侧.temp1sci_buffer60 system.cmd_for_convertor r w 自动控制指令sci_buffer61 system.i_q_set AQ4 r w 有功电流给定值sci_buffer62 grid_data.i_q_set AQ4 r w 无功电流给定值sci_buffer63 r w 预留.sci_buffer64 system.debug_enable r w Modbus 调试使能,can 调试使能sci_buffer65 预留.sci_buffer66 system.cmd_for_net r w 网侧调试.控制指令sci_buffer67 grid_data.i_d_kp Q12 r w 网侧调试.电网 D 轴电流环 Kpsci_buffer68 grid_data.i_d_ki Q12 r w 网侧调试.电网 D 轴电流环 Kisci_buffer69 grid_data.i_q_kp Q12 r w 网侧调试.电网 Q 轴电流环 Kpsci_buffer70 grid_data.i_q_ki Q12 r w 网侧调试.电网 Q 轴电流环 Kisci_buffer71 grid_data.u_dc_kp Q12 r w 网侧调试.直流母线电压环 Kpsci_buffer72 grid_data.u_dc_ki Q12 r w 网侧调试.直流母线电压环 Kisci_buffer73 grid_data.i_d_kr Q12 r w 网侧调试.电网 D 轴电流环 Krsci_buffer79 grid_data.i_q_set_zero AQ4 r w 网侧调试.I_Q 偏置,用于无功补偿sci_buffer80 grid_data.lvrt_enable r w 网侧调试.自动卸荷使能sci_buffer81 grid_data.lvrt_switch r w 网侧调试.卸荷开关sci_buffer82 grid_data.u_dc_set VQ4 r w 网侧调试.母线电压设定值sci_buffer83 预留.sci_buffer84 预留.sci_buffer85 system.cmd_for_gen r w 机侧调试.控制指令sci_buffer86 pi_i_stator_d.kp Q12 r w 机侧调试.定子 D 轴电流环 Kpsci_buffer87 pi_i_stator_d.ki Q12 r w 机侧调试.定子 D 轴电流环 Kisci_buffer88 pi_i_stator_q.kp Q12 r w 机侧调试.定子 Q 轴电流环 Kpsci_buffer89 pi_i_stator_q.ki Q12 r w 机侧调试.定子 Q 轴电流环 Kisci_buffer95 i_q_kr_p Q12 r w 机侧调试.定子 Q 轴电流环 Kr_psci_buffer96 i_d_set_zero AQ4 r w 机侧调试.I_D 偏置,用于无功励磁sci_buffer97 lvrt_enable r w 机侧调试.自动卸荷使能sci_buffer98 lvrt_switch r w 机侧调试.卸荷开关sci_buffer99 speed_sensor_select r w 机侧调试.速度位置测量方式选择sci_buffer100 mppt_select r w 机侧调试.mppt 选择北京科诺伟业科技有限公司 表中前面一组数据为只读,后一组数据可读可写。为了节省通信开销,根据 Modbus 连续地址操作的特点,将相同属性等需要同时操作的数据放在相邻位置。例如自动控制指令、有功电流给定和无功电流给定三者相邻,则可以通过一条连续地址写指令实现。对于任意功能码,有统一的事务处理流程,如下图所示:此处因条件因素影响,并未完全完成全部事务流程,当检测到 Modbus 异常时,忽略此条指令,等待下一条指令。更详细的 Modbus 规约请参考GBT 19582.1-2008 基于 Modbus 协议的工业自动化网络规范 。3.2 难点及解决方案在从主机接收到一帧数据后,首先要进行 CRC 校验,此为一项耗时操作,此运算无法在一次中断函数中完成。预选方案有两种,一种是每次中断中完成一部分校验工作,直至全部完成;第二种方案是将校验工作交给程序主循环去做,当完成校验运算后通知中断程序进行下一步工作。考虑到同时进行了还有有效值计算等耗时操作,故统一选用第二种方案。3.3 关键代码 串口及数据初始化函数北京科诺伟业科技有限公司 inline void sci_init(void) unsigned int i;*MCRA |= 0x0003; / 配置串行口引脚为 特殊功能 TXD,RXD*SCICCR = 0x87; / 2 个停止位,不使能奇偶校验,空闲线多处理器模式,8 位字符*SCICTL1 = 0x03; / 使能接受和发送,SLEEP 禁止休眠*SCICTL2 = 0x00; / 禁止接受和发送中断*SCIHBAUD = 0x02;*SCILBAUD = 0x08; / 波特率为 9600bps*SCICTL1 = 0x23; / 使 SCI 脱离复位状态for(i = 0; i 1) sci_rx_crc16_seed;elsesci_rx_crc16_value = 1;/ code end Modbus 底层接收函数北京科诺伟业科技有限公司 inline void sci_rx()if( 0 = sci_modbus_rx_flag )sci_rx_ready = *SCIRXST;sci_rx_ready if( 0x0040 = sci_rx_ready ) sci_rx_buf = *SCIRXBUF; switch( sci_rx_state )case SCI_IDLE_WAIT:case SCI_RECEIVING:case SCI_RECEIVED:break;case SCI_RX_FULL:default:sci_rx_timeout = SCI_RX_TIMEOUT;if( 0 = sci_rx_timeout ) / reset sci_rx switch( sci_rx_state )case SCI_IDLE_WAIT:break;case SCI_RECEIVING:case SCI_RECEIVED:case SCI_RX_FULL:default:break;elsesci_rx_timeout-;北京科诺伟业科技有限公司 Modbus 底层发送函数inline void sci_tx() unsigned int sci_tx_ready = 0;static unsigned int sci_tx_data_n_c = 0;if( sci_tx_en )RS485_WE = 1;if( sci_tx_data_n_c = sci_tx_data_n ) / reset sci_txsci_tx_data_n_c = 0;sci_tx_data_n = 0;sci_tx_en = 0;elsesci_tx_ready = *SCICTL2;sci_tx_ready if( 0x0080 = sci_tx_ready )*SCITXBUF = sci_tx_datasci_tx_data_n_c+;elseRS485_WE = 0; Modbus 数据处理函数北京科诺伟业科技有限公司 inline void sci_modbus_cmd_progress()if( sci_modbus_rx_flag )sci_modbus_rx_flag = 0;/ 更新数据 sci_buffer = variablesci_buffer0 +;./ modbus 指令解析sci_cmd_word = sci_rx_data1;switch( sci_cmd_word )case SCI_READ_HLD_REG:.case SCI_READ_AI:.case SCI_SET_1_HLD_REG:.case SCI_SET_N_HLD_REG:case SCI_MASK_HLD_REG:.case SCI_SWAP_N_HLD_REG:.case SCI_INFORMATION:.default:break;4. 实验背景及条件本实验依靠兰州理工大学“10kVA 直驱型风力发电实验平台 ”项目。10kVA 直驱型风力发电实验平台结构如图 4.1 所示,以变频器控制异步电机模拟风力机,驱动永磁同步发电机,通过背靠背全功率变流器与电网连接。北京科诺伟业科技有限公司 变压器电力系统机侧变流器电网侧变流器定子接触器3

温馨提示

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

评论

0/150

提交评论