分享好友 环保知识首页 环保知识分类 切换频道

基于VB的伺服驱动器串口通信的实现

2013-03-23 18:261070工控之家工控之家网

  伺服驱动器是构成伺服系统的基本部件,广泛应用于各种电力传动自动控制系统中,如:数控机床、柔性制造系统、机器人驱动、火炮随动系统、雷达控制、舰船推进、车辆驱动、印刷设备、纺织设备、缝纫设备等。在应用伺服驱动器的过程中,实时读取和修改各个控制参数来达到实时控制,是对伺服系统的基本要求。

  本文即针对德国博世力士乐的伺服驱动器indradrive,采用灵活易用的vb6.0编程语言,通过indradrive本身所带的rs232串行通信接口,实现了上位pc机与伺服驱动器的串行通信,完成了对伺服驱动器内部各控制参数的实时控制。

  indradrive的通信协议

  indradrive采用sis通信协议,它是一种二进制通信协议,含有完整的报文格式和返回校验格式。针对博世力士乐的各种产品(plc、伺服驱动器等),sis协议的通信格式是统一的。

  sis协议采用的数据格式为:1位起始位,8位数据,1位或2位停止位,无校验位;通信传输数据的波特率为115200bps。sis协议采用十六进制数据格式来表示各种指令代码及数据,其软件通信指令经过优化设计后,只有两条,一条为读指令,一条为写指令,两条指令使得上位机软件编写非常方便。

  sis协议的报文格式如附表所示。

  附表 sis协议的报文格式

  其中报头由8个字节组成,它们的意义如下:

  第一个字节stz:起始位,默认为0x02;

  第二个字节cs:用于校验数据,它的值是除此字节外,所有的数相加后的低8位值异或ff,再加1后的值;

  第三个字节datl:除去报头后所有数据的长度(字节的个数);

  第四个字节datlw:重复第三个字节的内容;

  第五个字节cntrl:决定错误返回类型,默认为0x00;

  第六个字节service:服务类型(读参数写0x80,写参数写0x8f);

  第七个字节adrs:驱动器地址;

  第八个字节adre:驱动器地址。

  用户数据头包含5个字节,意义如下:

  第一个字节control byte:操作参数值,默认为0x3c;

  第二个字节device address(unit address):驱动器地址;

  第三个字节parameter type:参数类型,对于驱动器其值为0x00;

  第四、五字节parameter number:参数号,对于驱动器的s参数,直接写参数号的十六进制值;对于p参数,写“215+参数号”的十六进制值。

  用户数据的数据长度取决于操作参数的数据类型,如操作参数为int型,写2个字节;为dword型,写4个字节。写的时候注意低位字节在前,高位字节在后。

  vb实现pc机与indradrive的串行通信

  pc机与indradrive的通信常采用主从问答方式,pc机始终具有初始传送优先权,所有的通信均由pc机来启动。每次通信都是由pc机通过发送(读/写参数)命令启动通信,indradrive在接到pc机发送的命令后,首先检查命令中的起始标志,然后检查命令中的驱动器地址是否与自己的驱动器地址相符,如果不一致,说明计算机是与其它的驱动器进行通信,从而忽略该命令;如果一致,就响应该命令,并将执行结果回送到pc机,一次通信过程结束。

  在vb的控件工具箱中提供了一个使用非常方便的串行通信控件mscomm,它全面地提供了使用串行通信上层开发的所有细则,串行通信的实现既可以采用中断方式,又可以采用查询方式。mscomm控件提供了实现串行端口中断功能的oncomm事件,该事件是唯一的,可以截取串口的任何消息,当有串口事件或错误发生时,vb程序就会自动转入oncomm事件处理程序中。commevent属性存有串口最近的事件或错误的数值代码,可以在程序中随时读取commevent属性值来了解通信情况,oncomm事件是和commevent属性密切相关、一起使用,当任何一个oncomm事件或错误发生时,都会使得commevent属性值改变。在oncomm事件处理过程中,可以通过判断commevent属性值,对于不同的属性值转入不同的事件处理过程。

  根据sis通信协议的规定,vb程序中主要是针对mscomm控件的操作,主要有mscomm控件的初始化和oncomm事件的处理。

  mscomm控件的主要初始化代码如下:

  mscomm_com1.commport = 1

  ‘设定需要使用的串口

  mscomm_com1.settings = “115200,n,8,1”

  ‘设定传输的波特率和校验方式

  mscomm_com1.portopen = true ‘打开通信串口

  mscomm_com1.rthreshold = 1

  ‘设置输入缓冲区字符输入门限

  oncomm事件的处理程序主要代码如下:

  private sub mscomm_com1_oncomm()

  dim input_buffer as variant dim upper_limit as integer dim

  input_to_hex as string

  dim i as integer

  input_buffer = mscomm_com1.input

  ‘从接收缓冲区copy字符

  upper_limit = ubound(input_buffer)

  ‘收到数据的个数

  for i = 0 to upper_limit

  input_to_hex = hex(input_buffer(i))

  ‘将接收到的数据转化为十六进制

  if len(input_to_hex) 《 2 then

  ‘将不满两位的十六进制值前补0

  input_to_hex = “0” & input_to_hex

  end if

  if i = 0 then

  ‘每开始新的一次接收,清空显示文本框

  txtreceivedata.text = “”

  end if

  txtreceivedata.text = txtreceivedata.text & input_to_hex & “ ”

  ‘显示接收的内容

  next

  end sub

  读写命令实例及注意事项

  有了上面的基础,就可以根据sis协议的数据格式来实时读写indradrive的内部参数,如读取位置反馈值参数s-0-0051的值,首先将参数号51转化为十六进制数33,即在用户数据头的第四、五两个字节分别写入3300(注意:高字节在后,低字节在前);其它字节可以相继得出,因是读参数值,所以不需写用户数据;从而发送内容应为:02 02 05 05 00 80 01 01 3c 01 00 33 00。如果通信正常,则会接收到类似的字节内容:02 20 07 07 10 80 01 01 00 3c 01 4e ac 07 00,其中后4个字节即为位置反馈值(注意:高字节在后,低字节在前),十六进制表示应为7ac4e,将其转化为十进制为502862,实际的位置值应为50.2862(位置值的分辨率为0.0001)。在写参数时,和读参数的不同的地方就是用到用户数据,也就是将欲写入的值写到用户数据的位置。如将100.0000写入最大行程值参数s-0-0278,首先将参数号278转化为十六进制数116,即在用户数据头的第四、五两个字节分别写入16 11;再将1000000(注意不是100.0000)转化为十六进制为f4240,即在用户数据的四个字节依次写入40 42 0f 00;其它字节可以相继得出;发送内容应为:02 76 09 09 00 8f 01 01 3c 01 00 16 01 40 42 0f 00。如通信正常,则会接收到:02 1a 03 03 10 8f 01 01 00 3c 01,表示改写参数成功。

  值得注意的是,除了在数据格式上遵从sis协议之外,操作过程中还应注意以下几点:

  通信波特率应为115200 bps。

  写参数时,应先使indradrive处于pm(参数模式)。通过置位参数s-0-0420(激活参数模式)的bit1、bit0,就可以将indradrive切换到pm;而在改写参数s-0-0420时,不需在pm;在将s-0-0420的bit1和bit0置位后,不要忘了再将其复位,这样便进入pm,便可以随意改写参数了。在配置完参数后,应该跳出pm,进入om(操作模式),通过参数s-0-0422(跳出参数模式)来完成,配置过程与s-0-0420类似。

  (3)读参数时无论indradrive处于pm和om均可读取,没有限制。

  (4)读参数时,接收到内容的第11个字节以后的内容为用户数据;而写参数时,接收到的内容中没有用户数据部分,只要通信正常,均会收到相同内容02

  1a 03 03 10 8f 01 01 00 3c 01。

  (5)如果正在上位机用indraworks调试indradrive,则读写参数时,应使indraworks离线,否则会提示串口被占用。

  结语

  本文所阐述的串口通信方法已成功应用于调试博世力士乐indradrive伺服驱动器的实验中,灵活方便,达到了实时修改驱动器的参数的要求;适当改进即可应用于地铁站台屏蔽门系统和安全门系统以及自动门系统的上位机监控,具有较好的实际价值和可扩展性。

