兵部尚书
级别: 探索解密
精华主题: 0
发帖数量: 9 个
工控威望: 104 点
下载积分: 645 分
在线时间: 8(小时)
注册时间: 2017-02-18
最后登录: 2017-06-12
查看兵部尚书的 主题 / 回贴
楼主  发表于: 2017-04-13 14:22
         最近在学习三菱伺服定位系统,发现要学的东西好多。今天上午被QD75定位模块M代码的使用给搞得晕头转向的。后来静下心来,对照参数表捋了一下。有了自己的理解方式,下面分享给大家,也加深下自己的理解。欢迎大家积极讨论,并指正错误与不完善的地方。
         对于各个轴,可以最多有600个定位数据,编写在参数Da.1----Da.10中,每个参数对应一个固定的缓冲寄存器。以轴一为例,一号定位数据所专有的,固定的缓冲寄存器地址为:2000----2009。Da.1(运行形式)Da.2(控制系统)Da.3(加速时间编号)Da.4(减速时间编号)Da.5(要插补的轴)对应2000;Da.10(M代码条件数)据对应2001;Da.9(停顿时间)对应2002;2003未使用;Da.8(命令速度)对应2004和2005;Da.6(定位地址)对应2006和2007;Da.7(弧地址)对应2008和2009。每个参数的内容都可由软件设置,或程序直接写入,不多阐述。可以以此类推,轴一的二号定位数据,编写在2010----2019;轴一的三号定位数据编写在2020----2029。那么往下推下去轴一的第600条定位数据,对应的缓冲寄存器地址就为7990----7999。轴一所有数据都全了,轴二接着轴一的地址,从8000开始一直到13999,轴三接着轴二,14000----19999,轴四接着轴三,20000----25999。
         Da.10对应的就是我们要的M代码条件数据。我们可以算出,一个轴有600条定位数据,那么就对应有600个M代码(M代码的数字可以在0-65535之间随便设置),四个轴就要2400个M代码。你写在哪条定位数据对应的寄存器里,就是哪条定位数据的代码。当定位指令执行时,对应的M代码变ON(通过模式选择可设为with模式或after模式。with模式是指令执行开始时M代码ON,after模式是指令执行结束后M代码ON)。当需要M代码OFF时,把1写入到Cd.7(M代码OFF请求)参数对应的缓冲寄存器中(1504,1604,1704,1804)即可将M代码置OFF。OFF之后,系统会自动将Cd.7写0,以表示M代码OFF请求完成。
         一条定位数据执行开始或执行完成,他对应的M代码就置ON,那么就不能进行下一步操作。必须要将M代码置OFF,才会接着往下执行。可以达到良好的顺序控制的效果。必须要说明的一点是:如果Da.1运行形式设置为独立定位控制和连续定位控制,那么M代码ON的时候,不会执行下一个定位数据,直到OFF为止。如果Da.1运行形式设置为连续路径控制,那么M代码即使是ON的时候,还是会执行下一个定位程序,但是会发出警告(警告代码503)。
         暂时就能想到这么多,希望大家积极讨论,多多指正。
