分享

数控采集:华中数控设备连接测试成功

 新用户26922hFh 2022-01-20

  搭建好了项目之后我们就可以开始根据项目需求通过hncsdk来实现我们需要的功能,当然第一步我们要做的就是要连接上【华中数控】设备,查阅开发文档的时候我们可以找到【华中数控】提供了相应的网络初始化和连接接口函数。根据文档我们可以知道连接设备之前我们需要通过HNC_NetInit先初始化网络,然后方可使用函数HNC_NetInit来连接设备。

  数控采集004:华中数控设备连接测试成功

  这里我们可以发现一个问题,HNC_NetInit初始化连接的IP是上位机本地IP,而HNC_NetInit连接时使用的是下位机IP。这里有个上位机和下位机的概念,这个怎么理解呢?

  数控采集004:华中数控设备连接测试成功

  上位机和下位机

  为了了解这个概念我去现场看了下【华中数控】设备,系统运行在Windows XP环境下,通过软体HMI来控制【华中数控】实现与设备的通信交互。HMI 数控系统是一个上下位机结构,HMI 是基于 QT 在 Windows 下开发的应用程序,它由 HNC_API、NCKWrapper、UI 三部分组成,HNC_API 提供从下位机获取机床数据的接口,NCKWrapper 为 UI 提供获取数据的接口,UI 部分为 HMI 的显示界面。用户可以通过HMI 数控系统就可以采集并设置下位机数据,从而实现对下位机的控制。所以这里的上位机指可以直接发出操控命令的计算机,下位机则是适用于【华中数控】的HNC-848D数控系统。

  数控采集004:华中数控设备连接测试成功

  HNC-848C数控系统

  除了HNC-848D数控系统我这还有华中数控HNC-848C的8型高档数控系统,具有一次装夹完成铣、钻、镗、铰、攻丝多工艺复杂曲面零件加工能力。由于HNC-848D数控系统暂时还没有完成网络的铺设,这里我们还是用HNC-848C数控系统来进行连接测试。HNC-848C数控系统没有搭载在Windows 上运行,所以这里的上位机就是我们的工控机(雾小脑)或者PC机。

  数控采集004:华中数控设备连接测试成功

  启动适配器

  这个可以在工控机上运行也可以在本机运行,适配器程序放在adapter文件夹下,首次运行适配器时会自动获取本地IP及端口号(默认10001)进行初始化并生成毕业证默认配置文件ServerConfig.xml,以便下次启动可直接读取并初始化。ServerConfig.xml配置文件可以设置适配器使用CPU核心数、设置订阅寄存器、变量、宏变量起始索引及个数(默认全部订阅),如果适配器初始化失败则需手动修改ServerConfig.xml配置文件IP并保存重启动适配器。

  数控采集004:华中数控设备连接测试成功

  设备链接测试

  ws2_32.lib是Windows Sockets应用程序的接口,用于支持Internet和网络的应用程序。华中数控的上、下位机是指令交互通过Socket通信来实现的,所以最好引入ws2_32.lib文件以防链接失败。这里需要注意的是适配器的端口号,适配器默认的端口号是10001。如果你用10001链接的话会出现TSocket::write_partial() send() errno=10053对象池为空的错误,这时候我们将端口改成9090即可。

  数控采集004:华中数控设备连接测试成功

  测试结果

  为了方便去现场测试这里我还是用我们经典的VC++6.0来测试,新建一个控制台程序并引入hncsdk_V1.31.00提供的头文件和链接库。为了测试成功我们来获取下系统最大刀具数目,通过调用函数HNC_ToolGetMaxToolNum()即可获取到。我们打印了网络初始化和链接的结果都是0,通过文档我们可以知道表示成功,说明我们已经成功的访问到【华中数控】设备了!

  数控采集004:华中数控设备连接测试成功

  总结:

  这里适配器不需要去修改配置文件ServerConfig.xml中的端口,否则你会发现将端口改成9090程序会无法运行。IP需配置为本机IP,否则会网络初始化失败!以上内容是小编给大家分享的【数控采集004:华中数控设备连接测试成功】,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。更多数据采集实战技巧可以参考以下专栏:

  为了方便学习,下面附上本文用到的源码:

  #include "stdafx.h"

  #include "hncapi.h"

  #pragma comment (lib, "Ws2_32.lib")

  int main(int argc, char* argv[])

  {

  HncApi *handle=new HncApi;

  //此处输入的IP为上位机本地IP

  Bit32 ret_init=handle->HNC_NetInit("127.0.0.1", 9090, "FANZ_HZSK");

  printf("ret_init=%d

  ", ret_init);

  //此处输入的IP为要连接的下位机IP

  Bit32 ret_connect=handle->HNC_NetConnect("10.143.212.71", 10001);

  printf("ret_connect=%d

  ", ret_connect);

  //获取系统最大刀具数目

  Bit32 Num_ret=handle->HNC_ToolGetMaxToolNum();

  printf("Num_ret=%d

  ", Num_ret);

  return 0;

  }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多