金南瓜SECS/GEM SDK开发

广州金南瓜科技

1. 简介

该手册介绍SECS/GEM Demo代码阅读和测试,SECS/GEM代码的入口、控制、操作、回调响应等

2. C++ EquipViewApp

以下介绍代码阅读和使用

软件目录清单

2.1 SECS/GEM初始化

SECS/GEM函数代码:

BOOL CEquipViewAppDlg::OnInitDialog()

{

CMyDialogEx::OnInitDialog();

// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动

//  执行此操作

SetIcon(m_hIcon, TRUE);                            // 设置大图标

SetIcon(m_hIcon, FALSE);                  // 设置小图标

SetName();

ShowWindow(SW_SHOWNOACTIVATE);

SetNewCreateType(false);              // 设置参数:本类非new方式创建的

// 初始化连接 SECS

InitConnect();

InitChildArea();

AddView();

InitTree();

// 初始化子窗口

InitCtrl();

InitChildView();

return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE

}

讲解:

1. SECS/GEM代码的入口在窗口类CEquipViewAppDlg的OnInitDialog()函数中

2. 首先初始化SECS类的通讯: InitConnect();

2.1 SECS/GEM创建通讯对象

try

{

m_pSecs = new CSecsEquip();

}

catch (...)

{

m_pSecs = nullptr;

}

2.2 初始化SECS DLL模块

RcResult rc = m_pSecs->Start();

2.3 设置各项SECS/GEM的参数

rc = m_pSecs->SetIP(g_appdata.m_pAddress);

rc = m_pSecs->SetPort(g_appdata.m_nPort);

rc = m_pSecs->SetPassive(g_appdata.m_bPassive);

rc = m_pSecs->SetDeviceID(g_appdata.m_nDeviceID);

rc = m_pSecs->SetMDLN(g_appdata.m_pInterfaceName);

rc = m_pSecs->SetEnableLog(g_appdata.m_bEnableLog);

rc = m_pSecs->SetT1(g_appdata.m_nTimeout[0]);

rc = m_pSecs->SetT2(g_appdata.m_nTimeout[1]);

rc = m_pSecs->SetT3(g_appdata.m_nTimeout[2]);

rc = m_pSecs->SetT4(g_appdata.m_nTimeout[3]);

rc = m_pSecs->SetT5(g_appdata.m_nTimeout[4]);

rc = m_pSecs->SetT6(g_appdata.m_nTimeout[5]);

rc = m_pSecs->SetT7(g_appdata.m_nTimeout[6]);

// SECS/GEM设置回调

m_pSecs->SetClientData(this);

m_pSecs->m_pTerminalCallback = ::OnTerminalProc;

m_pSecs->m_pStateChangeCallback = ::OnStateChangeProc;

m_pSecs->m_pRemoteCallback = ::OnRemoteProc;

// 示例的回调

m_pSecs->m_pConstantsChangeCallback = ::OnConstantChangeProc;

m_pSecs->m_pVarValueProc = ::OnVarValueProc;

m_pSecs->m_pConstantValueProc = ::OnVarValueProc;

m_pSecs->m_pPPNameListProc = ::OnPPNameListProc;

m_pSecs->m_pPPEventProc = ::OnSecsPPEventProc;

rc = m_pSecs->SetControlMode((CONTROL_MODE)g_appdata.m_nControlMode);

2.4 开始SECS/GEM的通讯

rc = m_pSecs->CommEnable();

2.2 Communication、Control状态获取改变

代码:

注册回调函数

m_pSecs->m_pStateChangeCallback = ::OnStateChangeProc;

处理代码

void OnStateChangeProc(CSecsEquip* pSH, const char* varname, int nState)

{

CEquipViewAppDlg* pHV = (CEquipViewAppDlg* )pSH->GetClientData();

if(pHV != nullptr)

{

string pType = varname;

if(pType == "comm_state")

{

pHV->PostMsgToView("Connect", ON_COMM_CHANGE, eCommStateChange, nState);

pHV->PostMsgToView("Event", ON_COMM_CHANGE, eCommStateChange, nState);

pHV->PostMsgToView("Variable", ON_COMM_CHANGE, eCommStateChange, nState);

pHV->SendMessage(ON_COMM_CHANGE, eCommStateChange, nState);

}

else if(pType == "control_state")

{

pHV->PostMsgToView("Connect", ON_CONTROL_CHANGE, eControlStateChange, nState);

pHV->SendMessage(ON_CONTROL_CHANGE, eControlStateChange, nState);

}

}

}

讲解:

1. 何时调用:

当SECS/GEM的通讯状态、控制状态发生改变的时候,SDK将会调用该函数通知最新状态。

2. 关联行:

初始化的时候,把该函数添加到回调中。

m_pSecs->m_pStateChangeCallback = ::OnStateChangeProc;

3. PostMsgToView的作用

