2.1 嵌入式PLC的集成编辑系统
梯形图编程语言是从继电器逻辑控制(RLC)演变而来的,工程技术人员利用梯形图编程语句来表不各设备之间的逻辑控制关系。在编辑状态下,操作者一在编辑窗口可任意查看和编辑梯形图的内容。本系统采用日本FANUC的PMC指令系统助记符,包括12条基本指令和33条功能指令。本组件采用面向对象的设计方法来完成,以下为梯形图显示和阶梯上触点的存储和显示对应的类结构定义。
2.2 嵌入式PLC用户程序的运行
(1)PLC运行程序数据结构的定义。在系统内存中首先开辟1K的存储区域,用于存放PLC的I/O信号状态,这些信号包括由机床向PLC的输入信号XO一X63,由PLC向机床的输出信号Y64~Y127,由CNC向PLC的输入信号F128~F227,由PLC向CNC的输出信号6228~6299,内部继电器8800~R1023,保持型存储器的数据D300~D799。其中保持型存储器由20个内部定时器D300~D399,20个内部计数器D400~D499,44个保持继电器D500~D543和占用256个字节的数据表组成,内部定时器和计数器各占5个字节。对这个区域按位或字节刁一址来实现I/O状态的扫描和控制。例如,可以用如下指令开辟一块1K字节的内存区。
char } PLC IOSTATE;
PLC IOSTATE=(char、)mallocC 1024;
为了加强软件的灵活性和可移植性,可用宏定义的方法来实现各种信号起始点对应定位置的定义。然后,定义两个字符类型的全局变量PLC ST和PLC STO,其中PLC ST相当于一个堆栈,PLC STO用于存放每个阶梯的最终执行结果。
内部计数器/定时器采用软件的方法实现,它们是PLC内部非常重要的中间资源。一个内部计数器在I/O状态表内占据连续的5个字节空间,第1,2字节存放计数器的预置值,第3,4字节用于计数,第5字节的第0位用于检测上升沿,实现脉冲计数,其他位保留。
(2)基本指令的实现方法。PLC用户程序在系统内部以一定的二进制格式存放,每条指令占用4个字节,用于存放该指令的功能以及相应的参数。利用C语言,根据PLC指令集建立一个用户函数库,则执行程序的编写就如同对PLC编程一样。例如RD X1.0可以用如下函数实现:
输入和输出单儿的刷新同样利用一个函数来实现,最后通过输出口送出控制量,实现PLC控制,嵌入式PLC的基本功能也就完成了。采用时钟中断不断调用执行的方式,实现PLC的循环往复执行。
3 结束语
本文开发的嵌入式PLC组件已初步和“LGCNC”系统融合在一起,充分利用基于PC的CNC系统丰富的软、硬件资源,实现了和CNC系统的有机结合。该PLC系统可完成的功能主要有:主轴正、反转和停止的控制,主轴的转速控制,自动换刀,冷却液开关,定时润滑控制等。它的成功开发为准柔性生产设备的大量生产提供了条件。