- 博客(141)
- 资源 (24)
- 问答 (1)
- 收藏
- 关注
原创 mqtt网关数据接入rabbitmq,缓存离线数据,实现消息保留
应用场景:网关将设备数据发布至mqtt服务器后,数采程序因为重启或者升级等原因,未能接到到离线的订阅消息,利用rabbitmq-mqtt可将离线数据缓存,待上线后接收。
2024-09-23 11:22:32 686
原创 EF工具及命令使用
Add-Migration : 无法将“Add-Migration”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。所在位置 行:1 字符: 1。
2024-09-19 08:35:58 161
原创 NetCore DynamicExpresso 动态表达式使用例子
new Trade() { TradeID = 1, TradeTitle = "交易1", Created = Convert.ToDateTime("2020/8/1"), CustomerID = 1 },new Trade() { TradeID = 2, TradeTitle = "交易2", Created = Convert.ToDateTime("2020/8/5"), CustomerID = 2 },Console.WriteLine(target.Eval("a.Name"));
2024-09-13 10:35:52 407
原创 fuxa搭建与使用(web组态)
在安装路径(D:\Program_Files\nodejs)目录下新建文件夹node_cache、node_global。fuxa使用 https://blog.csdn.net/XW_MR/article/details/127691017。参考网址:https://blog.csdn.net/WHF__/article/details/129362462。使用管理员身份打开cmd命令窗口(打开方法见下方Tips),输入以下命令。1. 安装Node.js -> npm安装。安装cnpm(按需安装)
2024-09-10 11:35:45 1527
原创 用简易代码拆解物联网IoT平台骨架
拆解物联网平台,完成平台基础数据配置,MQ服务,数据流转(网关读取设备数据,自定义报文上传,触发器判断,自定义报文下发,网关写入设备数据)
2024-09-05 11:27:00 1151
原创 物联网平台组件1: 边缘网关自定义上传报文
Net6通过Jint读取JS模板文件,并调用createMqttPayload方法,传入网关数据(JSON),得到平台报文(JSON)
2024-08-30 14:51:40 825
原创 MES 数采计算公式
有一台设备,因应市场需要,每天加班30分钟,该设备理论节拍为0.8分钟,在正常稼动时间内应生产575件,但实际仅生产出418件,实际测得的节拍为1.1分钟,当天更换刀具及故障停机时间为70分钟。某工厂实施8小时作业体制,其中中午休息1小时,上班时间包括早会,检查,清扫等20分钟,上、下午期间各休息15分钟。于是得到 OEE = 84.8% ×85.7%×98% = 71.2%时间开动率 = (460-70)/460 = 84.8%A:实际作业时间 =480+30=510min。合格品率 = 98%
2024-07-16 16:26:00 342
原创 IoT数采平台1:开篇
开箱即用; 向下接入不同设备(PLC / 采集网关 / OPC / TCP设备 / UDP设备 / HTTP接入),向上通过MQTT发布消息; 数采底层基于NET CORE,既支持PC机数据采集,又适配ARM架构协议适配网关
2024-04-03 16:15:54 437 2
原创 CAN通信入门
/canRead第一个参数为通道句柄,为canOpenChannel的返回值;//打开CAN通道;//设置CAN参数;文档地址:file:///D:/Program%20Files/Kvaser/Canlib/python/pycanlib/docs/index.html。if (stat == Canlib.canStatus.canOK)//如果打开成功,则CAN状态更新为true。if (stat == Canlib.canStatus.canOK)//如果写入返回值为canOK,说明写入成功。
2024-02-21 09:46:58 1365
原创 工厂设备数据采集系统初探
1. 接PLC(串口/网口),设备信息(型号,通信协议),点位信息(类型short/int/long/float/double)2.2 套入互感器,获取电流、电压、功率信息,通过功率来判断设备运行状态。1.2 采集网关(PLC转modbus tcp,数据透传)3.1 消息通知(mqtt/websocket)2.1 IO模块接到设备中,获取IO/AO信息。2.1 平台:管理后台(参数配置,报表展示)3. 通过ocr识别HMI屏上的设备信息。1. 采集程序(时序数据库)2.2 终端:电子看板。
2024-01-05 09:30:46 1041
原创 winform简易用户权限管理系统
btnAssign = GetToolStripButton("btnAssign", "分配权限", Resources.btnAssign);// 管理员特别权限。
2024-01-03 12:00:13 1785
原创 Modbus平台:协议中间件(支持Modbus TCP、RTU、ASCII)
连接方式:TcpAtive: TCP主动 | TcpPassive: TCP被动 | UdpAtive: Udp主动 | UdpPassive: Udp被动。支持功能:bool | short | int | float | long | double | batchbool | batchword。该程序可放置外网中,适用于DTU长连接(心跳包必须包含DTU,可以是tcp/udp),也可以在内网中,短连接访问设备server。InputRegister = 4, // 读输入寄存器(只读)
2023-11-28 16:39:22 881
原创 ModBus TCP/RTU 报文解析
返回:00 01 00 00 00 17 01 03 14 00 0B 00 16 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (2个字节合为1个word)发送:00 00 00 00 00 06 01 01 00 63 00 01 (01:功能码(1byte);// 输出:True True False False False False False False。发送:00 01 00 00 00 06 01 03 00 63 00 01。
2023-11-21 10:48:56 1616
原创 C#上位机序列10: Winform上位机通用框架
框架中包含了常用的一些自定义控件,比如文本标签、单选框、动作按钮、皮带等。所有的控件均支持数据双向绑定,也就是说只要我们在控件的属性中指定了变量名称,框架在数据变化时会自动根据值更新动画。在用户操作时,比如从I/O域中输入新的数值或者按下按钮等操作框架会自动将新值写入到PLC中,这些过程全部由框架完成,只需预先导入点位信息表及配置控件属性
2023-11-09 09:59:26 2344
原创 Sql和NoSql
2. 数据量大,为减少联表查询的耗时,会将同组设备的所有字段入库(方案1:建字段(参数值需跟设置属性值对应,做好对照表);nosql,不仅可以存key/value,文档,文件,更加容易的分表(本地文件:lietedb,服务器:monogdb),缓存:redis。InfluxDB的写性能是MongoDB的2.4倍,存储效率是MongoDB的20倍,查询效率是MongoDB的5.7倍。场景:不同设备(水泵,流量计),不同属性的数据采集,统计分析。水泵表(泵id,组id,泵状态,选择开关,故障状态)
2023-10-07 08:21:49 325
原创 C#上位机开发目录
C#上位机序列1: 多线程(线程同步,事件触发,信号量,互斥锁,共享内存,消息队列)C#上位机序列2: 同步异步(async、await)C#上位机序列3: 流程控制(串行,并行,混合)C#上位机序列4: 动画效果(模拟PLC设备运行)C#上位机序列5: 三菱通信(FX-3U SerialOverTcp)C#上位机序列6: modbus通信(NModbus4 modbus tcp)C#上位机序列7: 分库分表C#上位机序列8: 数据库同步
2023-09-06 14:33:15 873
原创 C#模拟PLC设备运行
this.pictureBox1.Image = Properties.Resources.右皮带机工作1;this.pictureBox1.Image = Properties.Resources.右皮带机工作2;this.pictureBox1.Image = Properties.Resources.右皮带机待机;// 方式2:基于事件的方式,将控件和数据进行绑定,优点:在任何地方改变变量的值,所绑定的控件也能同时改变。// 方式1:基于轮询的方式,查询到plc数据,然后进行更新。
2023-09-06 09:19:56 922
原创 C# winform控件和对象双向数据绑定
protected virtual void OnPropertyChanged(string propertyName) //属性变更通知。MessageBox.Show($"对象信息,Name={people.Name},Age={people.Age}");people.Name = "对象";1. 对象值 -> 控件值。2. 控件值 -> 对象值。控件和对象双向数据绑定。
2023-09-04 17:37:43 1714
原创 C#FreeSql分库分表
/读【从库】(默认) //select.Master().WhereId(a => a.Id == 1).ToOne();//.UseSlave(connstr_slave1)//, "connstr_sqlserver2") //使用从数据库,支持多个。
2023-09-04 08:47:27 895 1
java应用程序-签名及截图
2018-10-08
仪表控件-wince下能运行
2013-11-07
DockLibTest界面浮动
2013-10-29
用qt或者c,怎样写个程序实现http post的数据接收
2016-10-18
TA创建的收藏夹 TA关注的收藏夹
TA关注的人