华中数控培训讲义PLC编程,C语言编程,1,,PLC控制的范围,数控机床所受到的控制可分为两类:数字控制和顺序控制。数字控制主要指对各进给轴进行精确的位置控制,包括:轴移动距离、插补、补偿等。顺序控制主要指以CNC内部和机床各行程开关,传感器,按钮,继电器等的开关量信号状态为条件,并按照预先规定的逻辑顺序对诸如主轴的起停,刀具的转换,工件的夹紧松开,液压,冷却,润滑系统的运行等进行的控制。与“数字控制”比较,“顺序控制”的信息主要是开关量信号。PLC控制的范围包括全部顺序控制和简单的数字控制(如:轴点动),2,,寄存器是数控系统、PLC、机床三者之间交流的载体,是PLC控制的主要对象,也是PLC程序的最小单元。,寄存器的分类,3,,寄存器的个数,4,,PLC源代码的基本构成,初始化函数voidinit();仅上电时调用一次高速扫描函数voidplc1();每隔8ms被调用一次低速扫描函数voidplc2();每隔128ms被调用一次,5,,PLC执行程序的生成,运行环境---MSDOS6.22编译器---BorlandC++3.1BC31的路径需要加入OS的环境变量编译环境---各种信息定义文件(*.inc)PLC源文件铣---plc_21mu.cld车---plc-21.cppPLC头文件车---plc_map.h(主要包含IO点的定义),6,,PLC头文件的生成,plctab_t.dat(IO点信息文件),standplc.exe(标准PLC配置软件),,,plc_map.h,7,,寄存器的数值说明,以R寄存器为例,不同的类型有着不同的取值范围。(注:PLC不支持浮点运算),8,,定义自己的R寄存器,正确的定义方式#definespdl_ctrlR[20]//主轴控制(0停止1正转2反转)#definespdl_cmdR_i[22/2]//主轴转速#definespdl_dwellR_ui[24/2]//主轴定时器#defineLube_dwellR_ul[28/4]//润滑定时器,C语言编程中,使用带有含义的变量,往往比直接对R寄存器操作更加直观。定义自己需要的R寄存器,是编程的第一步。一般说来,类似记录开关量的状态,用char型的变量。如果需要记录类似主轴转速或用作短时间计时器的话,则用int型的变量,而记录轴的位置或用作长时间计时器,则需要用long型的变量。,错误的定义方式#definespdl_ctrlR[20/2]//主轴控制(0停止1正转2反转)#definespdl_cmdR_i[22]//主轴转速#definespdl_dwellR_ui[23/2]//主轴定时器#defineLube_dwellR_ul[26/4]//润滑定时器,9,,PLC常用指令浅析一,#definebit(x,b)((x)//点亮+Z灯elseclr_bit(Y[33],5);//熄灭+Z灯,10,,PLC常用指令浅析二,#defineaxis_ctrl(x)(G_ui[(x)*10])//轴控制#defineaxis_stat(x)(F_ui[(x)*10])//轴状态#definech_ctrl(x)(G_ui[(x)*20+162])//通道控制#definech_stat(x)(F_ui[(x)*20+162]//通道状态,不同的G和F寄存器代表不同的意义,这些已经由CNC控制软件定义定义在plc.h中,这里只针对几个常用的寄存器作一个简单的讲解。,实例一:X轴负限位的处理(假设X轴负限位X0.1,当前通道为0)if(bit(X[0],1))*axis_ctrl(0)|=AX_LSN;//通知CNC,X轴已到负限位else*axis_ctrl(0)//清除标记(注:AX_LSN的定义详见plc.h),11,,PLC常用指令浅析二,实例二:循环启动的处理(按键X31.6,灯Y31.6)if(bit(X[31],6)){*ch_ctrl(0)//熄灭循环启动灯,12,,PLC常用函数浅析一,除了宏定义,函数也是PLC必不可少的组成部分。前面我们已经介绍了PLC不可或缺的三个函数init()、plc1()和plc2(),这里我们再介绍几个常用的函数。,voidset_axis_home(intaxis,intstart_stop);voidset_axis_jog(intaxis,intspeed);voidset_axis_step(intaxis,longdisplacement);voidhandwheel(inth_no,intaxis,intstep_mul);,if(bit(X[35],3))//-Zjogset_axis_jog(2,-100);elseset_axis_jog(2,0);注:这里速度单位是脉冲/秒。若设计单位是毫米/分钟,需要先乘上(插补周期/60)。假设插补周期为4ms,那么1500毫米/分钟等同于100脉冲/秒,13,,PLC常用函数浅析一,实例:X轴回零的处理(正点动X35.4,回零挡块X1.0)#defineFinding_Axis_ZeroR[7]if(*axis_stat(0),14,,PLC常用函数浅析二,M(辅助)、S(主轴速度)、T(刀具)指令是PLC经常会用到的功能,它们可以让用户在G代码中自动控制机床的动作而不需要手工干预。M、S、T分别对应函数exec_M()、exec_S()、exec_T()。它们需要在初始化的时候就加载到扫描周期中。,voidinit(void){set_mst_func(0,M,exec_M);set_mst_func(0,T,exec_T);set_mst_func(0,S,exec_S);},15,,PLC常用函数浅析二,M代码编程实例一:吹气,假设开关Y2.3voidexec_M(intch){switch(*ch_M_code(ch)){case88://吹气开set_bit(Y[2],3);mod_M_code(ch)=-1;//M代码完成break;case89://吹气关clr_bit(Y[2],3);mod_M_code(ch)=-1;//M代码完成break;}},16,,C语言编程实例一触发器,intget_raise(intg,intb)//取上升沿{intv=0;if(bit(X[g],b)){if(bit(R[600+g],b)==0)v=1;elseset_bit(R[600+g],b);}elseclr_bit(R[600+g],b);returnv;},#definecoolantR[100]voidplc1(void){if(get_raise(30,5)){if(coolant)coolant=0;elsecoolant=1;}if(coolant)set_bit(Y[30],5);//点亮冷却灯elseclr_bit(Y[30],5);//熄灭冷却灯},17,,C语言编程实例一触发器,intget_fall(intg,intb)//取下降沿{intv=0;if(bit(X[g],b)==0){if(bit(R[600+g],b))v=1;elseclr_bit(R[600+g],b);}elseset_bit(R[600+g],b);returnv;},18,,C语言编程实例二定时器,#definetcntR_i[300/2]#defineTMR[302]voidplc1(void){TM=0;if(bit(X[1],0))//压力报警{if(tcnt<2000/8)tcnt++;elseTM=1;}elsetcnt=0;if(TM==1)报警…},当检测到压力报警,延时2S后输出报警,假设压力报警点1.0,19,,C语言编程实例三M代码,,20,,Switch语句,,21,,

