模块化从站的GSD文件中,定义了多个模块,最大模块数是9,一次只能用一个模块还是多个,这个到底是怎么回事? 点击:628 | 回复:1



梦想飞8

    
  • 精华:0帖
  • 求助:1帖
  • 帖子:1帖 | 1回
  • 年度积分:0
  • 历史总积分:5
  • 注册:2014年10月14日
发表于:2014-10-14 16:48:01
楼主

GSD文件中定义了这个几个模块:

Module="DI8 (PORT1)    " 0x42,0x00,0x00,0x01

1

EndModule


Module="DI8 (PORT2)    " 0x42,0x00,0x00,0x02

2

EndModule


Module="DO8 (PORT1 LED)" 0x82,0x00,0x00,0x03

3

EndModule


Module="DO8 (PORT2 LED)" 0x82,0x00,0x00,0x04

4

EndModule


Module="DIO32          " 0xC1,0x03,0x03,0x05

5

EndModule


Module="Counter 16bit  " 0xC1,0x01,0x01,0x06

6

程序中定义了这样的默认配置数据:

//default configuration data for startup

static const UBYTE DefCfg[36] = { 0x42,0x00,0x00,0x01,//DI8 (red dip switch)

0x42,0x00,0x00,0x02,//DI8 (blue dip switch)

                                   0x82,0x00,0x00,0x03,//DO8 (led)

                                   0xC1,0x03,0x03,0x04,//DIO32  

                                   0xC1,0x01,0x01,0x05, //Counter  16bit

                                   0x03,0x00,0x00,0xFF,//Empty-Module

                                   0x03,0x00,0x00,0xFF,//Empty-Module

                                   0x03,0x00,0x00,0xFF,//Empty-Module

                                   0x03,0x00,0x00,0xFF //Empty-Module

                               };

具体内容是什么含义我是知道的,但是一次通讯中只能用一个模块还是可以用多个模块?数据长度的计算函数中(vpc3_calculate_inp_outp_len)是所有的都算上了,模块到底应该怎么用呢?




showman

  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 127回
  • 年度积分:0
  • 历史总积分:296
  • 注册:2003年11月04日
发表于:2014-12-02 14:14:44
1楼

在程序初始化过程中,是把所有模块数据全部计算了,但如果你在组态时,从主站传过来的CFG数据如果只是其中一个模块的话,在中断处理函数中,可以重新按新的CFG数据重新计算,也就是只计算一个模块的输入输出长度


热门招聘
相关主题

官方公众号

智造工程师