Trio范例

2019-03-28 22:07

Trio范例

案例一:

通过点动或手动把负载移到要示教的相应位置,通过输入信号的上升沿触发记录下当前位置.根据需要移动多次把整个示教轨迹记录下来. FOR I=0 TO 99 IF IN(0)=0 THEN WA(1)

IF IN(0)=1 THEN TABLE(I,MPOS)

TABLE(I+100,MPOS AXIS(1)) TABLE(I+200,MPOS AXIS(2)) ENDIF ENDIF NEXT I

MOVEABS(0,0,0) FOR I=0 TO 99

MA(TABLE(I),TABLE(I+100),TABLE(I+200)) NEXT I

范例二:

PROGRAM 4 子程序 新建程序,敲入以下代码: WHILE TRUE IF IN(0)=ON THEN GOSUB message ENDIF WEND STOP message:

PRINT \0 is on\RETURN

置in(0)为on,单步运行程序,结合手册,写出GOSUB指令的功能。

范例三:

回复:PROGRAM 4 子程序 新建程序,敲入以下代码: WHILE TRUE IF IN(0)=ON THEN GOSUB message ENDIF WEND STOP

message:

IF IN(1)=OFF THEN RETURN ELSE

PRINT \0 is on\ENDIF

RETURN 1):in(0)和in(1)都置为off,单步运行程序,观察结果 2):in(1)置为on,单步运行程序,观察结果

3):in(0)和in(1)都置为on 单步运行程序,观察结果

在观察结果时,打开终端0,观察终端0中的变化,还有注意观察程序运行的流程

案例四:

问:这几天要做一个中断子程序,原以为trio手册里有这方面的指令,可是找了几天也没找到有关的指令,所以恳求知道中断指令的朋友能给予帮助,能给个例子更好! 在此我先谢谢好心的朋友了!

答:以HITECH屏为例.通过MODBUS SLAVE模式设定虚拟IO信号可以扩展很多.例如IN(32)和IN(33)分别代表\运行\和\停止\ LOOP:

IF IN(32)=0 THEN WA(20)

IF IN(32)=1 THEN RUN \ENDIF ENDIF

IF IN(33)=0 THEN WA(20)

IF IN(33)=1 THEN STOP \ENDIF ENDIF GOTO LOOP

以上程序你可以通过下载HITECH的免费软件在电脑上试试.

如果是机器在运行状态你想暂停,可以用FEED HOLD INPUT(FH_IN)输入来实现,当想停时把FH_IN设成ON,当要从新从原来状态继续运行,则把FH_IN设为OFF就OK了. 范例五:

PROGRAM3 IFTHEN ELSE Conditional Tests 1) 新建程序,键入以下代码: IF IN(0)=OFF THEN PRINT \0 is off\

ENDIF

打开终端0 ,in(0)置为off,运行程序,观察结果 2)in(0)置为on,重新运行程序,观察结果。 3)更改程序如下: IF IN(0)=OFF THEN PRINT \0 is off\ELSE

PRINT \is on\ENDIF

in(0)置为off运行程序,观察结果, 4)in(0)置为on,运行程序 观察结果

范例六:

问:如何在trio上实现第三方的插补算法?

答:如果你的要求不是特别的高,那么可以用TrioBasic直接编程实现,首先明确一个概念,通常讲的差补算法主要针对伺服系统位置环的差补,其输出是对应各个轴的速度目标指令,因此在Trio控制器中可以有两种做法:(TrioBasic支持标准的数学运算,完全可以实现各种复杂的算法)

1. 简单做法:采用Trio控制器内成熟的PID算法,首先在需要差补的各个轴上都执行forward指令,然后通过实时检测mpos值得到当前轴位置,调用自己的差补算法得出下一拍对应轴的目标速度,然后通过给speed进行速度给定。

2. 复杂做法:自己实现最基本的各种算法调节,首先将对应驱动器设置为速度模式,设置Trio控制器对应轴为Servo模式,然后将该轴servo参数设置为0,此时通过mpos可以得到当前轴的位置,mspeed可以得到当前轴的瞬间速度,调用自己编写的算法得出对应目标速度然后通过对DAC参数进行电压输出,做为伺服系统的当前时刻的速度指令。 建议采用单任务模式,可以通过对Ticks参数的操作实现时间片的管理,ticks的精度默认为1ms,最快可以达到0.25ms。

如果您的差补算法比较复杂,而又有实时性及大量应用要求的话,您可以将您的差补算法用c语言编写,并配有必要的接口说明文档发给我们,我们的开发人员会进行评估,如果一切顺利后可以直接加载到控制器内核中,这样你可以象调用move,movecirc指令一样去调用自己的差补指令 范例七: 程序问题

[tr] [td] 建立了两个程序,名称分别为:MAIN、JRJ_CAMBOX。 目的是想在MAIN程序里将JRJ_CAMBOX做为任务运行。 在MAIN程序内写如下程序: loop:

IF IN(0) THEN 'e_stop RUN \ELSE

STOP \ENDIF GOTO loop

运行MAIN程序,再模拟,将IN(0)设置为ON, 结果就提示什么MAIN运行进程号14错误,然后MAIN就不执行了,但是JRJ_CAMBOX倒是在执行了。 为什么?

答:你做的main程序在不断循环执行,当in(0)被置为1时,第一次系统会正常启动“JRJ_CAMBOX”程序,

而且让“JRJ_CAMBOX”程序在第13号任务内运行。但是当main程序第二次到达if判断时,IN(0)同样条件成立,此时你的程序依然是run \而此时第13号任务已经被上次运行的程序占据,所以系统会报错,main程序退出。如果你把run \改成 run \的话,你会看到会有多个JRJ_CAMBOX被运行起来后,main程序同样会报错退出。这是因为run指令后面不指定任务号时,系统会自动将程序在最大任务号下启动,此时请注意程序和任务的区别!每个控制器都有其最多执行的任务数量,当到达这个限制值时,系统已经没有更多的任务空间来执行这个程序时,同样会报错,并将报错的程序退出。

范例八:(接范例七) 程序结构例子

Initialisation of variables

'----------------------------------------------- GOSUB init_vars

' Initialisation of serial ports

'----------------------------------------------- GOSUB init_serial

'Stops all movements and programs '----------------------------------------------- GOSUB stop_all

' Initialisation axis parameters '----------------------------------------------- RUN \

WAIT UNTIL PROC_STATUS PROC(3)=1 ' Wait until process is stopped

WAIT UNTIL PROC_STATUS PROC(3)=0 While(true)

'Wait the start signal While(in(start_0)=0) ' Check for motion error

IF MOTION_ERROR or IN(emerg_stop_1) = 0 THEN '...

GoSub e_stop ENDIF Wend

'Start the application programs wdog=On wa(100) run \run \

'------------------------------------------ 'Main loop

'------------------------------------------ runflag=1 While(runflag=1) ' Check for motion error IF MOTION_ERROR THEN '...

GoSub m_error runflag=0 ENDIF

' Check for emergency stop IF IN(emerg_stop_1) = 0 THEN '...

GoSub e_stop runflag=0 ENDIF Wend Wend m_error:

' Stop all movements GOSUB stop_all Return e_stop:

' Emergency Stop GoSub Stop_all Return stop_all:

'Stops all programs STOP \STOP \

'Stops all possible moves RAPIDSTOP WA(20)

FOR i = 0 TO 2 BASE(i) CANCEL(1) WA(1) CANCEL(1) WA(1) CANCEL WAIT IDLE

DATUM(0) 'Reset the possible following error


Trio范例.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:项目部安全主管先进事迹材料

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: