发那科机床写K地址

声明

#include “fwlib32.h” 或 “fwlib64.h”FWLIBAPI short WINAPI pmc_wrpmcrng(unsigned short FlibHndl, short length, IODBPMC *buf);

描述

写入指定 PMC 地址/范围的 PMC 数据。

此函数用于在应用程序之间交换数据 PMC上的MMC功能和LADDER软件。

FlibHndl   [ in ]

指定库控点。 有关详细信息,请参阅“库句柄”。

length [ in ]
指定数据块长度。
data_type为 0(字节类型):长度 = 8 + N
data_type为1(字型):长度 = 8 + N × 2
data_type为2(长型):长度 = 8 + N × 4
data_type为4(32位浮点型):长度 = 8 + N × 4
data_type为5(64位浮点型):长度 = 8 + N × 8
* N 是写入数据的数量。
buf [ in ]

指向 IODBPMC 结构的指针。

0:字节类型
1:单词类型
2:长型
4:32位浮点型(仅限30i-B系列/0i-F/PMi-A)
5:64位浮点型(仅限30i-B系列/0i-F/PMi-A)

type_a

指定与 PMC 地址类型对应的标识代码。

type_d

指定 PMC 数据的类型。
它必须与PMC端的数据类型相同。

datano_s

指定起始 PMC 地址编号。

datano_e

指定结束 PMC 地址编号。

请参阅“读取PMC数据(指定区域)”的“PMC数据的可参考范围” (pmc_rdpmcrng)“关于那种 PMC 地址、起始地址和结束地址。

指定参数的示例

全部写入 R0200,..,R0209(假定为字节类型)

buf.type_a         5

buf.type_d         0

buf.datano_s     200

buf.datano_e     209

length                8+1×10 (=18)

buf.u.cdata[0]    0

...  ...

buf.u.cdata[9]    9 

返回值

成功完成后返回EW_OK,否则返回除EW_OK以外的任何值。

主要错误代码如下。

返回代码含义/错误处理
EW_NOPMC
(1)
没有 PMC。
EW_LENGTH
(2)
数据块长度错误
IODBPMC 结构的大小(长度)错误。
EW_RANGE
(3)
地址范围错误 地址范围错误
PMC 地址编号 (datano_s,datano_e) 错误。
EW_ATTRIB
(4)
数据属性错误
PMC 地址类型 (type_a) 或 PMC 数据类型 (type_d) 错误。
EW_PASSWD
(17)
指定范围的数据无法写入,因为数据受到保护。
(系列 16i/18i/21i, 0i-A/B/C)

目前测试只能写5个地址
开始结束地址写0和7,也只能写值K0000到K0004,K0005到K0007值无变化 
开始结束地址写0和15,也只能写值K0000到K0004,K0005到K0007值无变化,K0008到K0015值有,但不正常

Focas1.IODBPMC0 pmcdata1 = new Focas1.IODBPMC0(); // for 1 Byte

            pmcdata1.type_a = 7; //K地址
            pmcdata1.type_d = 0; //字节类型

            //写多个K地址2
            pmcdata1.datano_s = 0; //K地址开始地址
            pmcdata1.datano_e = 15; //K地址结束地址,写K0000到K0004  
            //目前测试只能写5个地址
            //开始结束地址写0和7,也只能写值K0000到K0004,K0005到K0007值无变化 
            //开始结束地址写0和15,也只能写值K0000到K0004,K0005到K0007值无变化,K0008到K0015值有,但不正常
            ushort Length = (ushort)(8 + (pmcdata1.datano_e - pmcdata1.datano_s + 1)); 
            pmcdata1.cdata = new byte[Length];
            for (int i = 0; i < Length-8; i++)
            {
                pmcdata1.cdata[i] = Convert.ToByte(i + 1);
                //pmcdata1.cdata[i] = Convert.ToByte(i);
            }
            short ret = Focas1.pmc_wrpmcrng(Fanuc.h, Convert.ToUInt16(Length), pmcdata1);// 8+Length: K data of Length Byte

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值