secs/gem协议系统通讯平台
第一章 产品简介
1. 产品介绍
金南瓜SECS/GEM是最适应于全自动智能设备的选择。 DMS SECS/GEM具有怪兽级的强劲性能,全面升级的高适应性,易用友好的SECS工具,利于快速开发部署。
金南瓜SECS/GEM兼容运行在独自工控机,或与设备软件集成在一台工控机,让用户灵活应对各种使用场景。
2. 软件清单与展示
全部软件目录清单
2.1软件清单
1 SECS/GEM用户
提供EquipViewApp.exe和HostViewApp.exe俩款demo软件,分别对应的场景是设备端和主机端模拟。
移植所需文件
红色框内为所需文件
2. PLC SECS/GEM用户
提供EquipViewApp.exe、 PlcSecsControlView.exe和HostViewApp.exe软件,分别对应的场景是设备端、PLC连接器和主机EAP端模拟。
3. GEM300用户
额外提供EquipViewApp300.exe和HostViewApp300.exe测试软件,分别对应的GEM300设备端和主机端模拟。
2.2 模拟软件展示
1. 设备端模拟软件EquipViewApp
4. SECS/GEM300模拟软件EquipViewApp300
5. 其他软件
- 后台服务进程JNG_Server.exe
2.3 其他文件介绍
- SecsConfig 文件夹中主要的文件
- licenses.ini 为运行许可,可选用加密狗或licenses.ini方式授权
- 配置文件:
- Alarm.csv 为警报信息表(ALID)
- EC.csv 为设备常量表(ECID)
- Event.csv 为设备常量表(CEID)
- SV.csv 为用户软件的设备常量表(SVID/VID)
- PlcSecsData文件夹为PLC的配置档,保存客户与PLC通讯的各类数据。
3. 开发环境
1. 编程语言
主流语言 C、C++、C#、Labview
2 运行环境
Windows XP SP3
windows 7
windows 10
3 开发工具
LabVIEW、VC6.0、QT、Visual Studio 2008及以上
4 硬件环境
硬件:
PC工控机
接口:
RJ45或者光纤以太网网口 1个
第二章 软件使用
4. 软件获取
4.1 获取金南瓜SECS SDK
用户可以在我们的网站上下载开发包文件。
http://www.secsgem.cn
下载地址http://download.semisecs.com
4.2 获取运行许可
1. 如果为加密狗方式,将加密狗插入USB接口即可
2. 运行文件许可方式
- 运行licenseClient获取PC的序列号GUID
- 将获取到的GUID发送给厂商
- 将金南瓜给予的license替换/JngServer/SecsConfig/license.ini文件夹里面原来的许可。
4.3 软件使用
1. 参考 “Demo使用介绍书(日期).pdf”操作使用书
第三章 开发指导
5 软件交互流程
5.1 初始化SECS/GEM SDK模块
5.2 SECS/GEM SDK与设备之间交互
2. 设备发生事件时,调用EventPos API通知SDK
3. 设备发生Alarm时,调用Alarm Set API通知SDK
4. 服务器发送远程命令给设备,SDK通过远程命令回调函数通知设备
6 数据配置
SECS/GEM在../JngServer/SecsConfig/当中
secs code |
JNG 类型代码 |
Meaning & Examples |
00 |
L |
List类型 |
10 |
B |
binary - unsigned 8 bit data: 二进制类型 "0x00" "0x01 0x02 0x03" |
11 |
TF |
boolean data: 布尔类型 TF 1 非零代表true TF 0 零代表false |
20 |
A |
Character string data: ASCII字符串类型 “A {hello world}” “A hello” |
30 |
I8 |
8-byte signed integer |
31 |
I1 |
1-byte signed integer |
32 |
I2 |
2-byte signed integer |
34 |
I4 |
4-byte integer signed |
40 |
F4 |
8-byte floating point |
44 |
F8 |
4-byte floating point |
50 |
U8 |
8-byte unsigned integer |
51 |
U1 |
1-byte unsigned integer |
52 |
U2 |
2-byte unsigned integer |
54 |
U4 |
4-byte unsigned integer |
6.1 变量添加
- ID建议
- TYPE类型:L、A、TF、B、U1、U2、U4、I1、I2、I4、F4、F8
- CLASS一般为SV
- Int value 一般为空
- Units为单位
- callback为通过回调方式访问最新值
6.2 事件添加
6.3 警报添加
7 C/C++二次开发
7.1 编译器配置改动:
8.1.2 SECS/GEM 编译器 C++ Builder 6 配置
1. 启用“SecsPortExport.h”的宏定义 #define __CPP_BUILDER__
2. 删除“Group.cpp”、“SecsBase.cpp”和“SecsEquip.cpp”第一行的 #include "stdafx.h"
3. SECS/GEM 用C++ Builder 6 的implib.exe将SecsPort.lib转换成C++ Builder 6所能支持的格式
7.2 初始化SDK
在使用SECS通讯之前需要调用Start函数进行初始化dll模块。
void Start(string pServerAddr, int nPort);
RcResult rc = m_pSecs->Start();
7.3 初始化参数
初始化SECS/GEM通讯的各项参数,例如IP、端口号、device ID等。
RcResult SetPassive(bool bPassive);
RcResult SetMDLN(string pMDLN);
RcResult SetDeviceID(int nDeviceID);SetT1();
RcResult LoadDataByCsvFile(string pDir = "");
SecsRemoteProc* m_pRemoteCallback; // 远程控制回调
void SetClientData(void* pClientData);
RcResult SetControlMode(CONTROL_MODE state);
RcResult rc = m_pSecs->Start();
MessageBox(rc.ToString().c_str(), "JNG_Server.exe没有初始化");
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]);
m_pSecs->m_pTerminalCallback = ::OnTerminalProc;
m_pSecs->m_pStateChangeCallback = ::OnStateChangeProc;
m_pSecs->m_pRemoteCallback = ::OnRemoteProc;
rc = m_pSecs->LoadDataByCsvFile();
rc = m_pSecs->SetControlMode((CONTROL_MODE)g_appdata.m_nControlMode);
7.4 建立通讯
7.5 变量设置
7.6 事件发送
7.7 警报设置/清除
8 C# SECS/GEM 二次开发
工程师需要将SecsBase和SecsEquip俩个C#项目重新编译
2. 编译生成DLL文件,将DLL文件添加到设备软件项目当中
8.1 初始化SDK
public CSecsEquip m_pSecs = new CSecsEquip();
void Start(string pServerAddr, int nPort);
8.2 初始化参数
8.3 建立通讯
8.4 变量设置
8.5 事件发送
8.6 警报设置/清除
第四章 常见问题与解决
9 问题与场景
9.1 笔记本控制设备
4. 将笔记本的SECS Host端配置为主动模式,IP地址为192.168.1.1,启用通讯就能通讯上。
1. 如果使用笔记本跟设备电脑连接,如果任一电脑加公司域。该情况有可能无法连接。
9.2 防火墙导致无法通讯
10 错误代码
错误代码 |
描述 |
1001 |
没有发现处理对象 |
1002 |
数据错误 |
1003 |
DLL加载失败 |
1010 |
没有连接到对方 |
1011 |
读取文件失败 |
1012 |
读取文件失败 |
1013 |
打开文件失败 |
1014 |
删除文件失败 |
1015 |
目录或路径为空 |
1020 |
消息答复数据错误 |
2001 |
大括号中的列表元素,后边跟非空格 |
2002 |
引号中的列表元素,后边跟非空格 |
2003 |
列表元素中存在开放性的引号(不成对) |
2004 |
列表元素中存在开放性的括号(不成对) |
3100 |
不支持 |
3101 |
链接状态中 |
3102 |
分配内存失败 |
3103 |
没有连接 |
3104 |
指针为空 |
3105 |
数据有误 |
3106 |
加载DLL失败 |
3107 |
许可没有发现 |
3108 |
许可没有发现 |
3109 |
没有处理对象 |
3110 |
没有给客户数据,导致无法处理 |
6105 |
函数的数据有误,将出现的场景反馈给工程师处理 |
6121 |
event不存在,请先添加secs event对象,再使用event |
6123 |
event的名称太长,event名称长度不能超过300字节 |
6124 |
Constant没有找到数据 |
6126 |
终端服务反馈数据错误 |
6127 |
终端服务被对方拒绝,S10F0终止 |
6134 |
操作的文件太大,最大支持16M |
6136 |
服务器答复的数据不符合SECS要求 |
6140 |
服务器答复PP的数据是错误的,不符合SECS要求 |
6141 |
服务器答复PP名称与请求的PP名称不符 |
6142 |
Constant的值超出Constant设置的最大、最小值 |
6145 |
数据格式不属于SECS数据类型格式,请参考数据类型手册 |
6150 |
压缩文件失败,请查看软件权限是否满足,或者文件需要管理员身份才能处理 |
6151 |
解压文件失败,请验证文件是否属于压缩文件 |
6152 |
Winrar.exe软件没有找到,请查看rar路径是否正确 |
6160 |
PPID没有发现,请查看pp回调函数是否已经正确处理 |
6162 |
处理程式发送:服务器答复ACK7其他错误 |
6170 |
处理程式授权:已经有对象 |
6171 |
处理程式授权:没有空间 |
6172 |
处理程式授权:无效的PPID |
6173 |
处理程式授权:忙,请稍后 |
6174 |
处理程式授权:不接受 |
6175 |
处理程式授权:其他错误 |
9100 |
不支持 |
9101 |
链接状态中 |
9102 |
通讯没有初始化 |
9103 |
分配内存失败 |
9104 |
没有连接 |
9105 |
指针为空 |
9106 |
数据有误 |
9107 |
加载DLL失败 |
9120 |
没有连接 |
9121 |
dmh没有加载 |
12100 |
不支持 |
12101 |
链接状态中 |
12102 |
分配内存失败 |
12103 |
没有连接 |
12104 |
指针为空 |
12105 |
数据有误 |
12106 |
数据为空 |
12107 |
DataBase没有发现,或者vc14没有安装 |
18100 |
不支持 |
18101 |
链接状态中 |
18102 |
分配内存失败 |
18103 |
没有连接 |
18104 |
指针为空 |
18105 |
数据有误 |
18106 |
数据为空 |
18107 |
数据Server Dll没有发现 |
18108 |
调用SOCKET函数失败 |
18109 |
调用BIND函数失败 |
18110 |
调用LISTEN函数失败 |
18111 |
SOCKET对象错误 |
18112 |
没有RPC端口号 |
18113 |
创建发送线程失败 |
18114 |
创建接收线程失败 |
18115 |
创建接收数据处理线程失败 |
18116 |
不能初始化,状态在非空闲 |
18117 |
等待超时 |
18119 |
没有找到返回数据 |
18120 |
目标描述为空 |
18130 |
不允许非字符串开头 |
18131 |
字符串必须是ASCII |
18132 |
没有连接对象 |
18140 |
发送数据为空 |
18141 |
接收数据地址为空 |
18142 |
还没连接客户端 |
18143 |
接受者描述字符为空 |
21100 |
已经存在连接 |
21101 |
还没连接服务器 |
21102 |
分配内存失败 |
21103 |
SOCKET对象错误,无法建立通讯 |
21104 |
发送数据为空 |
21105 |
接收数据地址为空 |
21106 |
创建socket失败 |
21107 |
连接服务器失败 |
21108 |
服务器反馈数据错误 |
21109 |
创建发送线程失败 |
21110 |
创建接收线程失败 |
21111 |
没有找到返回数据 |
21112 |
等待超时 |
21113 |
不能初始化,状态在非空闲 |
21114 |
接受者描述字符为空 |
21115 |
目标描述为空 |
21116 |
开始字符必须是ANSI |
21117 |
字符不允许出现 -, _, ., !, :, or @ |
21130 |
创建接收处理线程失败 |
24100 |
已经存在连接 |
24101 |
还没连接服务器 |
24102 |
分配内存失败 |
24103 |
等待超时 |
24104 |
创建服务器进程失败,检查JND_server,或者打开JND_server权限不够 |
24105 |
没有发现服务器文件 |
24106 |
连接客户端Client DLL失败 |
24107 |
分配唯一名称失败 |
24108 |
T1超出范围: range 100..10000 |
24109 |
T2超出范围: range 200..25000 |
24110 |
T3超出范围: range 1000..120000 |
24111 |
T4超出范围: range 1000..120000 |
24112 |
T5超出范围: range 1000..240000 |
24113 |
T6超出范围: range 1000..240000 |
24114 |
T7超出范围: range 1000..240000 |
24115 |
T8超出范围: range 1000..240000 |
24116 |
参数错误 |
24117 |
IMCHandle为null |
24118 |
ALTX应该小于120个ASCII字符串 |
24119 |
需要完整的变量名称 |
24120 |
需要完整的变量描述 |
24131 |
设备常量描述太长 |
24132 |
设备常量名称太长 |
24133 |
设备常量需要输入数值类型 |
24141 |
事件描述太长 |
24142 |
事件名称太长 |
24150 |
服务器答复数据错误 |
24160 |
需要一个非空的回调 |
24165 |
主机接口处于正在连接状态 |
24166 |
主机接口主动退出 |
24169 |
事件ID小于1 |
24190 |
没有初始化或者初始化失败 |
27001 |
连接失败 |
27002 |
连接状态 |
27003 |
倾听状态 |
27004 |
调用SOCKET函数失败 |
27005 |
调用BIND函数失败 |
27006 |
调用LISTEN函数失败 |
27007 |
SOCK开始状态 |
27008 |
创建SOCK对象失败 |
27009 |
初始化网络失败 |
27010 |
已经初始化 |
27011 |
SOCKET对象错误 |
27012 |
发送数据错误 |
27013 |
错误的参数 |
27020 |
TCP/IP端口被占用 |
30009 |
字符错误 |
30010 |
不能初始化,不在空闲状态 |
30011 |
组名称受限在ASCII的字母、数字和下划线 |
30012 |
初始化socket失败 |
30013 |
创建通信失败 |
30014 |
参数错误 |
30015 |
发送错误 |
30016 |
发送等待接收超时 |
30020 |
没有连接对象 |
30045 |
十六进制转B(BINARY)格式错误 |
30046 |
十进制转B(BINARY)格式错误 |
39001 |
已经存在通讯了 |
39003 |
初始化WSAS失败 |
39010 |
端口参数错误 |
39012 |
创建通讯对象失败 |
39013 |
通讯对象不存在 |
39015 |
参数指针为空 |
39016 |
分配内存失败 |
39020 |
同步发送:等待返回超时 |
39022 |
同步发送:没有收到数据或者被拒绝 |
secs/gem协议系统通讯平台相关推荐
- SECS/GEM金南瓜通讯平台
全面支持E5.E30.E37 等 SECS/GEM 协议以及E39.E40.E94.E87.E90.E173等GEM300 协议,满足 APC.FDC 和 EAP 的高性能要求. 事件收集 Host ...
- 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 ...
- SECS/GEM协议开发系列(二)与Host连接
secs协议的连接,我们还是要先看协议栈,如下图所示: 从协议栈,我可以看到,连接方式有两种: 1,串口连接,对应的是secs i 协议.串口参数,串口号,波特率,数据位,停止位,校验位. 2,网口连 ...
- 半导体设备通讯标准(SECS/GEM)
目录 收起 前言 一.SECS/GEM 简介 二.系统的硬件组成 三.搞清楚需求.(搞明白是什么,基本玩法规则) 1.secs是一个协议族 2.secs的消息通信 3.甲方的secs的标准不一定是 ...
- 半导体通讯标准EAP、SECS/GEM视频介绍
GEM(或SECS / GEM)是由半导体设备材料倡议制定的一组连接标准.这些标准用于定义自动化设备与主机工厂网络之间的通信,从而实现智能工厂制造. SECS是半导体设备通信标准的首字母缩写.GEM是 ...
- C++实现SECS/GEM
SECS/GEM (Standard Equipment Communication System/Generic Equipment Model) 是一种用于在设备之间传输数据和控制信息的协议.它主 ...
- SECS/GEM 半导体设备通讯标准学习笔记
1. SECS/GEM简介 SEMI:Semiconductor Equipment and Materials International 国际半导体设备与材料产业协会 SECS:Semicondu ...
- EAP通讯基础之SECS/GEM/GEM300mm
EAP系统用于控制半导体设备进行自动化生产.与MES系统整合,校验产品信息,自动做账,同时收集产品生产过程中的制程数据和设备参数数据,帮助提高半导体工厂的生产效率,避免人工操作失误,提高产品良率. 而 ...
- SECS/GEM/GEM300/EAP 讲解(三)半导体协议
来自secs/gem网站 www.secsgem.cn 第一章 介绍 第二章 GEM 收集事件 第三章 数据轮询 第四章 GEM 工厂应用支持 第五章 报警 第六章 配方管理 第七章 文档 第八章 设 ...
- PLC SECS/GEM半导体通讯解决方案
PLC To SECS/GEM方案 适用于PLC控制器的统一SECS / GEM接口 JNG PLC SECS/GEM控制器提供高稳定性的桥接环境. 可以运行多个不同的自动化服务,也可以作为用户显示终 ...
最新文章
- 力扣(LeetCode)刷题,简单题(第15期)
- 需求分析的接口需求_再谈需求分析
- Dev c++中{ }不能自动缩进
- docker配置数据默认存储路径:--graph已过时,新版本中使用--data-root代替
- 2015年 第6届 蓝桥杯 Java B组 省赛解析及总结
- TensorFlow实战-AlexNet
- AcWing 1047. 糖果
- ZOJ-2342 Roads 二分图最小权值覆盖
- (转)淘淘商城系列——使用solrj来测试索引库
- 一步一步写算法(之排序二叉树线索化)
- Google正在失去DeepMind?
- android item list居中,RecyclerView选中item居中显示
- 零元学Expression Blend 4 - Chapter 28 ListBox的基本运用与更改预设样式
- CCNA考试题库中英文翻译版及答案13
- 如何用计算机自动求和,如何在excel中自动求和 自动求和的解决方法及步骤
- Android:日志系统
- composer.lock(锁文件)到底要不要提交到项目的版本库中?
- 使用虚拟机备份软件备份VMware vSphere虚拟机
- vuex入门到实战——实现一个todoList待办清单【学习记录】
- 杭电OJ 1181(C++)