




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
如何用C语言编写华中数控系统PLC程序一、铣床内置式PLC的结构华中数控铣削数控系统的PLC为内置式PLC,其逻辑结构如图1所示。图1 华中数控系统内置式PLC的逻辑结构其中:X寄存器为机床输出到PLC的开关信号,最大可有128组(或称字节,下同);Y寄存器为PLC输出到机床的开关信号,最大可有128组;R寄存器为PLC内部中间寄存器,共有768组;G寄存器为PLC输出到计算机数控系统的开关信号,最大可有256组;F寄存器为计算机数控系统输出到PLC的开关信号,最大可有256组;P寄存器为PLC外部参数,可由机床用户设置(请运行参数子菜单中的PMC用户参数命令),共有100组;B寄存器为断电保护信息,共有100组。X、Y寄存器会随不同的数控机床而有所不同,主要和实际的机床输入/输出开关信号(如限位开关、控制面板开关)有关。但X、Y寄存器一旦定义好,软件就不能更改其寄存器各位的定义;如果要更改,必须更改相应的硬件接口或接线端子。R寄存器是PLC内部的中间寄存器,可由PLC软件任意使用。G、F寄存器由数控系统与PLC事先约定好的,PLC硬件和软件都不能更改其寄存器各位(bit)的定义。P寄存器可由PLC程序与机床用户任意定义。二、铣床内置式PLC的软件结构及其运行原理和一般C语言程序都必须提供main()函数一样,用户编写内置式PLC的C语言程序必须提供如下系统函数定义及系统变量值:extern void init(void);/初始化PLCextern unsigned plc1_time;/函数plc1()的运行周期,单位:毫秒extern void plc1(void);/PLC程序入口1extern unsigned plc2_time;/函数plc2()的运行周期,单位:毫秒extern void plc2(void);/PLC程序入口2其中,1. 函数init()是用户PLC程序的初始化函数,系统将只在初始化时调用该函数一次。该函数一般设置系统MSBT功能的响应函数及系统复位的初始化工作;2. 变量plc1_time及plc2_time的值分别表示plc1()、plc2()函数被系统周期调用的周期时间,单位:毫秒。系统推荐值分别为16毫秒及32毫秒,即plc1_time=16, plc2_time=32;3. 函数plc1()及plc2()分别表示数控系统调用PLC程序的入口,其调用周期分别由变量plc1_time及plc2_time指定。系统初始化PLC时,将调用PLC提供的init()函数(该函数只被调用一次)。在系统初始化完成后,数控系统将周期性地运行如下过程:1. 从硬件端口及数控系统成批读入所有X、F、P寄存器的内容;2. 如果plc1_time所指定的周期时间已到,调用函数plc1();3. 如果plc2_time所指定的周期时间已到,调用函数plc2();4. 系统成批输出G、Y、B寄存器。因此,用户提供的plc1()函数及plc2()函数必须根据X及F寄存器的内容正确计算出G及Y寄存器的值。三、PLC程序的编写及其编译最简单的PLC程序只要包含系统必须的几个函数和变量定义即可编译运行(当然它什么事也不能做)。假设我们建立一个文本文件并命名为plc_null.cld,其文件内容为:/plc_null.cld:/PLC程序空框架,保证可以编译运行,但什么功能也不提供/版权所有2000,武汉华中数控系统有限公司,保留所有权利。/ email: / tel: +86-27-87545256,87542713fax: +86-27-87545256,87542713/最后更改日期: 2000.10.31/作者:阳道善email: yangHuazhongCNC.com/#include plc.h /PLC系统头文件void init()/初始化PLCvoid plc1(void) /PLC程序入口1plc1_time=16;void plc2(void); /PLC程序入口2plc2_time=32;如果您安装了MSDOS6.22及Borland C+3.1软件,在铣床数控系统的PLC目录下,输入如下命令:C:hcnc2000plcmakeplc plc_null系统会响应: 1 file(s) copiedMAKE Version 3.6 Copyright (c) 1992 Borland InternationalAvailable memory 64299008 bytes bcc +plc.CFG -S plc.cldBorland C+ Version 3.1 Copyright (c) 1992 Borland Internationalplc.cld: Available memory 4199568 TASM /MX /O plc.ASM,plc.OBJTurbo Assembler Version 3.1 Copyright (c) 1988, 1992 Borland InternationalAssembling file: plc.ASMError messages: NoneWarning messages: NonePasses: 1Remaining memory: 421k tlink /t/v/m/c/Lc:BC31LIB MAKE0000.$Turbo Link Version 5.1 Copyright (c) 1992 Borland InternationalWarning: Debug info switch ignored for COM files 1 file(s) copied并且又回到DOS提示符下:C:hcnc2000plc这时表示我们的第一个PLC程序编译成功。编译结果为文件plc_。然后,我们可以更改我们的铣床软件系统配置文件NCBIOS.CFG,并加上如下一行文本让系统启动时加载我们新近编写的PLC程序:device=c:hcnc2000plcplc_以上就是在华中数控系统平台上编写并编译C语言PLC程序的全过程,非常简单。下面,让我们多做一点工作。假设我们在用户按下操作面板的“循环起动”键时,点亮“+X点动”灯。(让我们再一次假定“循环起动”键的输入点为X0.0,“+X点动”灯的输出点位置为Y0.7。)更改plc_null.cld文件的plc1()函数如下:void plc1(void) /PLC程序入口1plc1_time=16;if ( X0 & 0x01 )Y0 |= 0x80;elseY0 &= 0x80;重新输入命令makeplc plc_null,并将编译所得的文件plc_放入NCBIOS.CFG所指定的位置,重新起动铣床数控系统后,当我们按下“循环起动”键时,“+X点动”灯应该被点亮。更复杂的PLC程序,可参考您所在数控系统PLC目录下的*.CLD文件,其中应该有一个是您数控系统的PLC源程序(前提是您已定购数控系统的PLC源程序)。四、铣床内置式PLC的F、G、B寄存器的约定操作及接口函数说明前面已讲过,PLC的G及F寄存器是数控系统与PLC约定好的,用户不可随便更改其寄存器各位(bit)的含义。为方便用户编程及记忆,系统提供如下宏及函数供用户使用。(建议用户仔细阅读最后一节提供的系统函数C程序实现源代码,学会如何使用系统提供的宏及函数。)1. 对于各寄存器的访问,系统提供如下变量供用户灵活使用/以下外部变量声明都指向同一块内存,即PLC中间寄存器R,共有768个字节extern unsigned charR_uc;/以无符号字符型存取R寄存器extern charR_c;/以字符型存取R寄存器extern unsignedR_ui;/以无符号整型存取R寄存器extern intR_i;/以整型存取R寄存器extern unsigned longR_ul;/以无符号长整型存取R寄存器extern longR_l;/以长整型存取R寄存器extern unsigned charR;/以无符号字符型存取R寄存器/同理,和R寄存器一样,系统提供如下变量定义供用户灵活使用,其中:/ _uc表示以无符号字符型存取PLC寄存器/ _c代表以字符型存取PLC寄存器_ui代表以无符号整型存取PLC寄存器/_i代表以整型存取PLC寄存器_ul代表以无符号长整型存取PLC寄存器/_l代表以长整型存取PLC寄存器extern unsigned charX_uc, Y_uc, *F_uc, *G_uc, P_uc, B_uc;extern charX_c, Y_c, *F_c, *G_c, P_c, B_c;extern unsignedX_ui, Y_ui, *F_ui, *G_ui, P_ui, B_ui;extern intX_i, Y_i, *F_i, *G_i, P_i, B_i;extern unsigned longX_ul, Y_ul, *F_ul, *G_ul, P_ul, B_ul;extern longX_l, Y_l, *F_l, *G_l, P_l, B_l;extern unsigned charX, Y;extern unsigned*F, *G, P, B; 2. 对于F寄存器(请注意F、G均为地址指针),系统提供如下宏定义,供用户使用:2.1 轴状态字#defineaxis_stat(x)(F_ui(x)*10)/轴状态字,共16位(bit)其中宏参数x表示轴号,其值可为0,1,2,15,即系统最大可有16个轴。其中各位的含义定义如下:#defineAX_SLSP0x0001/轴正极限到#defineAX_SLSN0x0002/轴负极限到#defineAX_HOME_LAMP0x0004/轴正在回零#defineAX_CMP_LAMP0x0008/轴正在进行间隙或螺距补偿#defineAX_HOME_FIN0x0010/回零结束#defineAX_FSTOP_LAMP0x0020/轴已精确定位停止#defineAX_HOME_GOING0x0040/轴正在回零#defineAX_MOVING_LAMP0x0080/轴正在移动#defineAX_UNLINK_LAMP0x0100/轴非连接状态指示#defineAX_FAIL_LAMP0x0200/失败指示灯#defineAX_ALARM0x0400/警报#defineAX_COORD_SETUP0x0800/轴已回零,坐标系已建立#defineAX_SV_ENBL0x1000/轴伺服使能允许#defineAX_READY0x2000/轴就绪#defineAX_ONLINE0x4000/轴联机#defineAX_EXIST0x8000/轴存在例:unsigned int u1=*axis_stat(i);/轴状态if (u1&AX_EXIST) =0) / 轴不存在2.2 轴移动的指令位置,单位:内部脉冲当量#defineaxis_pout(x)(F_l(x)*10+1)/轴的输出位置其中宏参数x表示轴号,其值可为0,1,2,15,即系统最大可有16个轴。例,取某轴当前位置的函数可用C语言表述如下:long get_axis_pos(int axis)long l;asm clil=*axis_pout(axis)+(*axis_pic_a(axis);asm stireturn l;2.3 轴当前的实际位置,单位:内部脉冲当量#defineaxis_pact(x)(F_l(x)*10+3)/轴的实际位置其中宏参数x表示轴号,其值可为0,1,2,15,即系统最大可有16个轴。2.4 轴当前移动速度,单位:脉冲当量/插补周期#defineaxis_speed(x)(F_i(x)*10+5)/轴移动速度其中宏参数x表示轴号,其值可为0,1,2,15,即系统最大可有16个轴。2.5 轴的负载电流,只对华中11型伺服有效,请参见HCNC2000常见问题解答#defineaxis_current(x)(F_i(x)*10+6)/轴的负载电流其中宏参数x表示轴号,其值可为0,1,2,15,即系统最大可有16个轴。2.6 轴的最大速度,可在参数中设置#defineaxis_vmax(x)(F_i(x)*10+7)/轴的最大速度其中宏参数x表示轴号,其值可为0,1,2,15,即系统最大可有16个轴。例,设置某一个轴步进的函数可用C语言表达如下:void set_axis_step(int axis,long displacement) long l,l1,v,v1; if(displacement=0) return; asm cli l=*axis_pic_a(axis)+displacement; l1=abs(l); v=l1/200*(*sys_iip_time(); v1=*axis_vmax(axis); if(vv1) v=v1; if(vv1) v=v1; if(v0) if(ll1) l=l1; else if(-ll1) l=-l; *axis_pic_a(axis)=l; asm sti se
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 急性阑尾炎患者术后护理
- 濮阳石油化工职业技术学院《影像核医学》2023-2024学年第二学期期末试卷
- 新疆工业职业技术学院《酶制剂与酿酒工艺学》2023-2024学年第二学期期末试卷
- 上海济光职业技术学院《城市绿地系统规划》2023-2024学年第二学期期末试卷
- 山东省荣成市第三十五中学2024-2025学年初三第二次调研测试英语试题理试题含答案
- 泉州幼儿师范高等专科学校《形势与政策1》2023-2024学年第二学期期末试卷
- 四川希望汽车职业学院《数据库及应用》2023-2024学年第二学期期末试卷
- 扬州市职业大学《危重症医学》2023-2024学年第二学期期末试卷
- 江西新能源科技职业学院《中国文学史(1)》2023-2024学年第二学期期末试卷
- 长春建筑学院《生物化学与分子生物学(含遗传学)》2023-2024学年第二学期期末试卷
- 质控工具在护理管理中的应用
- 一年级不等式填数练习题
- 2025年粮油保管员职业技能资格知识考试题(附答案)
- 皮肤病靶向治疗专家共识(2025版)解读课件
- DB37-T 3274.3-2023 日光温室建造技术规范 第3部分:山东VI型
- NDA模板:2024年英文商业保密协议标准格式一
- 新苏教版一年级数学下册综合实践活动1《抓抓数数》教案
- 路基路面工程课件:路基路面工程概述
- RoHS知识培训课件
- 医学课件痛风性关节炎
- 洁净手术室规范
评论
0/150
提交评论