trio技术的几个疑问 点击:980 | 回复:6



马运

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 13回
  • 年度积分:0
  • 历史总积分:30
  • 注册:2007年7月04日
发表于:2007-07-09 00:54:00
楼主
   想问下,trio能否完成这些功能?如果能完成的话,请给出代码!
   谢谢!
   1、在控制中,如果和时间相关,这时要如何处理?
      程序要求举例: 
     program1:(程序1)
       while(true)
         base(1)
         units=1000
         accel=30
         speed=100         
         lastime=SystemCurrentTime ' 在这里想需要获取系统时间
                                   ' trio提供这样的函数么?函数名是什么?
       wend
         
    2、trio在加速运动过程,如何获取当前速度?
          base(1)
    units=1000
    accel=30
    speed=100
    while(true)
       if(current_speed=80) then
            dosomething '如果当前速度为80,则控制其它轴做一个运动
                        '问题: current_speed 可以获取么?如何获取?
       endif
    wend



Trio技术支持

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 150回
  • 年度积分:0
  • 历史总积分:201
  • 注册:2004年7月28日
发表于:2007-07-09 08:46:00
1楼
1. 在Trio控制器中,目前只有MC224具有时钟功能,通过DATE和TIME指令可以获得或更改当前控制器的日期。如果你只是希望做定时功能的话,每一款Trio控制器为每个任务内都分配了一个系统参数ticks,这个参数的意义为每隔一个伺服周期(默认为1ms),系统内核软件自动将其减1,而且这个ticks可以随时由用户程序赋值,例如以下程序的意思为每隔1秒钟在终端0处打印“1 second timer!”:
ticks=0
While true
   if ticks<=-1000 then
      print "1 second timer!"
      ticks=0
   endif   
wend

2. MSPEED 就是你所希望得到的当前轴的速度参数。通过查询该参数可以获得任意时刻轴的当前速度。注意:MSPEED参数为每个伺服周期都进行一次更新的参数,它的意思为每个伺服周期内轴的反馈位置增加值,其单位与SPEED单位相同,如果电机轴转的不是足够快时,你有时访问该值会发现它会为0(因为1个伺服周期内(1ms),系统没有采集到该轴位置的变化),为避免程序误判,建议根据你的实际需要,对mspeed参数进行平均数处理,以下给出两个例程,希望对你有所帮助:
例一:
‘ Rolling average function to smooth out the fluctuations in MSPEED
‘ Each msec, this function adds the latest MSPEED value to the total
‘ of n-1 values. The smoothed value is then (total / n)

n = 500
VR(20) = MSPEED * n ‘ insert starting value
VR(21) = VR(20) / n ‘ starting value for average
WHILE TRUE
VR(20) = VR(20) – VR(21) ‘ reduce total to n-1 values
VR(20) = VR(20) + MSPEED ‘ add latest measured speed
VR(21) = VR(20) / 500 ‘ calculate the latest average
WA(1) ‘ one millisecond wait
WEND
‘ VR(21) contains the average mspeed value to be used for display

例二:
‘ measured speed calculated from 2 readings of position over a
‘ specified time period

p = 500
VR(21) = 0 ‘ initialise the speed to zero
WHILE TRUE
TICKS = p
VR(20) = MPOS
WAIT UNTIL TICKS<=0
VR(21) = (MPOS – VR(20)) * 1000 / p ‘ calculate change per second
WEND

马运

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 13回
  • 年度积分:0
  • 历史总积分:30
  • 注册:2007年7月04日
发表于:2007-07-09 09:06:00
2楼
  谢谢!Trio技术支持

马运

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 13回
  • 年度积分:0
  • 历史总积分:30
  • 注册:2007年7月04日
发表于:2007-07-09 09:09:00
3楼
  请教下,trio对于多轴控制的方案!
  现在多轴控制,比较流行的是PLC的解决方案.利用多个PLC单元分别控制各个轴,然后通过网络协议,轴间数据共享!
  问下trio对于多轴同步控制可采用的是下面那种方案?(3轴控制)
  1、
     for axisnum=1 to 3
          检测当前轴
          如果发现误差,则调整
     next for 
  2、
     program1(程序1)针对轴1
          检测当前轴
          如果发现误差,则调整
      program2(程序2)针对轴2
           检测当前轴
          如果发现误差,则调整
      program3(程序3)针对轴2
           检测当前轴
           如果发现误差,则调整
     三个程序(program1,program2,program3)使用VR全局变量传递信息
   问下:
     方案1和方案2哪个更可行?我从本地technical support那里得到的,他们建议使用第一个方案?
     但是,在这里我考虑 采用for循环的方式,如果第一轴出现偏差,进行处理;这时轴2色标到了,会不会出现漏抓色标的问题!

   

   另外能不能给一个抓标使用markb的例子?
   非常感谢!

何玉庆

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 221回
  • 年度积分:0
  • 历史总积分:383
  • 注册:2005年6月16日
发表于:2009-03-24 11:17:45
4楼

没有下文了。想学习。

山寨机

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 4回
  • 年度积分:0
  • 历史总积分:20
  • 注册:2009年4月07日
发表于:2011-08-01 15:34:34
5楼

205x 有两个模拟量的输入,接入了电压信号,但不知道怎么来读取这个值,望指点一下!!

能量控制

  • 精华:0帖
  • 求助:0帖
  • 帖子:12帖 | 537回
  • 年度积分:0
  • 历史总积分:1576
  • 注册:2003年9月17日
发表于:2011-08-01 22:27:07
6楼

AIN(0)和AIN(1)

直接读取


热门招聘
相关主题

官方公众号

智造工程师