展开阅读全文

c语言和plc编程,PLC编程-C语言PPT学习课件相关推荐

  1. arm汇编和c语言混合编程实验报告,实验三C语言和ARM汇编混合编程指导书.doc

    实验三C语言和ARM汇编混合编程指导书 实验三 1. 实验目的 掌握C语言和ARM汇编混合编程方法. 2. 实验设备 硬件:PC 机 一台 软件:Windows98/XP/2000 系统,ADS 1. ...

  2. 计算机编程方程求解的步骤,计算机解决问题的过程PPT学习课件

    <计算机解决问题的过程PPT学习课件>由会员分享,可在线阅读,更多相关<计算机解决问题的过程PPT学习课件(17页珍藏版)>请在人人文库网上搜索. 1.计算机解决问题的过程包括 ...

  3. Go语言和Java、python等其他语言的对比分析

    一.Go语言设计初衷 1.设计Go语言是为了解决当时Google开发遇到的问题: 大量的C++代码,同时又引入了Java和Python 成千上万的工程师 数以万计行的代码 分布式的编译系统 数百万的服 ...

  4. r语言和python-R VS Python:R语言是否真的过时了?

    ​自从CDA数据分析师开设了Level1 业务数据分析师 R专题之后,很多学生对此产生了疑惑.特别是在挖掘建模工具的选择上,甚至出现了选择恐惧症.在此,摘抄了 浩彬老撕 的文章,以及之前零零散散看的一 ...

  5. 小白学习记录篇01---C语言和C++的区别以及C语言中文件的含义(不足之处欢迎大佬补充提醒。)

    1.C语言和C++的对比 (1)创建文件的后缀名不同,如果创建C语言的文件通常以.c结尾,而C++通常以.cpp结尾. <1>这里就想要补充两个文件的概念,什么是.c文件?什么是.cpp文 ...

  6. c语言和python区别,python和c语言的区别是什么

    Python可以说是目前最火的语言之一了,人工智能的兴起让Python一夜之间变得家喻户晓,Python号称目前最最简单易学的语言,现在有不少高校开始将Python作为大一新生的入门语言.本萌新也刚开 ...

  7. go语言和python结合_Go+Python双语言混合开发-第1章 【阶段一:Go语言基础】

    1-1 Go+Python双语言混合开发-课程导学 (11:35) 1-2 课程资源获取方式 - 非常重要!!! (06:07) 1-3 课程中需要用到的开发环境介绍 (03:47) 1-4 wind ...

  8. c语言编程复制快捷键,C语言再学习 -- 常用快捷键

    下面是Ubuntu 常用快捷键--记住这些会让你更加得心应手哦! 444 桌面 ALT + F1: 聚焦到桌面左侧任务导航栏,可按上下键导航. ALT + F2: 运行命令 ALT + F4: 关闭窗 ...

  9. JS中的函数概念和C语言的概念是类似的,c语言和JavaScript的区别有哪些?

    c语言和JavaScript在语法结构上有很多相似(例如if条件语句.while循环.switch语句.do-while循环等),那么它们之间有什么不同?下面本篇文章就来给大家介绍一下c语言和Java ...

