CP430如何实现RS232通讯 点击:1443 | 回复:8



ke fu kunan

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 3回
  • 年度积分:0
  • 历史总积分:13
  • 注册:2004年2月08日
发表于:2004-02-17 22:17:00
楼主
我使用的是B&R AutomationSoftware环境, 想采用DVframe模块开发CP430与外界通讯。 但是一写入程序(我用的是help中的例程),CP430就死机,必须刷新操作系统才行。



salasalacn

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 74回
  • 年度积分:0
  • 历史总积分:152
  • 注册:2003年8月07日
发表于:2004-02-08 15:07:00
1楼
我猜你是在读写数据时进入死循环了. 你要在循环中加入超时跳出的语句 同时,之所以你进入死循环,看来你的通信并没有成功(没有收到你所需要的返回字节),

资深土鳖

  • 精华:2帖
  • 求助:2帖
  • 帖子:32帖 | 344回
  • 年度积分:0
  • 历史总积分:661
  • 注册:2002年5月15日
发表于:2004-02-09 08:38:00
2楼
我猜想您漏掉某些细节,特别是DEVICE项是否是真实的串口位置,例子里是:SL0.SS1.IF1,对CP430是不可能存在的.

ke fu kunan

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 3回
  • 年度积分:0
  • 历史总积分:13
  • 注册:2004年2月08日
发表于:2004-02-11 22:28:00
3楼
应该不会的,我的程序里没有循环。 为什么SL0.SS1.IF1是不存在的,应该用那个设备呢?

资深土鳖

  • 精华:2帖
  • 求助:2帖
  • 帖子:32帖 | 344回
  • 年度积分:0
  • 历史总积分:661
  • 注册:2002年5月15日
发表于:2004-02-12 08:29:00
4楼
SL0.SS1.IF1意思是CPU本地(CP INTERFACE)子槽1的第一个接口.CP430没有(CP774/474/476有)CP INTERFACE,所以不可能在CPU本地插任何模块.

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2004-02-12 09:28:00
5楼
在as里查看你所用的接口的属性,可以显示它的设备代码。

ke fu kunan

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 3回
  • 年度积分:0
  • 历史总积分:13
  • 注册:2004年2月08日
发表于:2004-02-17 22:17:00
6楼
我看了,RS232的接口是SL0.IF1. 这不对吗。有没有一个现成的很简单的例子,教我一下。

资深土鳖

  • 精华:2帖
  • 求助:2帖
  • 帖子:32帖 | 344回
  • 年度积分:0
  • 历史总积分:661
  • 注册:2002年5月15日
发表于:2004-02-18 10:57:00
7楼
关于您的程序调试,分步骤来分析: 1.检查您的变量声明,看是否有类型错; 2.检查SL0.IF1口打开是否成功; 一个典型调查的例子: (*初始化部分*) config.idle = 1 config.delimc = 0 config.delim[0] = $55 config.delim[1] = $00 config.rx_len = 256 config.rx_cnt = 8 config.tx_len = 256 config.tx_cnt = 8 config.argc = 1 config.argv = adr(argliste) argliste[0] = 15 argliste[1] = adr(rx_event) FRM_xopen_xx.enable = 1 FRM_xopen_xx.device = "SL0.SS1" FRM_xopen_xx.mode = "RS232,57600,E,8,1" FRM_xopen_xx.config = adr(config) FRM_xopen_xx FUB FRM_xopen() if(FRM_xopen_xx.status = 0) then FRM_write_xx.ident = FRM_xopen_xx.ident FRM_read_xx.enable = 1 FRM_read_xx.ident = FRM_xopen_xx.ident FRM_rbuf_xx.enable = 1 FRM_rbuf_xx.ident = FRM_xopen_xx.ident endif memcpy(adr(wData[0]), "PCC 2320", sizeof(wData)) (*循环部分*) if(rx_event > 0) then rx_event = rx_event - 1 FRM_read_xx FUB FRM_read() if(FRM_read_xx.status = 0) then memcpy(adr(rData), FRM_read_xx.buffer, FRM_read_xx.buflng) FRM_rbuf_xx.buffer = FRM_read_xx.buffer FRM_rbuf_xx.buflng = FRM_read_xx.buflng FRM_rbuf_xx FUB FRM_rbuf() FRM_write_xx.enable = 1 if(wData[7] > $39) then wData[7] = $30 else if(wData[7] < $30) then wData[7] = $39 endif endif endif ;Write port directly: FRM_write_xx.buffer = adr(wData) FRM_write_xx.buflng = sizeof(wData) FRM_write_xx FUB FRM_write() if(FRM_write_xx.status = 0)then FRM_write_xx.enable = 0 endif ;变量声明: argliste:UDINT[2] confis:XOPENCONFIG rData:USINT[256] rx_event:USINT wData:USINT[8]

shaohs1989

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 4回
  • 年度积分:0
  • 历史总积分:7
  • 注册:2013年6月27日
发表于:2013-07-06 17:32:08
8楼

我这有一款MCGS的触摸屏只有串口R232,以及贝加莱X20CP1483,想把它们通过串口232通信,该如何使用DVframe库啊,库里的例程直接就可以用嘛?需要修改吗??您那里有例子吗?可以给我发一份吗,很是感谢!shaohs1989@163.com


热门招聘
相关主题

官方公众号

智造工程师