▪spc3_register_alarm_record_info
▪spc3_query_tags_all_all_records
SPC alarm record |
|
///*SPC Alarm Record Function
#include "hdKingAPI.h" #include "error_code.h" #include "data_types.h" #include "hd3Struct.h" #include <stdio.h> #include <string.h> #include <windows.h> #include <time.h>
void spc_record_callback(HD3_AM_CHANGE nType, const HD3SpcRecord* spcAlarm) { printf("spc alarm occer, nType %d, tag id %d, time %d\n", nType, spcAlarm->nSPCTagID, spcAlarm->tvStartTime.nSec); }
int32 main() { int32 nRet = RD_SUCCESS; HD3Connection conn; HD3PtTagProp normalTag; HD3StatsTagProp statsTag; HD3SpcTagProp spcAlarmTagSave; int32 nRecNum = 4; const int32 SPC_ALARM_TAG_NUM = 4; uint32 nSPCTagIDs[SPC_ALARM_TAG_NUM]; HD3SPCQuery queryCond; HD3Record snapshot; HD3HANDLE hIter = NULL; HD3SpcRecord spcAlarmRec; HD3SpcRecord snSPCAlarms[SPC_ALARM_TAG_NUM]; int32 nErrorCodes[SPC_ALARM_TAG_NUM]; HD3Time alarmTimes[SPC_ALARM_TAG_NUM]; int32 i = 0; uint32 nSrcTagID = 0; uint32 nUCLTagID = 0; uint32 nCLTagID = 0; uint32 nLCLTagID = 0;
//connect strcpy(conn.szAddress, "127.0.0.1"); conn.nPort = 5673; conn.nTimeout = 3; nRet = nt3_connect(&conn); if (nRet != RD_SUCCESS) { printf("connect to server failed, error code[%d]!\n", nRet); return -1; }
//login nRet = sc3_login("admin", "admin"); if (nRet != RD_SUCCESS) { printf("login failed, error code[%d]!\n", nRet); return -1; } printf("login successful!\n");
// add normal tag strcpy(normalTag.szTagName, "szNormalTag"); normalTag.nTagType = HD3_TAG_TYPE_INT32; HD3Mask mask; mask.nCommMask = HD3M_COMM_PROP_TAG_NAME | HD3M_COMM_PROP_TAG_TYPE; mask.nExtMask = 0; nRet = pt3_add_tag(&normalTag, &mask, "", &nSrcTagID); if (nRet != RD_SUCCESS) { printf("add tag[%s] failed, error code [%d]!\n", normalTag.szTagName, nRet); nt3_disconnect(); return -1; } printf("add tag[%s] successful!\n", normalTag.szTagName);
//add statistics tag strcpy(statsTag.szTagName, "szStatsTag"); strcpy(statsTag.szSourceTagName, normalTag.szTagName); statsTag.nScanPeriod = 1; statsTag.nStatsType = HD3_STATS_TYPE_ARITH_MEAN; statsTag.nSampleMode = HD3_STATS_SAMPLE_MODE_INTERVAL; statsTag.nSampleInterval = 1; statsTag.nSampleStartDate = 1; statsTag.bBeginTimeStamp = true; statsTag.nSampleType = HD3_STATS_SAMPLE_TYPE_RAW; statsTag.nCalcPeriod = 0; HD3Mask smask; smask.nCommMask = HD3M_COMM_PROP_TAG_NAME; smask.nExtMask = HD3M_ST_EXT_PROP_SOURCE_TAG_NAME | HD3M_ST_EXT_PROP_SCAN_PERIOD | HD3M_ST_EXT_PROP_STATS_TYPE | HD3M_ST_EXT_PROP_SAMPLE_MODE | HD3M_ST_EXT_PROP_SAMPLE_INTERVAL | HD3M_ST_EXT_PROP_SAMPLE_START_DATE | HD3M_ST_EXT_PROP_BEGIN_TIMESTAMP | HD3M_ST_EXT_PROP_SAMPLE_TYPE | HD3M_ST_EXT_PROP_CALC_PERIOD;
nRet = st3_add_tag(&statsTag, &smask, "", &statsTag.nTagID); if (nRet != RD_SUCCESS) { printf("add stat tag[%s] failed, error code [%d]!\n", statsTag.szTagName, nRet); nt3_disconnect(); return -1; } printf("add tags[%s] successful!\n", statsTag.szTagName);
//add one normal tag as spc tag ucl tag strcpy(normalTag.szTagName, "szUCLTag"); normalTag.nTagType = HD3_TAG_TYPE_FLOAT32; nRet = pt3_add_tag(&normalTag, &mask, "", &nUCLTagID); if (nRet != RD_SUCCESS) { printf("add tag[%s] failed, error code [%d]!\n", normalTag.szTagName, nRet); nt3_disconnect(); return -1; } printf("add tag[%s] successful!\n", normalTag.szTagName);
//add one normal tag as spc tag cl tag strcpy(normalTag.szTagName, "szCLTag"); normalTag.nTagType = HD3_TAG_TYPE_FLOAT32; nRet = pt3_add_tag(&normalTag, &mask, "", &nCLTagID); if (nRet != RD_SUCCESS) { printf("add tag[%s] failed, error code [%d]!\n", normalTag.szTagName, nRet); nt3_disconnect(); return -1; } printf("add tag[%s] successful!\n", normalTag.szTagName);
//add one normal tag as spc tag lcl tag strcpy(normalTag.szTagName, "szLCLTag"); normalTag.nTagType = HD3_TAG_TYPE_FLOAT32; nRet = pt3_add_tag(&normalTag, &mask, "", &nLCLTagID); if (nRet != RD_SUCCESS) { printf("add tag[%s] failed, error code [%d]!\n", normalTag.szTagName, nRet); nt3_disconnect(); return -1; } printf("add tag[%s] successful!\n", normalTag.szTagName);
//add spc alarm tag for (i = 0; i < SPC_ALARM_TAG_NUM; i ++) { memset(&spcAlarmTagSave, 0, sizeof(spcAlarmTagSave)); sprintf(spcAlarmTagSave.szTagName, "szSPCAlarmTag_%d", i); strcpy(spcAlarmTagSave.szSourceTagName, "szStatsTag"); spcAlarmTagSave.nCtrlChartType = HD3_SPC_CTRL_CHART_TYPE_XBAR; strcpy(spcAlarmTagSave.szUCLTagName, "szUCLTag"); strcpy(spcAlarmTagSave.szCLTagName, "szCLTag"); strcpy(spcAlarmTagSave.szLCLTagName, "szLCLTag"); spcAlarmTagSave.dUCLDefaultValue = 200; spcAlarmTagSave.dCLDefaultVaule = 100; spcAlarmTagSave.dLCLDefaultValue = 50; spcAlarmTagSave.bJudgeContinuous = true; spcAlarmTagSave.bRule1 = true; spcAlarmTagSave.nRule1M = 1;
HD3Mask spcmask; spcmask.nCommMask = HD3M_COMM_PROP_TAG_NAME; spcmask.nExtMask = HD3M_SPC_EXT_PROP_SOURCE_TAG_NAME | HD3M_SPC_EXT_PROP_CTRL_CHART_TYPE | HD3M_SPC_EXT_PROP_RULE; nRet = spc3_add_tag(&spcAlarmTagSave, &spcmask, "", &nSPCTagIDs[i]); if (nRet != RD_SUCCESS) { printf("add spc tag[%s] failed, error code [%d]!\n", spcAlarmTagSave.szTagName, nRet); nt3_disconnect(); return -1; } printf("add spc tag[%s] successful!\n", spcAlarmTagSave.szTagName); }
//reg spc alarm callback nRet = spc3_register_alarm_record_info(spc_record_callback); if (nRet != RD_SUCCESS) { printf("register spc alarm call back failed, error code [%d]!\n", nRet); nt3_disconnect(); return -1; } printf("register spc alarm call back successful!\n");
Sleep(30000); snapshot.value.fFloat32 = 200; snapshot.nSec = 1; snapshot.nMsec = 0; snapshot.nQuality = 192; snapshot.nTagType = HD3_TAG_TYPE_FLOAT32; nRet = sn3_save_snapshot(nUCLTagID, &snapshot); if (nRet != RD_SUCCESS) { printf("save snapshot failed, error code [%d]!\n", nRet); nt3_disconnect(); return -1; }
snapshot.value.fFloat32 = 50; snapshot.nSec = 1; snapshot.nMsec = 0; snapshot.nQuality = 192; snapshot.nTagType = HD3_TAG_TYPE_FLOAT32; nRet = sn3_save_snapshot(nLCLTagID, &snapshot); if (nRet != RD_SUCCESS) { printf("save snapshot failed, error code [%d]!\n", nRet); nt3_disconnect(); return -1; }
snapshot.value.fFloat32 = 100; snapshot.nSec = 1; snapshot.nMsec = 0; snapshot.nQuality = 192; snapshot.nTagType = HD3_TAG_TYPE_FLOAT32; nRet = sn3_save_snapshot(nCLTagID, &snapshot); if (nRet != RD_SUCCESS) { printf("save snapshot failed, error code [%d]!\n", nRet); nt3_disconnect(); return -1; }
//save snapshots generate spc alarm //for (i = 0; i < nRecNum; i++) for (i = 0; i < 10; i++) { snapshot.nSec = (int32)time(NULL) + i + 1; snapshot.nMsec = 0; snapshot.nQuality = 192; snapshot.value.nInt32 = 300; snapshot.nTagType = HD3_TAG_TYPE_INT32; nRet = sn3_save_snapshot(nSrcTagID, &snapshot); if (nRet != RD_SUCCESS) { printf("save snapshot failed, error code [%d]!\n", nRet); nt3_disconnect(); return -1; } printf("save snapshot successful!\n"); Sleep(10); }
Sleep(3000);
//query alarm snapshot nRet = spc3_query_snapshots(SPC_ALARM_TAG_NUM, nSPCTagIDs, HD3M_ALL, snSPCAlarms, nErrorCodes); if (RD_SUCCESS == nRet) { printf("query alarm snapshots successful!\n"); } else if (EC_HD_API_AM_QUERY_SNAPSHOTS_FAILED == nRet) { for (i = 0; i < SPC_ALARM_TAG_NUM; i ++) { if (nErrorCodes[i] != RD_SUCCESS) { printf("query alarm tag[%d] snapshot failed, error code [%d]!\n", nSPCTagIDs[i], nErrorCodes[i]); } } } else { printf("query alarm snapshots failed, error code[%d]!\n", nRet); nt3_disconnect(); return -1; }
//ack alarms for (i = 0; i < nRecNum; i++) { alarmTimes[i].nSec = snSPCAlarms[i].tvStartTime.nSec; alarmTimes[i].nMsec = snSPCAlarms[i].tvStartTime.nMsec; }
nRet = spc3_acknowledge_alarms(SPC_ALARM_TAG_NUM, nSPCTagIDs, alarmTimes, &nErrorCodes[0]); if (nRet != RD_SUCCESS) { printf("acknowledge alarms failed, error code [%d]!\n", nRet); nt3_disconnect(); return -1; } printf("acknowledge alarms successful!\n");
//comment alarms nRet = spc3_comment_alarms(SPC_ALARM_TAG_NUM, nSPCTagIDs, alarmTimes, "this is a comment", &nErrorCodes[0]); if (nRet != RD_SUCCESS) { printf("comment alarms failed, error code [%d]!\n", nRet); nt3_disconnect(); return -1; } printf("comment alarms successful!\n");
//query tag alarm records queryCond.tvStart.nSec = 1; queryCond.tvStart.nMsec = 0;
queryCond.tvEnd.nMsec =0; queryCond.tvEnd.nSec =100;
queryCond.nAckMask = HD3M_AM_REC_ACK_STATE_NO | HD3M_AM_REC_ACK_STATE_YES; queryCond.nRestoreMask = HD3M_AM_REC_RESTORE_STATE_NO | HD3M_AM_REC_RESTORE_STATE_YES;
nRet = spc3_query_tag_records(nSPCTagIDs[0], &queryCond, HD3M_ALL, &hIter); while (true) { nRet = ut3_get_item_step(hIter, &spcAlarmRec); if (RD_SUCCESS == nRet) { printf("query alarm successful, alarm tag id [%d] start time[%d:%d]\n", spcAlarmRec.nSPCTagID, spcAlarmRec.tvStartTime.nSec, spcAlarmRec.tvStartTime.nMsec); } else if (EC_HD_API_QUERY_END == nRet) { printf("query tags records complete\n"); nRet = RD_SUCCESS; break; } else { printf("query tags all records failed, error code [%d]\n", nRet); } } ut3_free_handle(hIter);
//query group alarm records nRet = spc3_query_group_records(0, &queryCond, HD3M_ALL, &hIter); while (true) { nRet = ut3_get_item_step(hIter, &spcAlarmRec); if (RD_SUCCESS == nRet) { printf("query alarm successful, alarm tag id [%d] start time[%d:%d]\n", spcAlarmRec.nSPCTagID, spcAlarmRec.tvStartTime.nSec, spcAlarmRec.tvStartTime.nMsec); } else if (EC_HD_API_QUERY_END == nRet) { printf("query group all records complete\n"); nRet = RD_SUCCESS; break; } else { printf("query group records failed, error code [%d]\n", nRet); } } ut3_free_handle(hIter);
//query tags alarm records nRet = spc3_query_tags_all_records(SPC_ALARM_TAG_NUM, nSPCTagIDs, &queryCond, HD3M_ALL, &hIter); while (true) { nRet = ut3_get_item_step(hIter, &spcAlarmRec); if (RD_SUCCESS == nRet) { printf("query alarm successful, alarm tag id [%d] start time[%d:%d]\n", spcAlarmRec.nSPCTagID, spcAlarmRec.tvStartTime.nSec, spcAlarmRec.tvStartTime.nMsec); } else if (EC_HD_API_QUERY_END == nRet) { printf("query tags all records complete\n"); nRet = RD_SUCCESS; break; } else { printf("query tags records failed, error code [%d]\n", nRet); } } ut3_free_handle(hIter);
//reg spc alarm callback nRet = spc3_unregister_alarm_record_info(); if (nRet != RD_SUCCESS) { printf("unregister spc alarm call back failed, error code [%d]!\n", nRet); nt3_disconnect(); return -1; } printf("unregister spc alarm call back successful!\n");
//disconnect nt3_disconnect();
return 0; }
//*/
|