本帖最近评分记录:
  • 下载积分:+1(御坂美琴) 热心助人!
  • 下载积分:+1(l83438797)
  • 下载积分:+1(imarius) 真诚感谢!
  • 下载积分:+1(snails)
    麦田的蒲公英
    级别: 正式会员
    精华主题: 0
    发帖数量: 4 个
    工控威望: 96 点
    下载积分: 667 分
    在线时间: 3(小时)
    注册时间: 2017-03-30
    最后登录: 2018-08-29
    查看麦田的蒲公英的 主题 / 回贴
    1楼  发表于: 2017-04-13 19:10
    还是看不不明白啊,楼主能不能再浅显一些呢,今天也在看这个,而且网上的M代码的内容比较少
    wengine
    级别: 家园常客
    精华主题: 0
    发帖数量: 60 个
    工控威望: 633 点
    下载积分: 955 分
    在线时间: 84(小时)
    注册时间: 2015-03-02
    最后登录: 2024-04-28
    查看wengine的 主题 / 回贴
    2楼  发表于: 2017-04-13 22:58
    兵部尚书
    级别: 探索解密
    精华主题: 0
    发帖数量: 9 个
    工控威望: 104 点
    下载积分: 645 分
    在线时间: 8(小时)
    注册时间: 2017-02-18
    最后登录: 2017-06-12
    查看兵部尚书的 主题 / 回贴
    3楼  发表于: 2017-04-18 11:10
         M代码好多人都比做是中间继电器,我觉得这个比方很恰当。就是说,QD75为每个轴提供了600个定位数据的存储区,我们根据需要,将定位数据写入任意的你想要的定位数据编号中,1号定位数据对应一系列的寄存器地址让你写那些定位参数,2号寄存器对应一系列寄存器地址让你写那些定位参数,3号,4号。。。。。。到600号都是一样的。这些定位数据之间互不干涉影响,你根据需要,通过向Cd3中写定位数据的编号,可以指定启动哪一条。那么这么多的定位数据谁在启动,谁启动完成了,我们如何知晓那?我想保证某条定位数据启动的过程中或启动完成后,没我的命令不得执行其他的定位数据又如何做到那?这时候就要我们的M代码了。每条定位数据都可以设置一个M代码(在该条定位数据专有的缓冲寄存器中),为了不同定位数据间的区别,M代码可以设为1-65535之间的数字。通过软元件X4-X7可以知晓哪个轴有M代码on了(意思就是这个轴某条定位指令开始定位或定位完成了,这取决于with模式还是after模式),或者通过监视数据Md25对应的缓冲寄存器的地址中的数据知道具体是哪一条定位数据动作(轴一808 轴二908 轴三1008 轴四1108)。例如你轴一的1号定位数据的M代码设为了100.那么你监控的808中的数值变为100时,就代表轴一的1号定位数据启动或执行完成了(取决于with或after模式,通过参数Pr18可以设置,0为with模式,1为after模式)。这样懂了吗?
    引用
    引用第1楼麦田的蒲公英于2017-04-13 19:10发表的  :
    还是看不不明白啊,楼主能不能再浅显一些呢,今天也在看这个,而且网上的M代码的内容比较少

    zxh9699
    级别: 正式会员
    精华主题: 0
    发帖数量: 3 个
    工控威望: 97 点
    下载积分: 673 分
    在线时间: 8(小时)
    注册时间: 2017-03-10
    最后登录: 2019-10-22
    查看zxh9699的 主题 / 回贴
    4楼  发表于: 2017-05-18 11:14
    不得不感谢楼主,及二楼wengine,总算弄明白了这个M代码了!
    zengtie1991
    级别: 探索解密
    精华主题: 0
    发帖数量: 19 个
    工控威望: 169 点
    下载积分: 1436 分
    在线时间: 57(小时)
    注册时间: 2013-05-30
    最后登录: 2018-09-24
    查看zengtie1991的 主题 / 回贴
    5楼  发表于: 2017-05-29 14:50
    3楼说的非常正确,详细
    erhaoshutong
    级别: 探索解密
    精华主题: 0
    发帖数量: 44 个
    工控威望: 137 点
    下载积分: 994 分
    在线时间: 2(小时)
    注册时间: 2017-11-18
    最后登录: 2018-08-14
    查看erhaoshutong的 主题 / 回贴
    6楼  发表于: 2017-11-23 21:47
    三楼说的真是太好了,看楼主的有点清楚了,看了三楼的彻底明白了
    vios1161
    级别: 略有小成
    精华主题: 0
    发帖数量: 190 个
    工控威望: 308 点
    下载积分: 695 分
    在线时间: 210(小时)
    注册时间: 2016-07-30
    最后登录: 2024-04-11
    查看vios1161的 主题 / 回贴
    7楼  发表于: 2017-11-25 07:03
    感謝分享~有範例比較容易理解