Overview
本文介绍如何使用三菱提供的开发套件,与三菱机床M70进行通信
开发套件下载地址:官方地址(需要注册账号)
如图,目前官方更新到了A7版本(需要购买序列号):
com开发基础
参考:https://www.cnblogs.com/dayw/category/512428.html
ProgID在注册表的 计算机\HKEY_CLASSES_ROOT
目录下
CLSID在ProgID下记录,如图:
环境配置
开发套件安装位置:C:\Program Files (x86)\EZSocket
库文件:
项目创建
使用Visual Studio 2022创建一个C++项目
将官方提供的头文件复制到项目的目录下,然后添加到头文件中如图
注意要使用32位来编译,官方库是32位的,使用64位编译会找不到api
可以参考官方手册的编程步骤和API说明编程:
示例代码
三菱m70的通信端口为683
#include <iostream>
#include <climits>
#include "EZSocketCommonErr.h"
#include "EZSocketNc.h"
#include "EZSocketNcDef.h"
#include "EZSocketNcErr.h"
#include "EZSocketNcStr.h"
const LPCOLESTR CNC_IP = L"192.168.XXX.XXX";
const LONG CNC_port = 683;
int main()
{
LONG Iret;
IUnknown* m_pezUnknown = NULL;
IEZNcCommunication3* m_pezComm = NULL;
IEZNcPosition* m_pezPos = NULL;
IEZNcProgram2* m_pezProgram = NULL;
IEZNcFile6* m_pezFile = NULL;
IEZNcOperation* m_pezOperation = NULL;
IEZNcRunStatus* m_pezRunStatus = NULL;
IEZNcAxisMonitor* m_pezAxisMonitor = NULL;
IEZNcTime* m_pezTime = NULL;
IEZNcCommand2* m_pezCommand2 = NULL;
IEZNcDevice* m_pezDevice = NULL;
IEZNcParameter3* m_pezParameter3 = NULL;
enum { AXIS_X = 1, AXIS_Y, AXIS_Z, AXIS_C };
DOUBLE m70_MachinePos[4];
for (int i = 0; i < 4; i++) {
m70_MachinePos[i] = 100.0;
}
CLSID clsid;
if (Iret = CoInitialize(NULL) != S_OK) {
std::cout << "实例化com失败!";
return -1;
}
Iret = CLSIDFromProgID(L"EZSocketNc.EZNcCommunication", &clsid);
if (Iret != S_OK) {
std::cout << "CLSIDFromProgID失败!";
return -1;
}
Iret = CoCreateInstance(clsid,
NULL,
CLSCTX_INPROC_SERVER,
IID_IEZNcCommunication3,
(void**)&m_pezComm);
if (Iret != S_OK) {
std::cout << std::hex;
std::cout << Iret;
std::cout << "CoCreateInstance失败!";
return -1;
}
Iret = m_pezComm->QueryInterface(IID_IEZNcPosition, (void**)&m_pezPos);
m_pezComm->SetTCPIPProtocol(CNC_IP, CNC_port, &Iret);
m_pezComm->Open2(EZNC_SYS_MELDAS700M, 1, 100, &Iret);
m_pezPos->GetMachinePosition(AXIS_X, &m70_MachinePos[0], 0, &Iret);
m_pezPos->GetMachinePosition(AXIS_Y, &m70_MachinePos[1], 0, &Iret);
m_pezPos->GetMachinePosition(AXIS_Z, &m70_MachinePos[2], 0, &Iret);
for (int i = 0; i < 3; i++) {
std::cout << m70_MachinePos[i] << std::endl;
}
//std::cout << "Hello World!\n";
m_pezComm->Close(&Iret);
}
标签:include,三菱,Iret,采集,m70,数控,NULL,pezPos,AXIS
From: https://www.cnblogs.com/snail1502/p/18062463