西门子FETCH/WRITE service

西门子FETCH/WRITE service


slave=0 adr=192.168.1.99 type=S7_1200 fetch_write=0 function=1 rack_slot=0

在pvbrowser里设置与PLC连接的时候有一项fetch_write,下面具体看一下这一项

rlSiemensTcp源码

 446   if((plc_type == S5 || plc_type == S7_300 || plc_type == S7_400) && fetch_write == 1)
  447   {
  448     length = sizeof(ih) + sizeof(fh);
  449     ih.version  = 3;
  450     ih.reserved = 0;
  451     ih.length_high = length / 256;
  452     ih.length_low  = length & 0x0ff;
  453     fh.ident[0]        = 'S';
  454     fh.ident[1]        = '5';
  455     fh.header_len      = 16;
  456     fh.ident_op_code   = 1;
  457     fh.op_code_len     = 3;
  458     fh.op_code         = 5;
  459     fh.ident_org_block = 3;
  460     fh.len_org_block   = 8;
  461     fh.org_block       = (unsigned char) org;
  462     fh.dbnr            = (unsigned char) dbnr;
  463     fh.start_adr[0]    = (unsigned char) start_adr / 256;
  464     fh.start_adr[1]    = (unsigned char) start_adr & 0x0ff;;
  465     fh.len[0]          = (unsigned char) len / 256;
  466     fh.len[1]          = (unsigned char) len & 0x0ff;;
  467     fh.spare1          = 0x0ff;
  468     fh.spare1_len      = 2;
  469     unsigned char total_buf[sizeof(ih)+sizeof(fh)];
  470     memcpy(total_buf,             &ih, sizeof(ih));
  471     memcpy(total_buf+sizeof(ih),  &fh, sizeof(fh));
  472     ret = rlSocket::write(total_buf,   sizeof(ih)+sizeof(fh));
  473     rlDebugPrintf("fetch write ih ret=%d\n",ret);
  474     if(ret < 0) return ret;  
  475     /*
  476     ret = rlSocket::write(&i
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值