PLC编程-C语言_第1页
PLC编程-C语言_第2页
PLC编程-C语言_第3页
PLC编程-C语言_第4页
PLC编程-C语言_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、华中数控培训讲义 PLC编程C语言编程PLC控制的范围 数控机床所受到的控制可分为两类:数字控制和顺序控制。数控机床所受到的控制可分为两类:数字控制和顺序控制。 数字控制主要指对各进给轴进行精确的位置控制,包括:轴移数字控制主要指对各进给轴进行精确的位置控制,包括:轴移动距离、插补、补偿等。动距离、插补、补偿等。 顺序控制主要指以顺序控制主要指以CNC内部和机床各行程开关,传感器,按内部和机床各行程开关,传感器,按钮,继电器等的开关量信号状态为条件,并按照预先规定的逻辑顺钮,继电器等的开关量信号状态为条件,并按照预先规定的逻辑顺序对诸如主轴的起停,刀具的转换,工件的夹紧松开,液压,冷序对诸如主

2、轴的起停,刀具的转换,工件的夹紧松开,液压,冷却,润滑系统的运行等进行的控制。却,润滑系统的运行等进行的控制。 与与“数字控制数字控制”比较,比较,“顺序控制顺序控制”的信息主要是开关量信号。的信息主要是开关量信号。 PLC控制的范围包括全部顺序控制和简单的数字控制(如:轴控制的范围包括全部顺序控制和简单的数字控制(如:轴点动)点动) 寄存器是数控系统、PLC、机床三者之间交流的载体,是PLC控制的主要对象,也是PLC程序的最小单元。寄存器的分类寄存器的个数PLC源代码的基本构成n初始化函数void init(); 仅上电时调用一次n高速扫描函数void plc1();每隔8ms被调用一次n低

3、速扫描函数void plc2();每隔128ms被调用一次PLC执行程序的生成n运行环境-MSDOS6.22n编译器-Borland C+ 3.1BC31的路径需要加入OS的环境变量n编译环境-各种信息定义文件(*.inc)nPLC源文件铣-plc_21mu.cld车-plc-21.cppnPLC头文件车-plc_map.h (主要包含IO点的定义)PLC头文件的生成plctab_t.dat (IO点信息文件)standplc.exe(标准PLC配置软件)plc_map.h寄存器的数值说明 以R寄存器为例,不同的类型有着不同的取值范围。(注:PLC不支持浮点运算)定义自己的R寄存器正确的定义方

4、式#define spdl_ctrl R20/主轴控制(0停止1正转2反转)#define spdl_cmdR_i22/2/主轴转速#define spdl_dwellR_ui24/2/主轴定时器#define Lube_dwellR_ul28/4/润滑定时器 C语言编程中,使用带有含义的变量,往往比直接对R寄存器操作更加直观。定义自己需要的R寄存器,是编程的第一步。 一般说来,类似记录开关量的状态,用char型的变量。如果需要记录类似主轴转速或用作短时间计时器的话,则用int型的变量,而记录轴的位置或用作长时间计时器,则需要用long型的变量。错误的定义方式#define spdl_ctrl

5、 R20/2/主轴控制(0停止1正转2反转)#define spdl_cmdR_i22/主轴转速#define spdl_dwellR_ui23/2/主轴定时器#define Lube_dwellR_ul26/4/润滑定时器PLC常用指令浅析一#define bit(x,b) (x)&(1(b)/获取某一位的状态#define set_bit(x,b) (x)|=1(b)/将某一位置1#define clr_bit(x,b) (x)&=(1(b) /将某一位置0 plc常用宏、寄存器的定义和函数的声明都可以在sys目录下的plc.h中找到,而部分函数的定义则放在sys目录下plc_sub.c中

