fengbingyuan
合作共赢
级别: 略有小成
精华主题: 0
发帖数量: 219 个
工控威望: 269 点
下载积分: 857 分
在线时间: 430(小时)
注册时间: 2008-04-03
最后登录: 2024-10-21
查看fengbingyuan的 主题 / 回贴
楼主  发表于: 2010-07-28 21:18
[attachment=43416] [attachment=43417]
如图所示,在一个工件上有8个螺丝要打,圆圈位置是要打螺丝的位置,由一台步进电机带着螺杆控制打螺丝的机构左右移动至各个打螺丝的位置进行打螺丝。
    要求:打螺丝的顺序可以在触摸屏任意设定,如在触摸屏上设定顺序为23146758,即表示打螺丝顺序为:2#螺丝——3#螺丝——1#螺丝——4#螺丝——6#螺丝——7#螺丝——5#螺丝——8#螺丝;如果设定顺序为86134275,即表示打螺丝顺序为:8#螺丝——6#螺丝——1#螺丝——3#螺丝——4#螺丝——2#螺丝——7#螺丝——5#螺丝。

要实现以上功能,我想在触摸屏上放8个数据区D100,D101,D102,D103,D104,D105,D106,D107。分别用来存放这8个位置的螺丝号,PLC按这个指定的顺序去控制打螺丝。
但是这个打螺丝的顺序可以在触摸屏任意设定,这样组合有很多啊,不可能一个一个在程序里写出来吧,如何编程实现这个任意指定顺序的打螺丝的控制?
    望大家能指点一下这个编程的思路或方法,谢谢!!