最新文章

  1. how to write Makefile
  2. 输入一行字符,判断单词数
  3. java应用高内存占用
  4. [译] 曝光!UX 行话大全
  5. 提问征集:对话VLC首席开发者Jean-Baptiste Kempf
  6. 【KPGNN】运行错误与成功后的合集
  7. 模式识别与机器学习笔记(二)机器学习的基础理论
  8. 网易考拉:已与雅诗兰黛各自撤销法院在诉案件
  9. dom4j获取指定节点值_XML解析之DOM4j以及XPATH技术
  10. mysql decimal_MySQL系列之数据类型及约束
  11. C++ 对象没有显式初始化
  12. 遗传算法c语言程序二次方程,遗传算法的c语言程序.doc
  13. 计算机信息管理系统实训摘要,计算机实训报告摘要.doc
  14. 2022主流技术 Appium+IOS 自动化测试环境搭建
  15. Qt编写/注册/使用activex控件
  16. centos7文件同步服务器,教你在 Centos7 中使用 Unison 同步文件
  17. 星际2中复刻DOTA白虎
  18. 用WeX5制作PPT
  19. js实现全屏和退出全屏功能
  20. Linux常用命令之文件搜索命令

热门文章

  1. 计算机基础知识考试题库-----复习资料
  2. 2018年中国捐赠百杰榜发布
  3. U盘怎样传输大于4G的文件?
  4. 红队内网渗透神器--CobaltStrike安装教程
  5. 一篇文章让你搞懂Java中的静态代理和动态代理
  6. 利用Docker和宝塔搭建FRP内网穿透
  7. 汽车ECU软件开发之应用层软件与底层软件
  8. PDF预览、图片预览插件
  9. 微信企业支付发送到零钱
  10. python如何爬取网页视频_快就完事了!10分钟用python爬取网站视频和图片