6、。实例:手动方式下,Z轴正向点动时,灯信号的处理(假设面板按键X33.5,灯信号Y33.5)if(bit(X33,5)set_bit(Y33,5);/点亮+Z灯elseclr_bit(Y33,5);/熄灭+Z灯PLC常用指令浅析二#define axis_ctrl(x) (G_ui(x)*10)/轴控制#define axis_stat(x)(F_ui(x)*10)/轴状态#define ch_ctrl(x)(G_ui(x)*20+162)/通道控制#define ch_stat(x) (F_ui(x)*20+162/通道状态 不同的G和F寄存器代表不同的意义,这些已经由CNC控制软件定义定义

7、在plc.h中,这里只针对几个常用的寄存器作一个简单的讲解。实例一:X轴负限位的处理(假设X轴负限位X0.1,当前通道为0)if(bit(X0,1)*axis_ctrl(0)|=AX_LSN; /通知CNC,X轴已到负限位else*axis_ctrl(0)&=AX_LSN;/清除标记(注: AX_LSN的定义详见plc.h)PLC常用指令浅析二实例二:循环启动的处理(按键X31.6,灯Y31.6)if(bit(X31,6)*ch_ctrl(0)&=CH_FEEDHOLD_SW;/取消进给保持*ch_ctrl(0)|=CH_CYCLE_SW;/循环启动开始else*ch_ctrl(0)&=CH_

8、CYCLE_SW;/取消循环启动if(*ch_stat(0)&CH_CYCLE_LAMP)set_bit(Y31,6);/点亮循环启动灯elseclr_bit(Y31,6);/熄灭循环启动灯PLC常用函数浅析一除了宏定义,函数也是PLC必不可少的组成部分。前面我们已经介绍了PLC不可或缺的三个函数init()、plc1()和plc2(),这里我们再介绍几个常用的函数。void set_axis_home(int axis,int start_stop);void set_axis_jog(int axis,int speed);void set_axis_step(int axis,long

9、displacement);void handwheel(int h_no,int axis,int step_mul);if(bit(X35,3)/-Z jogset_axis_jog(2,-100);elseset_axis_jog(2,0);注:这里速度单位是脉冲/秒。若设计单位是毫米/分钟,需要先乘上(插补周期/ 60)。假设插补周期为4ms,那么 1500毫米/分钟 等同于 100脉冲/秒PLC常用函数浅析一实例:X轴回零的处理(正点动X35.4,回零挡块X1.0)#define Finding_Axis_ZeroR7if(*axis_stat(0)&AX_HOME_LAMP) /回

10、零完成clr_bit(Finding_Axis_Zero,0);else if(bit(X35,4)set_axis_home(0,1);/回零开始if(get_bit(X1,0)/遇到回零开关*axis_ctrl(0)|=AX_HOME_SW;if(*axis_stat(0)&AX_HOME_GOING)set_bit(Finding_Axis_Zero,0);else*axis_ctrl(0)&=AX_HOME_SW;if(*ch_ctrl(0)&CH_MODE_MSK)!=MODE_REF_RETURN)set_axis_home(0,0);PLC常用函数浅析二 M(辅助)、S(主轴速度

11、)、T(刀具)指令是PLC经常会用到的功能,它们可以让用户在G代码中自动控制机床的动作而不需要手工干预。 M、S、T分别对应函数exec_M()、 exec_S()、 exec_T()。它们需要在初始化的时候就加载到扫描周期中。void init(void)set_mst_func(0,M,exec_M);set_mst_func(0,T,exec_T);set_mst_func(0,S,exec_S);PLC常用函数浅析二M代码编程实例一:吹气,假设开关Y2.3void exec_M (int ch)switch(*ch_M_code(ch)case 88:/吹气开set_bit(Y2,3)

12、;mod_M_code(ch)=-1;/M代码完成break;case 89:/吹气关clr_bit(Y2,3);mod_M_code(ch)=-1; /M代码完成break;C语言编程实例一 触发器int get_raise(int g,int b)/取上升沿int v =0; if(bit(Xg,b)if(bit(R600+g,b)=0)v=1;elseset_bit(R600+g,b);elseclr_bit(R600+g,b);return v;#define coolantR100void plc1(void)if(get_raise(30,5)if(coolant) coolant=0;else coolant=1;if(coolant)set_bit(Y30,5);/点亮冷却灯elseclr_bit(Y30,5);/熄灭冷却灯C语言编程实例一 触发器int get_fall(int g,int b)/取下降沿int v =0; if(bit(Xg,b)=0)if(bit(R600+g,b)v=1;elseclr_bit(R600+g,b);elseset_bit(R6

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论