点赞 0
举报
收藏 0
打赏 0
评论 0
分享 1
更多相关评论
暂时没有评论,来说点什么吧
金属热电阻传感器的典型应用
近年来,信息技术在各个领域得到了广泛应用,与行业用户业务的融合也不断走向深入,各类信息系统成为企业业务开展中不可或缺的“亲密伴侣”。在此背景下,网络运行的稳定性、信息系统的安全性,对电力保障的要求也越来越高,UPS作为“电力保护神”的角色越

0评论2021-11-04757

UPS作为“电力保护神”在小型场合的应用
近年来,信息技术在各个领域得到了广泛应用,与行业用户业务的融合也不断走向深入,各类信息系统成为企业业务开展中不可或缺的“亲密伴侣”。在此背景下,网络运行的稳定性、信息系统的安全性,对电力保障的要求也越来越高,UPS作为“电力保护神”的角色越

0评论2021-11-04737

东元变频器N310在自动锯床中的应用
以前国内的金属加工厂所使用的锯床进锯电机一般都采用交流异步电动机单速传动方式,锯片的进刀量不可调节,限制了锯床的使用范围。目前配合模具及加工工件大型化的发展趋势,电脑数控锯床和中大型全自动锯床的销量增加。这些机型在锯切不同尺寸的材料时,无须

