上位机
上位机实时数据
连接说明
上位机连接
IP及端口说明
属性名 | 属性值 | 说明 |
---|---|---|
协议类型 | UDP | 实时数据通信协议为UDP |
上位机IP | 192.168.168.2 | 上位机IP必须为192.168.168.2 |
上位机端口 | 1600 | 上位机端口必须为1600 |
互联测控IP | 192.168.168.1 | 互联测控上位机网口已固定为192.168.168.1 |
互联测控端口 | 24400 | 互联测控上位机监听端口已固定为24400 |
数据说明
1.
2.
3.
返回数据说明
// 探测器数量
#define MAX_DETECTOR_SIZE 20
#pragma pack(1)
typedef struct UDPDetectorInfo
{
// // 探测器信息
// uint32_t version = 0;
// 探测器索引
uint8_t index = 0;
// 探测器类型
uint16_t type = 0;
// 探测器保护开关状态,0:不保护 1:保护
uint16_t state = 0;
// 探测器使用开关状态,0:不使用 1:使用
uint16_t isUse = 1;
// 高通值
uint32_t highPass = 0;
// 低通值
uint32_t lowPass = 0;
// 探测器 报警值
uint32_t alarm = 0;
// 自适应加工值(自动调整G01切削倍率)
uint32_t autoRatioValue = 0;
// 场景最大值
uint32_t max;
// 探测器实时值
uint32_t real = 0;
// // 物联网上传值
// uint32_t iot = 0;
// 传感器Type
uint16_t sensor = 0;
// // 传感器数据Index配置
// uint16_t dataIndex = 0;
// // 传感器数据长度
// uint16_t dataLength = 0;
// 传感器MAC地址
uint64_t sensorMAC = 0;
// uint16_t 传感器IP地址
uint32_t sensorIP = 0;
// 报警触发次数
// int warnCount = 0;
// 时间
// uint64_t dataTime = 0;
};
typedef struct UDPSceneInfo
{
// type
uint16_t type = 0x26ED;
// IP
uint16_t ip = 0x5802;
// 场景信息版本
uint32_t version;
// 场景编号
uint32_t sceneNum;
// 刀具编号
uint32_t knifeNum;
// 特殊场景编号
uint32_t specialSceneNum;
// 刀具类型
uint32_t knifeType;
// 刀具直径
uint32_t knifeDia;
// 刀具长度
uint32_t knifeLen;
// 刀具R角
uint32_t knifeR;
// 当前使用探测器数量
uint32_t detectorSize;
// 探测器配置
UDPDetectorInfo detectors[MAX_DETECTOR_SIZE];
// 场景自学时长
uint32_t selfLearnTime;
// 抬刀屏蔽
uint32_t knifeLift;
// G00补偿
uint32_t g00Offset;
// 特殊场景清零时间
uint32_t specialSceneCleanTime;
// 特殊场景清零剩余时间
uint32_t specialSceneRemainTime;
// 多次报警补偿系数
uint16_t multiOptimRatio = 100;
// 报警参数倍数 百分数
uint16_t warnRatio = 0;
// 是否允许NC调整报警值 0:不允许 1:允许
uint8_t ncUpdateWarn = 0;
// 预留1
uint32_t reverse1;
// 预留2
uint32_t reverse2;
// 时间
uint64_t dataTime;
};
#pragma pack()
连接流程:
1、上位机主机与互联测控上位机网口直连
2、修改上位机主机IP为192.168.168.2
伪代码
注意:
1、伪代码只提供编码思路,具体代码以实际平台、实际编程语言为准
// 1、启动udp并监听1600
UDP udpClient;
udpClient.listen("192.168.168.2",1600);
// 2、接收收据
// 2.1、定义接收数组
byte [2048] recvData;
// 2.2、定义接收数据结构体
UDPSceneInfo data;
// 2.3、开始结束数据
int recvLen = recv(udpClient,recvData)
// 2.4、检验数据长度及byte转结构体
if(recvLen == sizeof(UDPSceneInfo)){
memcpy(data,recvData,sizeof(UDPSceneInfo);
}
//2.5 根据需求处理数据及展示数据
....
//2.6 关闭通信
close(udpClient);
修改于 2024-05-10 02:11:28