求助:PLC818数据采集 点击:1245 | 回复:5



condon

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 1回
  • 年度积分:0
  • 历史总积分:10
  • 注册:2003年10月26日
发表于:2003-12-23 13:45:00
楼主
本人刚学习编程,用VC在2000下做的研华PCL818L的数据采集:   有时采的数差不多,有时又很莫名其妙,跟测试程序差得很多。   但是又分析不出程序中出了什么问题。请教高人指点一二!    Sleep(500);    float sam=0;    int i=0;    sam_current=0;    sam_volt=0;    /*为selPort端口选择*/    for(i=0; i<allnum;i++) {sam_current+=ReadPort(selPort-1); sam_volt+=2*ReadPort(selPort+7);}    /* 取平均值做为最终采样值*/    if(allnum>0) {sam_current=sam_current/allnum; sam_volt=sam_volt/allnum;}       ReadPort(int nPort)    {    BASE=0x300;    int inNum;    unsigned int low;    unsigned int high;    float inData;    Outport(BASE+2,nPort);    Outport(BASE+0,0);    do    inNum=(Inport(BASE+8)&0x80);    while(inNum==0x80);       low=Inport(BASE+0);    low=(low>>4)&0x0f;    high=Inport(BASE+1);    high=(high<<4)&0xff0;       inNum=low+high;    inData=-10+20*(float)inNum/4096;    if(inData<0) inData=-inData;       }



gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2003-12-16 17:42:00
1楼
建议连续采集时,不要用软件DO循环的方式,用硬件的定时器去定时采集。具体可参考研华的例子

交流的天空

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 93回
  • 年度积分:0
  • 历史总积分:114
  • 注册:2003年3月18日
发表于:2003-12-22 13:25:00
2楼
楼上的说得对!:) 你是在DOS下面写程序?

d_f

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 45回
  • 年度积分:0
  • 历史总积分:53
  • 注册:2003年12月09日
发表于:2003-12-23 13:45:00
3楼
2000下可以用研华提供的例程,低速可参考adsoft。

xuelaizhang

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 5回
  • 年度积分:0
  • 历史总积分:8
  • 注册:2004年3月02日
发表于:2005-01-23 21:57:00
4楼
有用过adint的吗? 我怎么总是提示timeout错误?xuelaixjtu@etang.com

五月冷风

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:1
  • 注册:2006年1月07日
发表于:2006-01-07 17:56:00
5楼

热门招聘
相关主题

官方公众号

智造工程师