上边函数收到状态信息后,将该数据通知到各个窗口里面。

4. 所需工作

显示到主界面中,显示实时的SECS/GEM状态在设备软件上

2.3 远程控制接收

代码:

注册回调函数

m_pSecs->m_pRemoteCallback = ::OnRemoteProc;

处理代码

LRESULT CAutoSimpleView::OnRemoteProc(WPARAM wp, LPARAM lp)

{

REMOTE_DATA rd = *((REMOTE_DATA*)lp);

if(rd.pRCMD == "PP-SELECT")

{

const char* pRecipeName = rd.GetValue("RecipeName");

if (pRecipeName == nullptr)

{

// 找不到recipe名称参数

return ::eCOMMAND_PARAMETER_IS_INVALID;

}

// 调用切换recipe函数

// ChangeRecipe(pRecipeName)

// 发送切换完成事件

// 发送事件函数一般放在ChangeRecipe里面

m_pSecs->EventPos(ChangeRecipeStartedSimple);

SleepEx();

string pName = "Recipe:";

pName += pRecipeName;

m_staticRecipe.SetWindowText(pName.c_str());

m_pSecs->EventPos(ChangeRecipeCompleteSimple);

//处理成功

return eCOMMAND_PERFORMED;

}

return eCOMMAND_PERFORMED;

}

讲解:

1. 何时调用:

当SECS/GEM收到远程命令时候,SDK将会调用该函数通知设备处理。

2. 关联行:

初始化的时候,把该函数添加到回调中。

m_pSecs->m_pRemoteCallback = ::OnRemoteProc;

3. PostMsgToView的作用

上边函数收到状态信息后,将该数据通知到各个窗口里面。

4. SECS/GEM所需工作

根据处理远程指令,设备做出对应的处理。

2.4 变量更新

代码:

2.5 警报发送

1. 找到下边的界面,双击界面的Set或Clear按钮,进入代码

2. 警报发生的时候,只需将“警报ID”和“true状态”发送。

3. 警报清除后,只需将“警报ID”和“false状态”发送。

2.6 事件发送

1. 找到下边的界面,双击界面的“发送事件”按钮,进入代码

2. 事件发生的时候,只需发送对应的事件ID

3. C#版本 Equip C#

3.1 初始化

函数代码:

// SECS

void InitSecs(string IP, long nPort, bool bPassive, int nDeviceID)

{

RcResult rc = m_pSecs.start(/*"127.0.0.1"*/);

if (rc.rc != 0)

{

MessageBox.Show("连接SECS错误:" + rc.ToString());

}

m_pSecs.SetIP(IP);

m_pSecs.SetPort((int)nPort);

m_pSecs.SetPassive(bPassive);

m_pSecs.SetDeviceID(nDeviceID);

m_pSecs.LoadDataByCsvFile();

m_pSecs.SetRecipeDirectory("D://");

m_pSecs.SetEnableLog(true);

m_pSecs.SetControlMode(CONTROL_MODE.eCONTROL_MODE_OFFLINE);

m_pSecs.SetWinrarPath("C:/Program Files/WinRAR/WinRAR.exe");

// 回调、委托

m_pSecs.m_pOnCommState = OnCommStateEventHandler;

m_pSecs.m_pOnControlState = OnControlStateEventHandler;

m_pSecs.m_pOnRemoteCommand = OnRemoteCommandEventHandler;

m_pSecs.m_pVarValueCallback = OnVariableValueHandler;

m_pSecs.m_pOnTerminal = OnTerminalEventHandler;

m_pSecs.m_pPPChangeNotifyProc = OnPPChangeNotifyEvent;

// m_pSecs.m_pOnClock 该函数已经内置设置

}

讲解:

代码在SecsAppView.cs中,该类是窗口对象

3.2 Communication、Control状态获取改变

注册委托函数:

m_pSecs.m_pOnCommState = OnCommStateEventHandler;

m_pSecs.m_pOnControlState = OnControlStateEventHandler;

代码:

将状态显示到界面上

// 状态

[Description("控制状态改变")]

void OnCommStateEventHandler(object sender, CommStateEventArgs e)

{

BeginInvoke(m_commState, sender, e);

}

void OnCommStateEventShow(object sender, CommStateEventArgs e)

{

labelCommState.Text = CSecsAssist.GetCommunicationText(e.nState);

}

[Description("通讯状态改变")]

void OnControlStateEventHandler(object sender, ControlStateEventArgs e)

{

BeginInvoke(m_controlState, sender, e);

}

void OnControlStateEventShow(object sender, ControlStateEventArgs e)

{

labelControlState.Text = CSecsAssist.GetControlText(e.nState);

}

