
基于VB的伺服驱动器串口通信的实现.docx
4页基于VB的伺服驱动器串口通信的实现 伺服驱动器是构成伺服系统的基本部件,广泛应用于各种电力传动自动掌握系统中,如:数控机床、柔性制造系统、机器人驱动、火炮随动系统、雷达掌握、舰船推动、车辆驱动、印刷设备、纺织设备、缝纫设备等在应用伺服驱动器的过程中,实时读取和修改各个掌握参数来达到实时掌握,是对伺服系统的基本要求 本文即针对德国博世力士乐的伺服驱动器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_mport = 1‘设定需要使用的串口mscomm_com1.settings =“115200,n,8,1” ‘设定传输的波特率和校验方式mscomm_com1.portopen = true’打开通信串口mscomm_com1.rthreshold = 1‘设置输入缓冲区字符输入门限oncomm大事的处理程序主要代码如下:private sub mscomm_com1_oncomm() 4Word版本。