0评论2021-11-04773

数字化技术在冲压模具设计与制造中的应用
近年来,伴随着我国航空制造业和汽车工业的迅猛发展,冲压模具每年都在以20%的增速发展。冲压模具是冲压生产必不可少的工艺装备,是技术密集型产品。冲压件的质量、生产效率以及生产成本等与模具设计和制造有直接关系。如在一个车型生命中,周期最短、变化

0评论2021-11-04724

高压变频器在电厂脱硝改造中的应用
氮氧化物(NOx)是大气主要污染物之一,在大气污染物中,90%以上的氮氧化物源于煤、石油、天然气等燃料的燃烧,其中70%来自于煤的燃烧,而火电厂发电用煤又占了全国煤燃烧的70%。随着国民经济的发展,电力需求快速增加,燃煤锅炉不断扩建,用煤量

0评论2021-11-04746

变频器在电厂脱硝改造中的应用
氮氧化物(NOx)是大气主要污染物之一,在大气污染物中,90%以上的氮氧化物源于煤、石油、天然气等燃料的燃烧,其中70%来自于煤的燃烧,而火电厂发电用煤又占了全国煤燃烧的70%。随着国民经济的发展,电力需求快速增加,燃煤锅炉不断扩建,用煤量

0评论2021-11-04742

网络化传感器在工程中的应用
传感器是将各种参量送入计算机系统,进行智能监测、控制的最前端。随着科技的发展,数字化、网络化传感器应用日益广泛,以其传统方式不可比拟的优势渐渐成为技术的趋势和主流。下面,我们结合实际应用中的要求,浅谈一下数字化、网络化传感器的特点,供大家选

0评论2021-11-04622

基于凌华科技PCI-9846高速数字化仪的复杂超声场自动检测与分析
1. 应用背景医用超声诊断和治疗设备已经成为医疗卫生事业中不可或缺的组成,尤其是对患者的健康生活起着重要的作用。在超声诊断和治疗中都离不开超声换能器这一重要的器件。因此对其声场特性和频率等性能的准确测定,需要引起超声设备研究人员和换能器生产

0评论2021-11-04613

机器视觉产品选型之线阵相机镜头选择诀窍
线阵工业相机相较一般相机具有更高的分辨率,非常适合高精度测量场合,可以准确测量到微米。在线阵相机机器视觉产品的应用中,就需要选择合适的线阵相机镜头来配合使用,最大限度的发挥其性能优势。在选择线阵相机镜头时,可以使用f/WD=Sensor/(

0评论2021-11-04690

浅谈软起和变频之间的区别
大功率的电机在启动的时候往往需要借助软起或者变频器,其原因如下:1、起动电流达到电机全载工作电流的800%以上2、巨大的起动电流引起电网电压下降,影响到其他负载3、电机在全压启动时的电流过大,会引起电路中具有过载保护功能的元器件动作。4、机

0评论2021-11-04617