77范文网 - 专业文章范例文档资料分享平台

Trio范例(2)

来源:网络收集 时间:2019-03-28 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

SERVO = OFF NEXT i BASE(0) 'Disable all axis WDOG=OFF RETURN

init_vars: Return init_serial:

setcom(38400,8,1,2,1,4) Return 范例九: 问:

程序结构的问题

建立了两个程序,名称分别为: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倒是在执行了。 为什么?

是我程序有问题,还是仿真器的问题? 因为我发现这个仿真器不完善,而且我又是自学TRIO这个东西,没有实际的硬件模拟, 很头疼。 哎,为什么这个仿真器就不能完善点呢, 不然象我们这种初学者都不知道到底是程序问题还是仿真器的问题,郁闷

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

[tr] [td=3,1] [tr] [td] 谢谢 Trio技术支持,按你的说法,改成如下即可. RUN \loop:

IF IN(0) THEN STOP \GOTO loop

主要是用习惯了PLC的编程习惯,所以一时绕不过弯来,呵. 其实我想做的是: 模仿PLC编程思维, 建立一个主程序MAIN,在这里面循环执行对外部信号的监控,比如急停信号IN(0),启动信号IN(1)... ... 我开始写的程序的意思就是想在没有急停时运行任务,而有急停时则停止该任务, 但是当急停取消后,它又会执行的. [tr] [td=1,1,160]

Trio技术支持: [/td] [td=2,1,587]播客 博客 引用 加为好友 发送留言 20

07-5-23 11:28:00 [tr] [td=3,1] [tr] [td] 给你个例子程序: ' 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 SERVO = OFF NEXT i BASE(0) 'Disable all axis WDOG=OFF RETURN

init_vars: Return init_serial:

setcom(38400,8,1,2,1,4) Return 再续

[tr] [td=3,1] [tr] [td] 再来一个问题: 在一个进程(任务)中,想要实现对上位机(触摸屏)上一个按扭的上升沿动作, 比如触摸屏内设置两个按扭分别为A和B,那么要求按下A(即使是不松开),那么轴0前进10个用户单位, 然后只有松开A再按下(即有一个上升沿动作)才会再前进10个用户单位. 即相当于“点动”功能了。 当然还得要求对这个进程是实时监控的,就是无论什么时候A有一个上升沿,那么前进10, B有一个上升沿,那么后退10... 这中间还可以随时响应其他的命令。 有什么好的办法吗? [tr] [td=1,1,160]

Trio技术支持: [/td] [td=2,1,587]播客 博客 引用 加为好友 发送留言 20

07-5-24 17:13:00 [tr] [td=3,1]

[tr] [td] It's very easy to do, just like this: base(0) while true

If in(a)=1 and a_flag=0 then if mtype=idle then move(10) endif a_flag=1 endif

if in(a)=0 then a_flag=0 If in(b)=1 and b_flag=0 then if mtype=idle then move(-10) endif b_flag=1 endif

if in(b)=0 then b_flag=0

wend 范例十: 逻辑判断例子

在一个进程(任务)中,想要实现对上位机(触摸屏)上一个按扭的上升沿动作, 比如触摸屏内设置两个按扭分别为A和B,那么要求按下A(即使是不松开),那么轴0前进10个用户单位, 然后只有松开A再按下(即有一个上升沿动作)才会再前进10个用户单位. 即相当于“点动”功能了。 当然还得要求对这个进程是实时监控的,就是无论什么时候A有一个上升沿,那么前进10, B有一个上升沿,那么后退10... 这中间还可以随时响应其他的命令。 有什么好的办法吗? base(0) while true

If in(a)=1 and a_flag=0 then if mtype=idle then move(10) endif a_flag=1 endif

if in(a)=0 then a_flag=0 If in(b)=1 and b_flag=0 then if mtype=idle then move(-10) endif b_flag=1 endif

if in(b)=0 then b_flag=0 wend

范例十一: 问:

回原点,为什么回原点信号就停了呢?请TRIO师傅帮忙一下了 [tr] [td] loop:

IF IN(1)=1 AND g_run_flag=0 AND g_zero_flag=0 THEN g_zero_flag=1 ENDIF

IF g_zero_flag=1 AND IN(1)=1 THEN BASE(0) P_GAIN=0.32 I_GAIN=0.008 VFF_GAIN=1 UNITS=1 SERVO=1 FE_LIMIT=100 SPEED=2000

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库Trio范例(2)在线全文阅读。

Trio范例(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/554323.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: