SECS/GEM 金南瓜SDK手册


第一章   产品简介

1. 产品介绍

金南瓜SECS/GEM是最适应于全自动智能设备的选择。 金南瓜SECS/GEM具有怪兽级的强劲性能,全面升级的高适应性,易用友好的SECS工具,利于快速开发部署。

         金南瓜SECS兼容运行在独自工控机,或与设备软件集成在一台工控机,让用户灵活应对各种使用场景。

         支持VB、C/C++、C#、Labview、各种PLC(opc、fins、mc、modbus等)、终端传感器等

1 - SECS/GEM 金南瓜SDK手册

2. 软件清单与展示

全部软件目录清单

2.1软件清单

1       SECS/GEM用户

提供EquipViewApp.exe和HostViewApp.exe俩款demo软件,分别对应的场景是设备端和主机EAP端模拟。

红色框内为所需文件

2.     PLC SECS/GEM用户

提供EquipViewApp.exe、 PlcSecsControlView.exe和HostViewApp.exe软件,分别对应的场景是设备端、PLC连接器和主机EAP端模拟。

3.     GEM300用户

额外提供EquipViewApp300.exe和HostViewApp300.exe测试软件,分别对应的GEM300设备端和主机EAP端模拟。

2.2 模拟软件展示

1.     设备端模拟软件EquipViewApp

1 1 - SECS/GEM 金南瓜SDK手册

2.     主机端模拟软件 HostViewApp

3.     PLC控制软件 PlcSecsControlView

1 2 - SECS/GEM 金南瓜SDK手册

4.     GEM300模拟软件EquipViewApp300

1 3 - SECS/GEM 金南瓜SDK手册

5. 其他软件

  1. 后台服务进程JNG_Server.exe

2.3 其他文件介绍

  1. SecsConfig 文件夹中主要的文件
    1. licenses.ini 为运行许可,可选用加密狗或licenses.ini方式授权
    1. 配置文件:
      1. Alarm.csv 为警报信息表(ALID)
      1. EC.csv 为设备常量表(ECID)
      1. Event.csv 为事件表(CEID)
      1. SV.csv 为变量表(SVID/VID)
      1. EventReport.csv 为event—report关联link表
      1. ReportVid.csv为report—vid关联link表
      1. FormatPP.csv 为格式化(序列化)recipe的表(特殊场景使用到)
  • 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及以上、C++ Builder 6

4 硬件环境

硬件:

         PC工控机,只要是电脑都能运行,无配置要求。

接口:

RJ45或者光纤以太网网口 1个

5 运行许可

运行许可与设备主机MAC地址绑定

更换硬盘、内存条、光驱及操作系统等不影响许可证问题。

第二章   软件使用

4. 软件获取

4.1 获取金南瓜SECS SDK

用户可以在我们的网站上下载开发包文件。

下载地址http://www.semisecs.com

4.2 获取运行许可

1.     如果为加密狗方式,将加密狗插入USB接口即可

2.     运行文件许可方式

4.3 软件使用

1. 参考 “Demo使用介绍书(日期).pdf”操作使用书

第三章   开发指导

5 软件交互流程

SDK与设备软件交互关系图

5.1 初始化SDK模块

1. 初始化SDK dll模块

2. 设置各类参数、回调函数等

3. 设置控制模式(OFFLINE或ONLINE)

4. 启用通讯

初始化流程

1 4 - SECS/GEM 金南瓜SDK手册

5.2 SDK与设备之间交互

1. 通讯状态发生改变时,通过回调函数反馈给设备      

2. 设备发生事件时,调用EventPos API通知SDK

3. 设备发生Alarm时,调用AlarmSet API通知SDK

4. 服务器发送远程命令给设备,SDK通过远程命令回调函数实时通知设备

1 5 - SECS/GEM 金南瓜SDK手册

6 数据配置

作用:

         将变量、事件、警报等数据含义配置给SDK

配置文件目录:

         在../JngServer/SecsConfig/当中

6.1 类型映射表

secs codeJNG 类型代码Meaning & Examples
00LList类型
10Bbinary – unsigned 8 bit data: 二进制类型            “0x00”          “0x01 0x02 0x03”
11TFboolean data: 布尔类型 TF 1 非零代表true TF 0 零代表false
20ACharacter string data: ASCII字符串类型
30I88-byte signed integer
31I11-byte signed integer
32I22-byte signed integer
34I44-byte integer signed
40F44-byte floating point
44F88-byte floating point
50U88-byte unsigned integer
51U11-byte unsigned integer
52U22-byte unsigned integer
54U44-byte unsigned integer

6.2 变量添加

通过SV.csv方法添加

① 变量的ID

② TYPE类型:

可填写L、A、TF、B、U1、U2、U4、I1、I2、I4、F4、F8

参考章节“6.1 类型映射表”

③ CLASS数据的类型

         填写:SV

④ Int value 初始化值,一般不填值。

⑤ Units为单位

         例如:

                  um、mm、kg等

⑥ callback设为0

1 6 - SECS/GEM 金南瓜SDK手册

6.3 事件添加

通过Event.csv方法添加

① 事件的ID

② EVENT_NAME

         事件的名称

③ DES描述

         事件的描述

1 7 - SECS/GEM 金南瓜SDK手册

6.4 警报添加

通过alarm.csv方法添加

① 警报的ID

② NAME

         警报的名称

③ Enable

         1为启用警报,当警报发生时将报告给主机

         0位禁用警报,当警报发生时不会报告给主机

1 8 - SECS/GEM 金南瓜SDK手册

6.5 报表-变量映射添加

通过ReportVid.csv方法添加,该配置一般由主机端完成

① 第一列为Report ID

② 第二列及后面为VID

1 9 - SECS/GEM 金南瓜SDK手册

6.6 事件-报表映射添加

通过EventReport.csv方法添加,该配置一般由主机端完成

① 第一列为Event ID

② 第二列及后面为Report ID

1 10 - SECS/GEM 金南瓜SDK手册

7  C/C++二次开发

这部分内容针对于PC端的C++语言二次开发

7.1 其他编译器配置所需改动:

7.1.1 编译器 VC6 配置

无需改动

7.1.2 编译器 C++ Builder 6 配置

需要修改代码

1. 启用“SecsPortExport.h”的宏定义 #define __CPP_BUILDER__

1 11 - SECS/GEM 金南瓜SDK手册

原来没有启用

1 12 - SECS/GEM 金南瓜SDK手册

启用宏定义

2. 删除“Group.cpp”、“SecsBase.cpp”和“SecsEquip.cpp”第一行的 #include “stdafx.h”

1 13 - SECS/GEM 金南瓜SDK手册

3. 用C++ Builder 6 的implib.exe将SecsPort.lib转换成C++ Builder 6所能支持的格式

1 14 - SECS/GEM 金南瓜SDK手册
1 15 - SECS/GEM 金南瓜SDK手册

7.1.3 编译器 QT 配置

只需将包含的cpp的最上边的 #include “stdafx.h” 删掉

1 16 - SECS/GEM 金南瓜SDK手册
1 17 - SECS/GEM 金南瓜SDK手册

7.2 初始化SDK

在使用SECS通讯之前需要调用Start函数进行初始化dll模块。

接口:

void Start(string pServerAddr, int nPort);

例子:

m_pSecs = new CSecsEquip();

// 连接服务器

RcResult rc = m_pSecs->Start();

7.3 初始化参数

初始化SECS/GEM通讯的各项参数,例如IP、端口号、device ID等。

接口:

1. SECS连接参数的接口

设置通讯对方的TCP/IP地址

RcResult SetIP(string ip);

设置TCP/IP通讯的端口号

RcResult SetPort(int port);

设置主动/被动的TCP/IP通讯模式

RcResult SetPassive(bool bPassive);

设置设备型号名称

RcResult SetMDLN(string pMDLN);

设置会话ID

RcResult SetDeviceID(int nDeviceID);SetT1();

设置各种场景的超时

RcResult SetT1(int nTimeout);