SECS/GEM编程相关推荐

  1. PLC SECS/GEM解决方案,设计与应用

    1 适用性 金南瓜SECS是最适应于全自动智能设备的选择. 适用行业:半导体.光伏.PCB等 全面支持E5.E30.E37.E40.E87.E90.E94.E116 PLC SECS/GEM具有怪兽级 ...

  2. SECS/GEM通信协议学习之报文

    SECS/GEM通信协议学习笔记之报文格式 转载自他山之石 一.HSMS报文格式 HSMS 报文消息长度用一个 4 字节无符号整数表示,它表示消息头部和消息文本的总字节数,在传输过程中,高字节在前,低 ...

  3. EAP通讯基础之SECS/GEM/GEM300mm

    EAP系统用于控制半导体设备进行自动化生产.与MES系统整合,校验产品信息,自动做账,同时收集产品生产过程中的制程数据和设备参数数据,帮助提高半导体工厂的生产效率,避免人工操作失误,提高产品良率. 而 ...

  4. 半导体通讯标准EAP、SECS/GEM视频介绍

    GEM(或SECS / GEM)是由半导体设备材料倡议制定的一组连接标准.这些标准用于定义自动化设备与主机工厂网络之间的通信,从而实现智能工厂制造. SECS是半导体设备通信标准的首字母缩写.GEM是 ...

  5. SECS/GEM/GEM300/EAP 讲解(三)半导体协议

    来自secs/gem网站 www.secsgem.cn 第一章 介绍 第二章 GEM 收集事件 第三章 数据轮询 第四章 GEM 工厂应用支持 第五章 报警 第六章 配方管理 第七章 文档 第八章 设 ...

  6. SECS/GEM EAP 设备自动化功能原理和设计方案

    半导体EAP(Equipment Automation Programming)实现了对生产线上机台的实时监控,是工厂自动化不可缺少的控制系统.EAP系统与FAB中的机台紧密相关,系统的设计与开发必须 ...

  7. SECS/GEM之SECS Driver开发源代码

    1 简介 1. Secs Driver 由金南瓜科技提供,适用于半导体.光伏.面板.PCB等行业 支持C.C++.C#等编程语言(C#对应C#DLL库) 2. SECS Driver集成E5,E37的 ...

  8. SECS/GEM使用

    1. 介绍 金南瓜SECS是最适应于全自动智能设备的选择. DMS SECS具有怪兽级的强劲性能,全面升级的高适应性,易用友好的SECS工具,利于快速开发部署. 金南瓜SECS兼容运行在独自工控机,或 ...

  9. SECS/GEM 半导体设备通讯标准学习笔记

    1. SECS/GEM简介 SEMI:Semiconductor Equipment and Materials International 国际半导体设备与材料产业协会 SECS:Semicondu ...

  10. HSMS/SECS/GEM/GEM300半导体通讯协议介绍

    HSMS/SECS/GEM/GEM300半导体通讯协议解决方案介绍 目录 SECS/GEM协议通讯 1 目录 2 1.介绍 3 1.1 产品概述 3 1.1.1 高扩展性 4 1.2 通讯实现 4 1 ...

最新文章

  1. 1000+ 常用 Python 库一览
  2. 安装nvidia-docker2
  3. 计算两个日期相差的小时差
  4. HTTP通信协议的组成
  5. WM_Paint 消息疑问解析
  6. python生成配置文件config_Python configparser模块封装及构造配置文件
  7. linux18.04循环登陆,ubuntu18.04 循环登陆
  8. 正则翻译工具_PythonBasics 中文系列教程 · 翻译完成
  9. 【ubuntu安装交叉编译器】安装交叉编译器
  10. Hue中Sqoop导数报错Could not load db driver class: com.mysql.jdbc.Driver
  11. Palindrome Number之Java实现
  12. 十二款硬盘数据恢复软件,百分之九十五的人没听过!
  13. java word 添加图片_java – 在word文档中插入图片
  14. python 汉字转拼音拼音转汉字
  15. 原生JavaScript实现jQuery中的fadeIn和fadeOut淡入/出效果
  16. android ipad 传视频播放器,三种将本地视频导入到iPad中的方法
  17. SVN(subversion )服务端和客户端的下载安装使用
  18. 深度探索C++对象模型笔记
  19. 堪比 007 电影!通过一张照片找到拍照者的精确位置
  20. 如何读一个JavaWeb项目源代码

热门文章

  1. 智慧城市——智慧社区解决方案
  2. 软件工程 选课系统的uml类图_选课系统的UML建模
  3. ffmpeg 博客-雷霄骅
  4. es服务器的cpu压力过大的调试
  5. PCA+SVM进行人脸识别(ORL人脸数据集分类)
  6. oracle imp导入dmp文件流程
  7. 【题解】「NOIP2016」蚯蚓
  8. 计算机声音管理器不见了,电脑Realtek高清晰音频管理器不见了怎么办
  9. redis配置文件下载
  10. apereo cas开发_CAS 之 Apereo CAS 简介(一)