Modbus协议是MODICON公司1979年为自己的PLC产品而推出的一个开放式现场总线通信协议,是应用于电子控制器上的一种通用语言,是一种有效支持控制器之间以及控制器经网络(如以太网)与其他设备之间通信的协议,现已成为一种通用工业标准,不同厂商生产的控制设备可以通过该协议连成工业网络,集中监控。
Modbus协议定义了一种通用的消息结构,描述了控制器请求访问其他设备的一个过程,包括如何回应来自其他设备的请求,以及怎样侦测错误并记录,并制定了消息域和内容的公共格式。当在此网络上通信时,每个控制器都拥有一个惟一的地址,并识别按地址发来的消息,最终决定要产生何种动作。如果需要回应,则控制器将生成反馈信息并按此协议格式回应。
3.3 Modbus RTU通信模式
Modbus协议包括2种传输模式,即ASCII码和RTU模式。控制器可以设置为2种传输模式中的任何一种在标准的Modbus网络上通信。本设计采用RTU传输模式。
当控制器设备选用RTU模式通信时,消息中的每个字节包含2个4位的十六进制字符。这种方式的主要优点是:在同样的波特率下,能够比ASCII码方式传送更多的数据。Modbus RTU主机消息帧结构如表1所示。
其中,地址码代表从机地址,设置为0,表示广播消息。功能码表示主机指令,包括读/写控钊状态、读/写寄存器等。数据区则为读/写寄存器地址及读取位数。RTU模式采用CRC校验。
相应的从机返回消息帧结构与主机消息帧结构类似,但是附加了数据字节长度,如表2所示。
3.4 MCX314运动控制芯片控制
MCU通过16位数据/地址总线与MCX314进行通信,可选择8位/16位数据总线格式。本设计采用了8位数据总线格式,在16位总线中分配8位为数据线,4位为地址线,4位为时序控制线。
MCX314是寄存器控制型芯片,对其所有操作都基于寄存器的读/写,按照其发送时序,先发送地址,后读取数据,其基本读/写函数实现如下:
读8位寄存器函数(写寄存器函数与其类似,只需写完置位P7):
MCX314内部寄存器均为16位,基于以上读8位寄存器函数实现读16位寄存器函数(写寄存器函数类似):
由于程序分别在串口中断与主函数处理指令过程中调用MCX314读/写寄存器函数,可能导致函数重入,造成寄存器读/写数据紊乱,因此在函数内部定义标志位,设计读/写函数为原子操作,防止函数重入。
基于以上读/写寄存器函数可对MCX314进行一系列操作控制,包括写入数据、读取数据、驱动指令与插补指令。在本设计中,写入数据及读取数据分别对应参数设置与系统状态的实时显示;驱动指令用于钻孔运动与啄钻运动;插补指令用于限定牙距的螺丝攻牙运动。通过上述指令实现以下系统操作函数,即运动芯片初始化函数、原点搜寻运动函数、定距手动钻孔函数、自动钻孔函数、啄钻函数、手动攻牙函数、自动攻牙函数等。
4 结语
利用Modbus串口协议开放、透明、开发容易等优点,结合MCX314运动控制芯片的高精度可控性,以及编程方便的总线接口方式,设计出成本低、操作简单、人机交互界面友好的触摸屏自动钻孔系统。本系统对位置与速度控制可分别精确至1×10-3mm与1×10-3mm/s,最高速度分别为4 000 mm/s与4 000 rad/s,最大钻孔深度可达8 000 mm,达到了工业生产中进行自动钻孔或螺丝攻牙的性能指标,并在工业生产中通过初步测试,工作稳定。由于Modbus协议具有网络控制能力,在实际工业生产中可并联多个钻孔系统共用一个触摸屏,通过触摸屏同时控制不同系统进行不同操作,或者采用广播模式控制多个系统进行同一操作,进一步实现低成本和自动化。
评论
查看更多