计算机数字通信技术及信息技术的发展,推动了自动化技术的进步;特别是近十年来兴起的现场总线技术(Filedbus),是计算机数字通信技术向工业自动化领域的延伸,它的发展将促使自动化系统结构发生重大变革,是传统的基于PLC及DCS控制技术系统发展的必然归宿。
现场总线技术的一个显着特点是其开放性,允许并鼓励不同厂家按照现场总线技术标准,自主开发具有特点及专有技术的产品。依照现场总线技术规范,不同厂家产品可以方便完成组态与集成,构成面向行业、适合行业特点的自主控制系统。这一特点为更多的自动化产品制造商自主开发并推出自主知识产权的自动化系统提供了可能。也为自动化系统集成商开发面向行业应用的成套技术和自动化系统提供了机会。
现场总线技术以其先进性、实用性、可靠性、开放性的优点,必然成为未来自动化技术发展的主流。基于现场总线技术的控制系统(Filedbus Control System-FCS)与人们预想的一样,对传统的PLC、DCS系统形成了巨大的冲击。FCS已不再是一种预测、一种设想,而是实实在在的作为先进控制系统产品出现在市场上。本文将描述传统PLC控制系统向基于现场总线控制系统的演变过程,以现场总线PROFIBUS为背景,描述一个基于现场总线控制系统的结构组成,并分析系统的市场前景。
1 运动控制模块的研制
本设计中,运动控制模块负责电机的驱动、多轴联动、G代码解释等工作,是数控系统的"大脑".因此运动控制器的性能直接关系到整个机床的性能。
1.1 总体结构
为实现高性能数控计算,系统采用双MCU结构,主控MCU负责G代码读写与解释、人机界面、网络通信等任务;NC运动控制MCU(即运动控制芯片)作为一个专用数字芯片,负责三轴电机的速度控制、定位、多轴直线和圆弧插补等任务,以保证运动控制模块在完成复杂的工作时仍能提供良好的性能。运动控制模块结构如图1所示。
模块采用SD卡作为G代码文件的存储器。SD卡具有大容量、小体积、支持热插拔等特点,尤其是其兼容SPI总线读写,省去了主控制器作为USB盘读写的硬件,降低了成本。
运动控制模块具有现场总线通信功能,支持RS-485和CAN总线2种现场总线物理层规范。以可靠性为设计原则,总线接口与主控制器进行了电气隔离,并加入保护元件提高其抗瞬态干扰能力。图2、图3分别是模块RS-485和CAN总线的隔离接口原理图。其中使用了TI公司的高速数字隔离器ISO7221进行数字信号的电气隔离,同时在接口端设置了瞬态抑制二极管(TVS管)进行保护,确保了硬件在各种环境下的可靠性。
1.2 Cortex-M3与STM32简介
Cortex-M3是一个32位的核,在传统的单片机领域中,有一些不同于通用32位CPU应用的要求。谭军举例说,在工控领域,用户要求具有更快的中断速度,Cortex-M3采用了Tail-Chaining中断技术,完全基于硬件进行中断处理,多可减少12个时钟周期数,在实际应用中可减少70%中断。
基于Cortex-M3核的STM32F103系列MCU,运行于72 MHz的总线频率,可以获得1.25 DMIPS/MHz的运算性能、单周期乘法指令、硬件除法器,带有容量至少为32 KB的Flash及6 KB的SRAM、2个12位A/D、7通道DMA、6路16位定时器及PWM、SPI、I2C、USART、USB、CAN等高性能模块,并具有18 MHz输出频率的高速GPIO.在电机和运动控制的应用中,可以充分发挥其先进内核的性能和丰富的模块资源特性。
1.3 工作流程
运动控制器工作流程总体示意图如图4所示。
1.3.1 G代码解码
运动控制模块接收到工作指令后,开始进行G代码的解释执行任务。G代码存放在SD卡中,主控制器集成FAT文件系统,支持SD卡的文件读写。G代码读入后,逐行进行遍扫描(即指令预处理),期间将注释、空格、非法字符去除,小写字符转换成大写,以方便解码程序进行识别。
经过预处理的G代码指令逐行送入G代码解码程序,解释程序再逐字检查其是否为G代码的指令字符,若是,则提取关键字的后续数值,作为该指令的操作数,将其提取出来。其中用到了ANSI C的标准库函数sscanf( )(位于stdio.h中),可以方便地提取字符串中指定的信息,支持类正则表达式的格式字符串,非常灵活。同时因为使用了ANSI C的标准库函数,程序移植简单。
以下是G代码解码程序的部分代码:
/*遍历整个s字符串,找到字符后,提取后续数字,并存入中间代码中*/
其中,CurrentGMidCode是预定义的结构体变量,用于保存每行G代码提取出来的指令及其操作数,结构如下:
提取到每行G代码的关键信息后进行相关处理,计算出每行代码的运动起止坐标,将其通过SPI总线发送至NC控制芯片,控制电机运动。
1.3.2 插补进给
电机的插补运算、加减速和进给控制,由一个独立STM32微控制器完成,并称为NC运动控制芯片。
目前市场上的运动控制芯片主要是日本和欧美公司的专用ASIC和各数控厂家自行开发的FPGA芯片,虽然性能优越,但价格不低。相对于使用ASIC芯片或FPGA芯片,完成同样的任务使用MCU方案,硬件生产成本和开发成本均具有明显优势,当STM32微控制器运行在其频率为72 MHz下时,性能完全可以满足中低端数控系统应用的要求。
在三轴数控铣系统中,NC运动控制芯片需要实现三轴快速定位、二轴直线插补、二轴圆弧插补、三轴直线插补的功能。
插补是在组成轨迹的直线段或曲线段的起点和终点之间,按一定的算法进行数据点的密化工作,以确定一些中间点,从而为轨迹控制的每一步提供逼近目标。在本控制器中,选用逐点比较法作为基本的插补算法,具有算法简单高效、进给速度均匀的特点,同时支持三轴的直线插补[1],满足本控制器对插补算法的要求。
逐点比较直线插补,就是执行机构每走一步都要和给定运动轨迹上相应的坐标值相比较,比较的结果称为偏差函数F,根据偏差的正、负决定下一步的进给方向。实质上这是一种用阶梯折线来逼近直线的一种算法,它与规定运动轨迹之间的误差为1个脉冲当量(每走1步移动的距离)。因此,只要把脉冲当量设计得足够小,就可以达到运动的要求[2].
1.4 Modbus-RTU协议的实现
Modbus 协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如何回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。Modbus协议工业控制已从单机控制走向集中监控、集散控制,如今已进入网络时代,工业控制器联网也为网络管理提供了方便。Modbus就是工业控制器的网络协议中的一种。
Modbus-RTU协议以帧为通信的基本单位,帧格式为:地址码1 B;功能码1 B;数据区N B;错误校验2 B CRC码。
本运动控制器在其RS-485接口上实现了Modbus-RTU协议,使用了当今流行的开源协议栈FreeModbus-RTU,从而保证了可靠的通信、节约了开发成本。
FreeModbus是针对通用的Modbus协议栈在嵌入式系统中应用的实现,其遵循BSD开放源代码协议,并可以用于商业用途,成熟可靠。移植FreeModbus到STM32处理器只需要少量资源,除了1个双工USART外,只需要配置1个定时器进行超时判断即可。
2 基于C200HE型PLC的运动控制网络实验平台设计
2.1网络结构
欧姆龙(OMRON)公司的C200HE-CPU42型PLC带有RS-232口和通信板。通信板支持各种通信协议,如上位链接、RS-232通信、1:1链接、NT链接(1:1、1:N)以及协议宏功能等,并能根据需要进行切换。通过协议宏功能,用PMCR指令,通过指定按标准设置的顺序,就能设置成Modbus协议。
运动控制系统的网络结构体系分为3个层次:管理层、控制层和器件层,如图5所示。
(1) 管理层:是层,负责系统的管理与决策。其中PLC是整个控制网络的,它作为Modbus网络的主设备,通过Modbus网络与各运动控制器之间传输生产管理信息、质量管理信息及CNC的运行情况等数据。上位计算机运行组态软件,通过RS-232串行通信口与PLC通信,实时监控系统的运行。
(2) 控制层:是整个网络系统的中间层,各运动控制模块挂接在Modbus网络上成为其从节点,负责下面CNC运行过程的监控、协调和优化。
(3) 器件层:雕刻机是整个网络的层,是现场总线网络中直接面对现场的器件和设备,为网络的终端执行机构。
2.2 用协议宏功能实现Modbus协议
在协议宏软件CX-Protocol上创建工程,选择正确的设备名称、型号及网络类型。然后创建通信序列和接收序列,并到PLC通信板中。在PLC中编写程序,用PMCR指令调用指定的通信序列,实现与运动控制模块的通信。通信协议宏主要由发送/接收数据程序构成,每个通信协议多包含0~999个发送/接收数据程序,每个发送/接收程序多由16步构成。协议宏结构如图6所示[3].
2.2.1创建通信序列
将通信序列号设为"000",在通信序列中要设置PLC与通信板链接字、传输控制参数、响应接收方式、数据接收监控时间、数据接收完成监控时间、数据发送完成监控时间等内容。
(1) 创建通信步(Step)
在通信序列"000"中创建Step00和Step01 2个通信步。Step00用于控制运动控制模块的运行,Step01用于查询运行状态。在每一个通信步中包括步号(Step)、重复计数器(Repeat)、命令(Command)、重试次数(Retry)、发送信息(Send Message)、接收信息(Recv Message)、是否响应(Response)、出错处理方式(Error)等内容。
(2)创建发送和接收信息
发送信息与接收信息必须严格按照Modbus协议格式编写,需要设置校验码(Check Code)、数据长度(Length)、地址(Address)和数据(Data)等信息。
(3)创建接收阵列
PLC向运动控制模块发送指令时,模块可能返回运行正常或错误响应信息,在接收数据时,使用阵列的形式加以区分。系统创建了2种可能接收的信息"Run Normal"和"Error",并针对每一种情况设定不同的处理方法(Next Process),用于可能出现的各种响应信息的处理。
2.2.2 通信实现
(1) 通信设置
PLC的通信参数设定必须与运动控制模块的参数一致。对通信板上的开关做调整时,设SW1置于ON侧,使用RS-485方式;SW2设定为ON,接入120 Ω的终端电阻;设定通信板端口A为通信协议宏方式。
(2) 编写通信程序
通信协议宏的调用程序段如图7所示,图中:289.08为通信板端口A操作标志,当289.08为OFF时,表示可以使用端口A进行通信。通信过程中289.08置为ON,通信结束后,289.08置为OFF状态;当2.00由OFF变为ON、且289.08为OFF时,调用通信板上的通信序列,通过端口A发送和接收数据。通信序列号、发送和接收数据的存放区由PMCR指令的3个操作数指定,其梯形图见图7.
使用2片32位高性能单片机组成双核系统实现运动控制模块的功能,兼顾了性能和价格。同时因为使用了ANSI C的标准库函数,程序移植性好,数控解释程序中的关键技术G代码解释器的开发难度大大降低。在运动控制模块中移植Modbus协议,从而使其能简单地与PLC系统组成运动控制网络。采用欧姆龙通信协议宏实现控制多台运动控制模块,简化了现场布线,达到了设计要求,取得了很好的效果。
[1]. PLC datasheet https://www.dzsc.com/datasheet/PLC_1248813.html.
[2]. RS-485 datasheet https://www.dzsc.com/datasheet/RS-485_584821.html.
[3]. TVS datasheet https://www.dzsc.com/datasheet/TVS_1174166.html.
[4]. RS-232 datasheet https://www.dzsc.com/datasheet/RS-232_584855.html.
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。