RcResult SetT2(int nTimeout);

RcResult SetT3(int nTimeout);

RcResult SetT4(int nTimeout);

RcResult SetT5(int nTimeout);

RcResult SetT6(int nTimeout);

RcResult SetT7(int nTimeout);

RcResult SetT8(int nTimeout);

2. 加载CSV数据

加载指定的数据CSV配置

RcResult LoadDataByCsvFile(string pDir = “”);

3. 设置响应函数

SecsStateChangeProc* m_pStateChangeCallback;                  // 状态改变回调SecsTerminalProc* m_pTerminalCallback;                               // 终端信息回调

SecsRemoteProc* m_pRemoteCallback;                                  // 远程控制回调          

4. 如果需要多线程同步,可以同步对象

回调函数会附带该参数

void SetClientData(void* pClientData);

5. 设置控制模式

设置控制状态

RcResult SetControlMode(CONTROL_MODE state);

6. 增加变量、事件、警报等

增加方法参考后面对应名称

例子:

m_pSecs = new CSecsEquip();

// 连接服务器

RcResult rc = m_pSecs->Start();

         if (rc.rc != 0)

         {

                  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->SetClientData(this);

         m_pSecs->m_pTerminalCallback = ::OnTerminalProc;

         m_pSecs->m_pStateChangeCallback = ::OnStateChangeProc;

         m_pSecs->m_pRemoteCallback = ::OnRemoteProc;

         m_pSecs->m_pVarValueProc = ::OnVarValueProc;

// 示例的回调内容结束      

         // 特殊

         m_pSecs->PPHandleMode(eCostomizeHandle);

         m_pSecs->m_pPPFormatValueProc = OnPPFormatValueProc;

         // 通过Csv文件加载配置

         rc = m_pSecs->LoadDataByCsvFile();

         // 建立通讯

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

         if(g_appdata.m_bCommEnable)

         {

                  rc = m_pSecs->CommEnable();

                  SHOW_MSG_RC(rc);

         }

         return true;

参考:

7.4 建立通讯

1. 调用接口API开始通讯

CommEnable();

7.5 变量设置

  1. 采用设置方法 

VariableSet();

例子:

int nVarID = 13001;

string pValue = “300”;

m_pSecs->VariableSet(1601, pValue);

7.6 事件发送

通过API函数发送事件

EventPos(事件ID);

7.7 警报设置/清除

通过API函数设置/清除警报

AlarmSet(警报ID, true/false);

true为设置

false为清除

例子:

8  C#二次开发

这部分内容针对于PC端的C#语言二次开发

接口名称和作用跟C++风格一致

注意:

         工程师需要将SecsEquip项目重新编译,生成对应net版本的dll

         1. 将项目的net版本选择与设备软件一致的版本

2. 编译生成DLL文件,将DLL文件添加到设备软件项目当中

8.1 初始化SDK

创建一个SECS通讯对象

public CSecsEquip m_pSecs = new CSecsEquip();

金南瓜SDK软件使用之前必须先对其初始化

初始化方法:

1. 调用开始接口

void Start(string pServerAddr, int nPort);

2. 使用例子

Start();

8.2 初始化参数

1. 设置SECS连接参数

         SetIP();

         SetPort();

         SetPassive();

         SetMDLN();

         SetT1();

         SetT2();

         SetT3();

         SetT4();

         SetT5();

         SetT6();

         SetT7();

2. 加载CSV数据

LoadDataByCsvFile();

3. 设置响应/委托函数

m_pOnCommState                  通讯状态改变通知

m_pOnControlState                 控制状态改变通知

4. 设置处理对象指针

SetClientData();

5. 设置控制模式

SetControlMode();

6. 增加变量、事件、警报等

         增加方法参考后面对应名称

8.3 建立通讯

1. 调用接口API开始通讯

CommEnable();

8.4 变量设置

  1. 采用设置方法

8.5 事件发送

通过API函数发送事件

EventPos();

8.6 警报设置/清除

通过API函数设置/清除警报

AlarmSet(警报ID, true/false);