[ 此帖被fengbingyuan在2010-07-28 21:44重新编辑 ]
xqx666
深圳中级电工
级别: 家园常客
精华主题: 0
发帖数量: 553 个
工控威望: 664 点
下载积分: 1988 分
在线时间: 280(小时)
注册时间: 2009-04-29
最后登录: 2023-07-13
查看xqx666的 主题 / 回贴
1楼  发表于: 2010-07-29 21:39
看了半天都没人肯上程序,楼主,不好意思,小弟来晚了,请看程序
给我加点分吧
附件: 打螺丝程序.rar (11 K) 下载次数:64
网站提示: 请不要用迅雷下载附件,容易出错
本帖最近评分记录:
  • 下载积分:+1(fengbingyuan) 热心助人
  • 电工废话太多,直接上程序才是硬道理。诚交深圳及全国工控低手。
    xqx666
    深圳中级电工
    级别: 家园常客
    精华主题: 0
    发帖数量: 553 个
    工控威望: 664 点
    下载积分: 1988 分
    在线时间: 280(小时)
    注册时间: 2009-04-29
    最后登录: 2023-07-13
    查看xqx666的 主题 / 回贴
    2楼  发表于: 2010-07-29 21:42
    其实你说的要在HMI上设定任意位置来实现程序,那个所谓的传说中的“冒泡程序”我还真写不出来,所以刚刚看了以上版主所说的思路,马上试了一下,这程序还算是比较简单。有空多多交流
    电工废话太多,直接上程序才是硬道理。诚交深圳及全国工控低手。
    xqx666
    深圳中级电工
    级别: 家园常客
    精华主题: 0
    发帖数量: 553 个
    工控威望: 664 点
    下载积分: 1988 分
    在线时间: 280(小时)
    注册时间: 2009-04-29
    最后登录: 2023-07-13
    查看xqx666的 主题 / 回贴
    3楼  发表于: 2010-07-30 09:14
    引用
    引用第15楼fengbingyuan于2010-07-29 22:21发表的  :

    很感谢朋友的热心帮助,但是,你的程序好象还不能实现我要的这个功能,因为PLSY K2000 DXXX Y0中的DXXX脉冲数量应该是根据前后两个位置的会不断变化的.不过很感谢你的指点!

    再向你讲解一下这个程序,例如:你的位置1=0,(步进电机的原点要装在此处)所以D8140=0
                                           2=100,
                                            3=200,4=300,5=400,6=500,7=600,8=700,意思是说你的每个打螺丝的位置是等距,当然可以不是等距,
    当你在想在HMI上面设定位置流程比如是8,5,4,7,6,1,2,3这几个位置时,对应输入的数据为700,400,300,600,500,0,100,200,
    当M101接通时,            首先D1取绝对值,D8> D8140,所以Y2接通步进电机前进到D1=700的位置,
    这步完成后M102ON,       首先D2取绝对值,D5< D8       ,所以Y2断电步进电机后退到D2=300
    这步完成后M103ON,       首先D3取绝对值,D4< D5       ,所以Y2断电步进电机后退到D3=100
    这步完成后M104ON,       首先D4取绝对值,D7> D4       ,所以Y2接通步进电机前进到D4=300
    这步完成后M105ON,       首先D5取绝对值,D6< D7      ,所以Y2断电步进电机后退到D5=100
    这步完成后M106ON,       首先D6取绝对值,D1< D6      ,所以Y2断电步进电机前进到D6=500
    这步完成后M107ON,       首先D7取绝对值,D2< D1     ,所以Y2断电步进电机前进到D7=100
    这步完成后M106ON,       首先D8取绝对值,D3< D2     ,所以Y2断电步进电机前进到D8=100
    以上位置完成后步进电机ZRN K2000 K200 X3 Y0回原点,D8140清零。
    程序刚刚帮你改过了,取绝对值行走的话不会有问题。
    附件: 取绝对值打螺丝.rar (11 K) 下载次数:54
    网站提示: 请不要用迅雷下载附件,容易出错
    电工废话太多,直接上程序才是硬道理。诚交深圳及全国工控低手。
    xqx666
    深圳中级电工
    级别: 家园常客
    精华主题: 0
    发帖数量: 553 个
    工控威望: 664 点
    下载积分: 1988 分
    在线时间: 280(小时)
    注册时间: 2009-04-29
    最后登录: 2023-07-13
    查看xqx666的 主题 / 回贴
    4楼  发表于: 2010-07-30 09:19
    再向你讲解一下这个程序,例如:你的位置1=0,(步进电机的原点要装在此处)所以D8140=0
                                           2=100,
                                            3=200,4=300,5=400,6=500,7=600,8=700,意思是说你的每个打螺丝的位置是等距,当然可以不是等距,
    当你在想在HMI上面设定位置流程比如是8,5,4,7,6,1,2,3这几个位置时,对应输入的数据为700,400,300,600,500,0,100,200,
    当M101接通时,            首先D1取绝对值,D1> D8140,所以Y2接通步进电机前进到D1=700的位置,
    这步完成后M102ON,       首先D2取绝对值,D2< D1       ,所以Y2断电步进电机后退到D2=300
    这步完成后M103ON,       首先D3取绝对值,D3< D2       ,所以Y2断电步进电机后退到D3=100
    这步完成后M104ON,       首先D4取绝对值,D4> D3       ,所以Y2接通步进电机前进到D4=300
    这步完成后M105ON,       首先D5取绝对值,D5< D4      ,所以Y2断电步进电机后退到D5=100
    这步完成后M106ON,       首先D6取绝对值,D6< D5      ,所以Y2断电步进电机前进到D6=500
    这步完成后M107ON,       首先D7取绝对值,D7< D6     ,所以Y2断电步进电机前进到D7=100
    这步完成后M106ON,       首先D8取绝对值,D8< D7     ,所以Y2断电步进电机前进到D8=100
    以上位置完成后步进电机ZRN K2000 K200 X3 Y0回原点,D8140清零。
    程序刚刚帮你改过了,取绝对值行走的话不会有问题。
    本帖最近评分记录:
  • 下载积分:+1(gumeng) 优秀文章
  • 电工废话太多,直接上程序才是硬道理。诚交深圳及全国工控低手。
    xqx666
    深圳中级电工
    级别: 家园常客
    精华主题: 0
    发帖数量: 553 个
    工控威望: 664 点
    下载积分: 1988 分
    在线时间: 280(小时)
    注册时间: 2009-04-29
    最后登录: 2023-07-13
    查看xqx666的 主题 / 回贴
    5楼  发表于: 2010-07-31 20:10
    引用
    引用第20楼fengbingyuan于2010-07-31 10:24发表的  :

    打完第2个螺丝(即5号螺丝)的时候,D2=700-400=300,下一步打第3个螺丝(即4号螺丝)的时候,4号螺丝的绝对距离D3=300,执行SUB D3 D2 D3后,发脉冲PLSY K2000 D3 Y0中的D3=0啊,那怎么会跑到打4号螺丝位呢?请教……

    打完第2个螺丝(即5号螺丝)的时候,D2=700-400=300,下一步打第3个螺丝(即4号螺丝)的时候,因为第3个螺丝与第2个螺丝的相对位置等于D3-D2=400-300=100,所以执行SUB D3 D2 D3后,发脉冲PLSY K2000 D3 Y0中的D3=100,所以后退100个脉冲,记住是相对位置,只是打第一个螺丝才是绝对位置。
    本帖最近评分记录:
  • 下载积分:+2(fengbingyuan) 热心助人
  • 电工废话太多,直接上程序才是硬道理。诚交深圳及全国工控低手。
    xqx666
    深圳中级电工
    级别: 家园常客
    精华主题: 0
    发帖数量: 553 个
    工控威望: 664 点
    下载积分: 1988 分
    在线时间: 280(小时)
    注册时间: 2009-04-29
    最后登录: 2023-07-13
    查看xqx666的 主题 / 回贴
    6楼  发表于: 2010-08-01 18:35
    引用
    引用第25楼wxh0734于2010-08-01 09:25发表的  :
    绝对值相减,取出相对值,程序思路是对的,只是SUB D1 D2 D2这里可能要修改下,不要再指定D2的值了,可以另取一个比如说SUB D1 D2 D200后面的PLSY的位置值也就相对应D200,就可以了

    此程序的确有漏洞,每个SUB D? D? D?,是要另外指定其他的D,否则会重复运算。
    电工废话太多,直接上程序才是硬道理。诚交深圳及全国工控低手。