急问trio技术支持前辈!!!有关P297DR105的问题 点击:723 | 回复:7



天津

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 59回
  • 年度积分:0
  • 历史总积分:122
  • 注册:2007年8月01日
发表于:2007-09-04 11:26:00
楼主
前辈您好!!我对P297DRvbase = 20105这个程序的理解就是循环执行这个程序,也就是每次循环的是从restart开始的。然后依次输出vbase = 20-vbase = 35(当然这个参数可以改)但是我想多数出几组数据,我就在restart后加了如下几句:
[color=#0000FF]VR(500)=-1[/color]restart:
RESET
[color=#FF0000]VR(500)=VR(500)+1
IF VR(500)>2 THEN
VR(500)=0
ENDIF[/color]

node = 3 '    Profibus node address
debug = TRUE 'Set TRUE to get debug messages printed to terminal
db=0 '        Daughter Board slot number
vbase = 50+16*VR(500) '  VRs for data transfer
localtimeout = 5000 'time in msec
后面略。。

主要是带颜色的这几行,本来的期望是一个周期VR(500)加一,让后面的vbase=vbase+16*num1
但是vr(500)并不随着程序顺次增加,但是我要是在goto restart的语句前加上断点来执行,就可以实现顺次加一.急切前辈的帮助啊!!!



天津

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 59回
  • 年度积分:0
  • 历史总积分:122
  • 注册:2007年8月01日
发表于:2007-09-04 15:48:00
1楼
1)Define buffers for Dout/Din:中的“Dout/Din”是什么意思啊?
2)PROFIBUS(db,1,33,80)中的“33”是一个字节还是一个字或是双字啊?
3)程序中的注释:Set_Slave_Address buffer:是什么意思
4)程序中的注释:Define Check_Config buffer:是什么意思
5)IF debug THEN PRINT怎么解释啊?
6)intregl=[color=#FF0000]PROFIBUS(db,0,0)[/color]读出来的这个值是什么意思?
麻烦前辈啦!!

天津

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 59回
  • 年度积分:0
  • 历史总积分:122
  • 注册:2007年8月01日
发表于:2007-09-05 11:14:00
2楼

以下是我看P297DR105不太明白的地方,的多为注释:
1)Get_Config buffer
2)PROFIBUS(db,1,cd_ptr,95)' number of input words:163
PROFIBUS(db,1,cd_ptr+1,111)' number of output words:16
首先是163会不会是16啊?还有就是能不能通过修改它改变输入输出的数量呢?要可以怎么改啊?
3)send the first input (input to master) buffer:
4)' Fetch the first diagnosis buffer, initialize service bytes:
5)set wd_baud_ctrl_val
6)New GC Command:
7)EN_CHG_CFG_BUFFER
8)Set EOI in DP_Din_Buffer_State_Machine:
急盼前辈啊!!!多谢啦!!

Trio技术支持

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 150回
  • 年度积分:0
  • 历史总积分:201
  • 注册:2004年7月28日
发表于:2007-09-06 09:29:00
3楼
这个程序是Trio Profibus子板的驱动程序,是不能随便改动的,只有node和Vbase这两个参数可以改动,分别用来定义profibus从站的地址和通讯用的数据映射的VR起始地址,数据区分为发送和接收两个区域,每个区域固定占16个VR数据,每个VR数据都为一个word型数据,用来与Profibus主站进行交换,这个过程是隐含在系统内部处理,不用关心。如果你对profibus底层原理完全了解,也许可以改动一下这个驱动程序,否则就设置好node和Vbase参数后,上电让它运行就可以了,通讯的读写数据直接在Vbase定义好的vr中就可以找到。

天津

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 59回
  • 年度积分:0
  • 历史总积分:122
  • 注册:2007年8月01日
发表于:2007-09-06 10:39:00
4楼
是啊,但是我的老师让我把输入和输出的个数扩大,比如可以同时读或写26或更多的字,不知道这样可行么?

Trio技术支持

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 150回
  • 年度积分:0
  • 历史总积分:201
  • 注册:2004年7月28日
发表于:2007-09-06 12:53:00
5楼
这样不可以!profibus子板通讯用的VR变量个数是固定的,无法改变。

天津

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 59回
  • 年度积分:0
  • 历史总积分:122
  • 注册:2007年8月01日
发表于:2007-09-06 14:22:00
6楼
嗯,多谢前辈,我其实改了里面的一些部分,就是sint值,用局域变量观察的确是写了16个以后的vr的值,但是没有输出到profibus,我当时一位要改程序中的其他参数,但是始终没有眉目啊!

wute2343ckw

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:1
  • 注册:2010年1月13日
发表于:2012-11-30 10:16:17
7楼

  P297 请问在这个程序中如何修改bandrate,呀?默认的1.5M,距离长了很不适用.


热门招聘
相关主题

官方公众号

智造工程师