![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编程
文章平均质量分 55
chengjl8
对于工业数据采集和处理比较感兴趣,并且有些小心得。
展开
-
各品牌PLC存储器寻址的规则
在PLC编程时,字节或多字节的变量一般支持绝对地址寻址(比如,IW0、MD4等)。要想正确寻址,则必须要搞清楚寻址的规则。目前常见的规则有两种:字节寻址和字寻址。原创 2023-10-25 20:20:28 · 542 阅读 · 0 评论 -
西门子PLC S7-1500产生精确时间戳及各种数据处理的方法
在数据采集时,精准的相对时间是非常重要的。尤其是高速采集时,上位机的软件(尤其是windows系统里的软件)很难精准地确定信息的时刻。这时候,如果PLC能够在提供数据时,同时提供一个精准的时间标志(时间戳),将能极大地提高数据采集的计时准确性,并降低采集系统的复杂性。下面将介绍获取一个精确到微秒的Uint32时间戳的方法。虽然S7-1500已经支持64位的整型,但是,考虑到低端的PLC还不支持64位的整型,因此,此处选择相对通用的32位无符号整型。原创 2022-12-10 11:39:45 · 6041 阅读 · 0 评论 -
C# 字符串合并的高效方法(含源程序及测试结果)
字符串合并是信息处理和输出时,常常遇到的事情,本人对比了普通的“+”合并和Concat()方法,发现效率差别惊人,下面就是测试程序和结果原创 2022-09-28 08:50:10 · 1202 阅读 · 0 评论 -
C#基于当前时间,获取唯一识别号(ID)的方法
在软件开发里,我们常常要区别各个类似的对象,比如批量生成的多个变量,多个标注等等。在PLC-Recorder开发的过程中,ID号的生成方法也经过了多次优化,才终于稳定下来,能够基于当前时间,生成不重复的ID号(突发需要量不是很大时有效),分享给大家,让朋友们也少走些弯路。...原创 2022-06-30 10:20:55 · 2098 阅读 · 0 评论 -
C#多维数组的属性获取方法及操作注意
C#提供了多维数组的各种属性获取方法,但是其表达形式与我们的习惯不尽相同,因此,也是花了一些脑筋,写了一些代码测试才搞明白的,现分享给大家。原创 2022-06-26 12:25:33 · 1708 阅读 · 0 评论 -
如何打开PLC-Recorder记录的.ihm数据文件,获取数据?可以借助HMFiles(SDK)库
以前,想要获取PLC-Recorder记录的数据只有两种方法:在线转发,或者离线导出.csv文件。近期,官方发布了HMFiles组件,可以直接打开.ihm数据文件,获取所有的历史数据。有了这个组件,朋友们就可以自己开发程序,自行获取历史数据,进行二次处理了。1、主要功能这个组件是基于.net4.0的动态链接库,可以嵌入.net项目中进行使用。主要功能:打开.ihm数据文件,查询各变量的数据。 将HIOKI录波仪导出的txt数据文件转换成.ihm数据文件。2、简单应用1)添加库引用,并在程原创 2022-03-06 14:21:14 · 679 阅读 · 0 评论 -
Win10系统下.net framework 3.5安装失败报错0x800F0954的折腾过程和最终解决方法
前几天,有朋友说PLC-Recorder软件在他们的两台配置一样的DELL电脑上都没有办法启动(双击无反应),他是WIN10系统。我建议他们检查文件是否齐全、.net是否开启,他检查后,都没有发现问题,还是没有任何反应,后来也不理我了。后来,我想,自己也是WIN10系统,自己将.net全部停用试试不就知道了吗?我们软件是基于.net4.0的,因此,.net应该是必须的。说干就干!通过以下步骤找到.net组件,先关闭了.net4.8,PLC-Recorder竟然还是欢快地运行,一点不受影响。这不科学呀,于原创 2022-01-24 11:24:42 · 12489 阅读 · 4 评论 -
C# 如何在子控件(panel)里打开新窗体(form)及信息实时互传
开发中碰到一个问题,一个窗体里需要集成比较多的功能,并且这种是相互独立的。为了降低主窗体的复杂性,就想到在主窗体的控件里直接打开子窗体的方式。这样,相关的控件和逻辑就可以集成在各自的子窗体里,主窗体就可以简单了。由于子窗体是原来的弹出窗口,因此,想直接打开,但是,发现子窗口无法随主窗口改变大小。查了很多资料也没有找到所以然,后来自己逐个测试才发现窍门,解决了子窗体大小随动的问题,子窗体的几个关键参数:WindowState=Normal; ControlBox=False;//不显示窗体操作的按钮原创 2021-12-27 10:35:19 · 5224 阅读 · 0 评论 -
C#各级控件中,事件响应的顺序试验结果
在进行Windows窗体应用开发中,为了实现界面的布局,难免会用到各种容器,有时候需要根据窗口大小改变,动态调整一些内容的大小,这时候就需要知道各级控件的属性更改顺序及事件响应顺序,否则,计算就可能出错。我利用splitContainer、Panel、chart做了一个试验,记录了窗口改变时,各控件属性变化顺序,以及SizeChanged事件的执行顺序:1、控件的布置结构:2、主要代码: private void splitContainer1_SizeChanged(obje原创 2021-05-01 16:27:56 · 465 阅读 · 0 评论 -
汇川AM600 PLC及CODESYS数据采集的一点经验
本文介绍了对于汇川AM600及CODESYS控制器进行数据采集的一些注意事项,并介绍了PLC-Recorder录波软件已经实现的功能,供需要进行数据采集的朋友们进行参考。原创 2021-02-14 20:26:34 · 22434 阅读 · 1 评论 -
西门子STEP7、博图里的数据块(DB)编址规则
最近在为PLC-Recorder开发DB变量导入功能时,仔细分析了STEP7和博图里导出的数据块的结构,并重点分析了偏移地址计算的规则,分享给大家。原创 2021-02-04 12:20:57 · 17726 阅读 · 1 评论 -
西门子PLC内部的数据类型大全
西门子PLC的数据类型种类繁多,本文进行了收集,并指明了适用范围、长度,供需要进行数据采集和分析的朋友们参考,本表格整理自博图V14,不保证更高级版本不会新增数据类型,请使用中注意。原创 2021-01-31 10:38:06 · 27366 阅读 · 3 评论 -
C#里多媒体定时器功能实现及性能测试结果
Windows系统的调度时间片是15ms,且不稳定,这为精确、快速的任务带来很多痛苦。在没有硬件中断源的情况下,多媒体定时器还真是一个不错的选择,我找到了一个C#下可以用的多媒体定时器的库(下载地址在文末),进行了1ms周期的测试,并用c#的timer控件进行了对比测试,差别非常大(详见对比数据)。原创 2021-01-08 23:05:27 · 2022 阅读 · 0 评论 -
从数据点位置的查找方法,体验算法的强大力量(二分法)
在优化录波软件PLC-Recorder的离线分析软件ANA时,采用了常用的二分法替代掉原来的逐点搜索,运算时间从上百微秒锐减到数微秒。合理的算法能够改善软件的性能。文章给出了改进前后的对比,及实现的源代码。原创 2020-12-13 13:34:46 · 475 阅读 · 0 评论 -
PLC数据采集时的数据安全,以及PLC-Recorder对于数据的暂存和恢复功能
进行PLC数据采集时,当PLC数据采集到的数据不是直接存数据库或者转发出去时,就需要本地文件存储。实际上,文件存储是专业录波软件都会采取的方式,原因有两个:1、自己的文件存储,就不需要依赖数据库,软件部署很方便;2、当数据采集的频度和量都很高时,常规的数据库很难来得及响应。因此,像PLC-ANALYZER、IBA PDA、PLC-Recorder这样的专业录波软件都是将数据存储在指定路径的文件里。多长时间存储一个文件呢?太短了,比如5分钟一个文件,用户查询历史的时候就非常麻烦,要打开很多文件。太长了,比原创 2020-12-06 16:57:27 · 1482 阅读 · 0 评论 -
C#对话框窗体里的特殊机制
在编程时发现C#对换框窗体的特殊机制,导致了按钮的程序执行异常,测试和说明如下:原创 2020-12-01 15:52:48 · 375 阅读 · 1 评论 -
C#用逆波兰算法实现脚本的解析和计算,支持外部变量,已经商用
已经商用的逆波兰脚本解析源代码。原创 2020-08-03 12:41:38 · 878 阅读 · 1 评论 -
如何为工业客户构建低成本的PLC数据采集系统?
在工业的信息化、智能化,甚至工业4.0的大潮中,数据是第一要素,以往构建过程数据采集系统,需要高昂的成本,这也限制了其应用范围。国产的录波软件PLCRecorder则极大低拉低了系统构建的成本,为过程数据的获取提供了新的可能。原创 2020-08-02 11:32:16 · 2756 阅读 · 2 评论 -
C#去除字符串中的不可见内容(改正)
C#去除字符串中的不可见内容(依据网友经验,并进行了改正)原创 2020-07-31 23:48:18 · 2585 阅读 · 0 评论 -
C#将treeview节点拖入richtextbox的方法
我开发PLC-Recorder的时候要将treeview节点拖入richtextbox遇到了很多问题,网友的方法也不见效,始终不能很好地实现拖拽功能。下面是我摸索出的解决方案:原创 2020-07-31 09:32:30 · 387 阅读 · 0 评论 -
PLC数据采集的方法小结及成本比较
在工业的信息化、智能化,甚至工业4.0的大潮中,很多高级算法都是由上位机、云来实现,那么PLC数据采集是最基本的前提条件之一。面对这种需求,新的PLC大都开始支持以太网(以前的串口局限性太大了),有的甚至在CPU上直接设置以太网接口,编程,数据传输,都可以通过这个端口来搞定,不再需要增加一个以太网接口卡。硬件有了,要实现数据的采集,还需要软件,从软件上来说,实现方式大概有以下几种:1、PLC编程,与外部建立以太网连接,通过收发指令进行数据交换:为了实现这种方式,可能需要通过硬件配置来建立连接原创 2020-07-09 14:12:02 · 10916 阅读 · 2 评论 -
基于PLC-Recorder数据转发功能的WebSocket客户端设计(高级语言及HTML,通讯内容为Json格式)
最近PLC-Recoder推出了V1.6.0版本,其最大的变化是增加了数据转发功能,所有能采集到的数据,都可以通过WebSocket和Json转发出去,为不熟悉PLC底层技术,且需要数据采集的朋友们提供了一个统一的接口。本文将介绍几种客户端创建方法。原创 2020-07-08 15:04:49 · 2789 阅读 · 0 评论 -
C#位操作的内存占用和效率比较:bool数组、BitArray和byte数组
为了选择高效的位操作方式,对于bool数组、BitArray和byte数组进行了对比测试,结论如下:字节数组的直接操作是内存占用最小,速度最快发方法。原创 2020-04-30 21:49:44 · 2413 阅读 · 1 评论