资讯动态

HTTP 通信是视觉上位机“向上对接”企业系统(MES/ERP/云端)的标准通道

发布时间:2026/10/19 12:37:46 来源:尧图企业网站定制
HTTP 通信是视觉上位机“向上对接”企业系统MES/ERP/云端的标准通道。在工业场景中它通常表现为“视觉系统作为客户端通过 POST/PUT 将质检结果以 JSON 格式提交到企业服务器”。核心模式视觉数据上传POST JSON这是工业场景中最典型的应用。视觉系统完成检测后把结果SN、OK/NG、测量值、时间戳打包成 JSON通过 HTTP POST 发送到 MES 的 REST 接口。一个实际的研究案例印证了这一点智能产线中的减振器示功系统使用 HTTP POST 方式将质检数据传递给 MES 进行储存和管理。工业网关也常用 HTTPJSON 将设备数据发送到 MES 系统支持 RESTful API 标准。C# 实现HttpClient 的正确用法关键原则绝不要用using包裹 HttpClient。Microsoft 官方文档明确指出HttpClient的推荐用法是每次应用实例化一次而非每次使用。频繁创建和销毁会导致socket 耗尽Socket Exhaustion在高频上传场景下如每 500ms 发送一次会迅速崩溃。推荐方案使用IHttpClientFactory。它统一管理 HttpClient 的生命周期解决 socket 耗尽问题并原生支持 DI 和弹性策略。// 在 Program.cs 或 Startup 中注册builder.Services.AddHttpClient(MesApi,client{client.BaseAddressnewUri(https://mes.factory.local/api/);client.DefaultRequestHeaders.Add(Accept,application/json);client.TimeoutTimeSpan.FromSeconds(10);// 视觉场景需要快速失败}).AddStandardResilienceHandler();// 自动重试断路器上传视觉结果的完整 C# 案例publicclassMesUploader{privatereadonlyIHttpClientFactory_clientFactory;privatereadonlyILoggerMesUploader_logger;publicMesUploader(IHttpClientFactoryclientFactory,ILoggerMesUploaderlogger){_clientFactoryclientFactory;_loggerlogger;}publicasyncTaskboolUploadResultAsync(VisionResultresult,CancellationTokenct){varclient_clientFactory.CreateClient(MesApi);// 构造上传数据MES 通常要求 SN 结果 详情varpayloadnew{snresult.Sn,stationVisionStation01,resultresult.IsOk?OK:NG,timestampresult.Timestamp.ToString(yyyy-MM-dd HH:mm:ss),measurementsnew{xresult.X,yresult.Y,angleresult.Angle}};try{// 使用 System.Net.Http.Json 的扩展方法自动序列化usingvarresponseawaitclient.PostAsJsonAsync(v1/inspection,payload,ct);if(response.IsSuccessStatusCode){_logger.LogInformation(上传成功: SN{Sn},result.Sn);returntrue;}// 服务器返回了非 2xx 状态码业务失败如重复上传varerrorBodyawaitresponse.Content.ReadAsStringAsync(ct);_logger.LogWarning(上传被拒绝: {StatusCode}, Body{Body},response.StatusCode,errorBody);returnfalse;}catch(HttpRequestExceptionex){// 网络层失败连接超时、DNS 失败、连接被拒_logger.LogError(ex,上传失败: SN{Sn}, StatusCode{Code},result.Sn,ex.StatusCode);returnfalse;}catch(TaskCanceledException)when(ct.IsCancellationRequested){// 被取消正常关闭流程不视为错误throw;}}}视觉场景的特殊约束1. 超时必须短且明确。产线节拍通常以秒计。如果 MES 响应慢视觉系统不能无限等待。实际案例中开发者给接口调用设置了5 秒超时延时超时即返回失败避免阻塞产线。2. 重试要区分场景。网络抖动导致的超时HttpRequestException、HTTP 408/429/5xx值得重试但POST 请求的重复执行会导致 MES 中产生重复记录。Microsoft 的AddStandardResilienceHandler默认会对所有方法重试使用时需要显式禁用对 POST 的重试.AddStandardResilienceHandler(options{options.Retry.DisableForUnsafeHttpMethods();// 禁止对 POST/PUT/DELETE 重试});3. 错误处理分层清晰。HttpClient不会为 404、500 这类“收到了响应但状态码是错误”的情况抛异常。只有连接失败、超时、取消才会抛HttpRequestException。代码中必须区分这两类失败业务失败读response.Content了解原因网络失败则记录ex.StatusCode并判断是否可恢复。总结视觉系统通过 HTTP 向上对接的核心是“构造 JSON POST 提交 超时控制”。技术实现上用IHttpClientFactory管理连接池是底线直接new HttpClient()会在高频上传时造成 socket 耗尽超时设短5-10秒是产线要求POST 不要盲目重试否则 MES 会收到重复质检记录。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