kv2004 发表于 2020-4-18 02:16:26

一个构造PC端 组态软件 的方案:用 PCHMI

本帖最后由 kv2004 于 2020-4-18 02:20 编辑

不想花太多时间,弄一个PC串口对接硬件的程序。
想到用组态,搜 免费 组态软件,搜到免费的“快控”,不过还需要发邮件申请,注册码,而且还和机器相关。感觉不理想。
再找其他的软件,也没找到太理想的。
然后,就搜国际上有什么免费的,SCM / SCADA / HMI ,也许是知道太少,关键词没选好,也没有找到合适的。
最后,在国内重新搜 PC HMI,终于找到 PCHMI (http://pchmi.com/)。试了一下,很容易很强大。

PCHMI首先需要有VS2017环境,微软官方正版免费的社区版就够了。花了两个多小时,连下载带自动安装。<安装时,“工作负载”选了前4个。其他也没有什么特殊费脑子的选择了>
然后连看了pchmi官网上的两三个视频,再有点基本的PLC的知识,就能立刻上手了。

我也是刚刚接触这个PCHMI,到现在也还没造出一个完整的程序,所以,也不清楚这个软件可能会有什么问题。
还有,官网上有群号,入群交流是需要掏380元的。用的好的,一定要回来交,感谢支持一下作者。

下面抄一下PCHMI官网的介绍:

PCHMI工业组态控件

   你还在用工业触摸屏吗?都在用PC做组态了!你不知道的事,其实用PC做HMI要比用传统触摸屏软件更简单。

  PCHMI严格的讲它并不是一款组态软件,也不是一款SCADA软件,而是一个基于.NET构架的DLL文件,开发者可以使用微软的Visual Studio将PCHMI.DLL加载到工具箱里面进行二次开发。开发者不用去学习那些没有用的脚本语言,借助Visual Studio对多语言的支持。比如:C#、VB、C++、F#、JS、J#、Python等。你只需要使用你最熟悉的那门语言,就可以对PCHMI进行复杂的二次开发。当然这不是PCHMI的初衷,作者已经将工业组态中最常用的功能进行了模块化封装。开发者只需要少量代码甚至不用写代码,通过对控件的拖拽就能完成一个复杂的组态软件的开发。不用专门去学PCHMI,开发过触摸屏软件的PLC工程师就可以直接上手使用。因为PCHMI的使用完全符合其它触摸屏软件的使用习惯。如果你使用过proface、威纶通、GT-Designer等触摸屏软件就能方便的切换到PCHMI上来。作者的目的是要让每一位PLC工程师都能够轻松的使用PCHMI在上位机上开发出组态软件,享受调试PLC和HMI都能在同一台电脑上带来的高效率和快感。
  想象一下,当你还在用工业触摸屏软件做组态的时候,每当要测试自己的程序的时候,你都得先把程序下到触摸屏里,然后跑到触摸屏那边去测试你的程序,稍微有点不合理你都得赶紧跑回自己的电脑去修改,然后就是重复前这两个过程。时间都浪费在上面了。如果你的HMI和PLC程序都在同一台电脑上监控调试,稍有觉得不爽的地方立即修改立即调试。
  当你开发稍微有点复杂的项目时,我说的是有上位机这块,比如MES,说实话现在只要有点规模的客户,那个不要求数据可追溯。通常的自动化设备公司都是至少要配两个写程序的,一个做PLC编程的,一个搞上位机的。告诉你沟通的效率是很不经济的,有多糟糕我就不多说了,我想说的是1+1不仅小于2,而且小于1。如果每一位PLC程序员都能把MES的工作做掉,不只是提高了效率的问题,人员配置成本也会降低很低。说不定哪天你那两位搞PLC和搞上位机的其中一位同事跳槽了,好了你就等着凉凉吧。我不知道你能不能看懂他的代码,反正我看别人的代码是比较吃力。PCHMI的设计初衷是尽量少用代码甚至不用打码,这样才能让程序具有更加的可复制性。软件的成本就是开发,利润就是复制。一个靠代码堆出来的程序可复制性极差。而且程序员最可悲的地方就是过段时间连自己都看不懂自己写的代码。更谈不上程序的管理和归档,一个程序如果不能让同事和新人来维护,对于公司来说恐怕是灾难性的。
  PCHMI生成的程序是直接被编译成EXE执行文件,运行效率高。不会像传统的组态软件还需要二次解析,并且在程序启动时还需要加载一大堆东西,明显的显得慢。而且还一言不合就报几个XXX文件已损坏错误。
  随着一体式工业电脑的逐渐成熟,以及工业电脑的价格越来越低,现在已经和普通工业触摸屏的价格差不多。相比传统工业触摸屏的太多缺陷,工业触摸屏逐渐会被工业电脑淘汰,再说现在哪家开发的设备,客户不要求带个扫描枪、打印机、相机、激光代码、数据存储、安装个第三方软件以及MES接口的功能。
  PCHMI除了包含常规触摸屏软件的功能,对MES的开发支持也很强大,开发者不需要写代码就能很方便的对接MES系统。
  想必你应该改也学习或用过了不少的组态软件,我当然知道其过程都是从入门到放弃,还有一部人在勉为其难的死扛。虽然各家的软件都有自己的特色,但是每当你发现有实现不了你的应用的时候。什么?找厂家?他会鸟你才怪。说实话用过市面上各种工控组态软件的朋友,都知道没有一款是能让自己满意的,不是这里实现不了就是那里要花钱购买。而且软件的更新严重滞后,稍微复杂点的功能你同样要借助第三方高级语言来实现,甚至很多软件还不支持第三方语言的支持。不同的PCHMI是基于.NET构架,一旦有满足不了你的地方你完全可以轻而易举的二次开发出你想要的功能。求人不如求己,自己能搞定的就尽量不要求别人。自己会了比什么都强!
  由于工业4.0以及中国制造2025的到来,很多PLC工程师早就看清了局势,很早就在开始学习一些高级语言比如:C#、python之类的。由于PLC工程师工种的特殊性质,PLC工程师不是在加班,就是在出差,要么就是在出差的路上。没有充足的时间也是事实。但是你知道吗很多PLC工程师连门都没有入就已经放弃了。主要原因是高级语言在工业上面的应用,不仅在学校里面不会教,而且外面的培训机构也没有专门教这方面的。更不用说网上的资料更是少之又少,所以给PLC工程师学习上位机编程增加了很多难度。而PCHMI的出现就是为了解决这方面的问题。PLC工程师可以先不用写代码就能完成基本的组态软件开发,等时间长了对整个编程环境有了更深入的了解,不再那么陌生和恐惧之后。再慢慢去尝试用代码来实现一些自己想要实现的功能,在这个过程中你会发现自己已经爱上了写代码的时候,恭喜你你已经成功了。
  很多用户可能会担心PCHMI的收费问题,这也正是我要告诉你的,PHCMI是完全免费的。使用者可以用于任何商业用途


最后是从官网下载的DLL,只是版本是1.0.0的,估计群里有更高版本。


qiqirachel 发表于 2020-4-18 02:49:46

可能是我的错觉,我总觉得直接用Python或者类似途径更快更直接,其他的都有些个曲线救国的感觉

qiqirachel 发表于 2020-4-18 02:50:26

我是说qt,或者类似的,个人现在直接用MATLAB。有serial port device

mfkiwl 发表于 2020-4-18 07:54:19

入群费还不便宜。估计是有技术支持?

kv2004 发表于 2020-4-18 08:18:12

qiqirachel 发表于 2020-4-18 02:50
我是说qt,或者类似的,个人现在直接用MATLAB。有serial port device

PCHMI适合没有一丁点编程能力的。PYTHON可要学一段时间。其他方面各有优缺点。

xinlege 发表于 2020-4-18 08:18:33

支持一下,有空研究一下

kv2004 发表于 2020-4-18 08:29:20

mfkiwl 发表于 2020-4-18 07:54
入群费还不便宜。估计是有技术支持?

不想入群也免费。我昨天才接触,暂时也没有入群打算。如果能用上,我想入群费不算高。

落叶知秋 发表于 2020-4-18 08:34:22

SCADA软件,可以去SourceForge和GitHub上直接搜关键词,有几个开源的
国内也有开源的,有一个基于VS环境的C#写的,SharpSCADA

rugaogary700308 发表于 2020-4-18 08:34:34

看样子不错。谢谢楼主告知。

shawn_bu 发表于 2020-4-18 08:42:15

不知道跟我直接用c#开发有啥区别?是多了一些dll里面自定义的控件么

honami520 发表于 2020-4-18 08:47:55

直接用组态王不就行了

kv2004 发表于 2020-4-18 09:14:56

shawn_bu 发表于 2020-4-18 08:42
不知道跟我直接用c#开发有啥区别?是多了一些dll里面自定义的控件么

我也不会C#。PCHMI只有一个DLL文件,放到系统的windows目录下面。把这个DLL拖到VS2007 C#项目的左侧的工具栏,就有很多控件了。下一步就是像普通组态软件一样,拖控件,配置。简单的项目不用写代码。想要更完善的程序,估计还是要会点C#的吧。比如,我想造一个能随便选择串口的程序,可能需要代码。

kv2004 发表于 2020-4-18 09:21:43

honami520 发表于 2020-4-18 08:47
直接用组态王不就行了

快控也是不错的,就是还得发邮件,和机器对应,估计只能装一台机器。

kv2004 发表于 2020-4-18 10:13:41

落叶知秋 发表于 2020-4-18 08:34
SCADA软件,可以去SourceForge和GitHub上直接搜关键词,有几个开源的
国内也有开源的,有一个基于VS环境的C ...

确实找到不少,可能还要学习C#或者其他语言,用在大一点的项目上最终效果也会相当不错。

落叶知秋 发表于 2020-4-18 10:22:37

kv2004 发表于 2020-4-18 10:13
确实找到不少,可能还要学习C#或者其他语言,用在大一点的项目上最终效果也会相当不错。 ...

如果是使用的话,就学一下脚本
如果是开发的话,C#和C++都建议学一下,C++难度会大些

ZHAOBAO511 发表于 2020-4-18 10:24:35

能和VB一样打包为EXE吗?是的话就了解一下,如果是纯粹的组态,没啥用的,很多都是机器上装源码和运行程序,破解简单的不能再简单了,组态王虽然能打包,运行测试时必须另一台机才可以,而且是假打包,把其它的运行EXE替换一下也可以运行,所以期待真打包的那种。

kv2004 发表于 2020-4-18 10:44:52

ZHAOBAO511 发表于 2020-4-18 10:24
能和VB一样打包为EXE吗?是的话就了解一下,如果是纯粹的组态,没啥用的,很多都是机器上装源码和运行程序 ...

能做成EXE文件,我想应该算是“纯粹的”软件了。把那个PCHMI.DLL也合并到EXE也是能做到(视频上那样演示的)。组态软件(配置7‘’屏的)我也是用过的,这个PCHMI配置参数是在VS2017环境里面,控件“属性”里配置,做简单的应用,还是相当方便的。

ZHAOBAO511 发表于 2020-4-18 10:48:49

刚试了一下,必须在C#下 用,VB 下用不了,也不封装测成OCX,C#安装大的很,而且真正会C#的人是看不上这个的

kv2004 发表于 2020-4-18 10:52:38

落叶知秋 发表于 2020-4-18 10:22
如果是使用的话,就学一下脚本
如果是开发的话,C#和C++都建议学一下,C++难度会大些 ...

C++ C# PYTHON QT 都是从入门到放弃。听说C#还好学些,以前用过VB。

kv2004 发表于 2020-4-18 11:13:32

ZHAOBAO511 发表于 2020-4-18 10:48
刚试了一下,必须在C#下 用,VB 下用不了,也不封装测成OCX,C#安装大的很,而且真正会C#的人是看不上这个 ...

是的,我花了两个多小时(家里网速慢),才装好VS2017免费的社区版,里面有VB。
VB也是能这样操作的:
0 新建 windows窗体应用(.Net.........
1 拖动事先放在windows里面的PCHMI.DLL文件,到左侧工具箱。就有了若干控件图标。
2 拖动工具箱里的CONFIG控件,到Form1,Form1下面就有了config1实例。
3 双击Form1空白地方,写入
   Config1.START(Me, System.Reflection.Assembly.GetExecutingAssembly().GetTypes(), 0)
   这里就出错了,不知道最后一个参数该怎样写,作者只给了C#的例子。
   提示是 “类型“Integer”的值无法转换为“PControl.AX””

   还有 Form1.Designer.vb 里面 Me.Config1.登录方式 = PCHMI.CONFIG.logtype.快速登录,我把他注释掉了,也提示一个错误。

反正除了这一个代码也不用写其他代码,VB环境搞不定,用C#就好了。

dtlz 发表于 2020-4-18 11:29:59

如果VB.NET下可以使用就很方便,毕竟VB稍为简单一些

ZHAOBAO511 发表于 2020-4-18 11:30:14

kv2004 发表于 2020-4-18 11:13
是的,我花了两个多小时(家里网速慢),才装好VS2017免费的社区版,里面有VB。
VB也是能这样操作的:
0 新 ...

还是要加.NET这个壳的,我说的是VB 桌面应用,直接就可以 运行,.NET加壳这个应用的人很有限的。

落叶知秋 发表于 2020-4-18 11:39:02

ZHAOBAO511 发表于 2020-4-18 10:24
能和VB一样打包为EXE吗?是的话就了解一下,如果是纯粹的组态,没啥用的,很多都是机器上装源码和运行程序 ...

这个功能理论上是可以做的,不过比较麻烦,要用编译器和链接器把生成的资源文件和代码文件再整一遍

kv2004 发表于 2020-4-18 11:43:13

ZHAOBAO511 发表于 2020-4-18 11:30
还是要加.NET这个壳的,我说的是VB 桌面应用,直接就可以 运行,.NET加壳这个应用的人很有限的。 ...

双击Form1以后,加上这个代码就不报错了,能在项目的bin目录下面看到EXE文件了,也能直接运行。我对这个VB环境也是初见(只有十几年前的VB的一点点印象)。
      Static A As PCHMI.PControl.AX
      Config1.START(Me, System.Reflection.Assembly.GetExecutingAssembly().GetTypes(), A)
我觉得,最后一个参数还是0比较好,只是我不知道怎样弄。
还有每次加入新的控件,系统就把这个注释打开了,还要重新注释掉。
       Me.Config1.登录方式 = PCHMI.CONFIG.logtype.快速登录

毕竟是1.0.0版的DLL。

ZHAOBAO511 发表于 2020-4-18 12:00:12

kv2004 发表于 2020-4-18 11:43
双击Form1以后,加上这个代码就不报错了,能在项目的bin目录下面看到EXE文件了,也能直接运行。我对这个V ...

已经放弃了,用习惯了VB ,不是VB.NET,C#更难用,建议改成OCX形式,到时候再试试。{:lol:}

kv2004 发表于 2020-4-18 12:09:14

kv2004 发表于 2020-4-18 11:43
双击Form1以后,加上这个代码就不报错了,能在项目的bin目录下面看到EXE文件了,也能直接运行。我对这个V ...

直接写成 Me.Config1.登录方式 = 1,这个VB .net也是,明明没有那么多重复的名称,却非得报个错。
1 枚举是 快速登录,0 枚举是 用户登录,就这两个值。

dongwang_fl 发表于 2020-4-18 17:18:22

其实这个还是不错的。如果开源就好 了。

huike 发表于 2020-4-18 21:01:06

这个.DLL有问题吗?我试了一下,放了一个串口控件,居然没有打开串口。也就是这里的串口一点用都没有。

kv2004 发表于 2020-4-18 22:43:42

huike 发表于 2020-4-18 21:01
这个.DLL有问题吗?我试了一下,放了一个串口控件,居然没有打开串口。也就是这里的串口一点用都没有。 ...

官网版本是1.0.0的,版本日期是2019-12-31。

我试过modbusRTU没问题,
用的工具是:虚拟串口(虚拟出了两个串口对 COM5/6 COM7/8),Modbus Slave(模拟ModbusRTU 从端)。
过程是:1 配置config1的通讯配置属性,测试用到两个串口,
                ANY_MODBUS_RTU;COM=5,115200,0,8,1;SN=0;LargeEnd=False;IS02MOD=False;YOFFSET=0;MOFFSET=2048;XBNAME=X+0-10+.+0-F;YBNAME=Y+0-10+.+0-F;MBNAME=M+0-10+.+0-F;DBNAME=D+0-10+.+0-F
                ANY_MODBUS_RTU;COM=7,115200,0,8,1;SN=1;LargeEnd=False;IS02MOD=False;YOFFSET=0;MOFFSET=2048;XBNAME=X+0-10+.+0-F;YBNAME=Y+0-10+.+0-F;MBNAME=M+0-10+.+0-F;DBNAME=D+0-10+.+0-F
             2 在Form1上添加两个,数据显示器,配置 PCHMI选项卡中的,PLC属性为 0/1;监控地址属性为:D0
             3 打开两个Modbus Slave(一个打开COM6,另一个打开COM8)
正常,双向都正常:从主到从 和 从从到主(03功能码) 都正常,而且地址连续时会使用连读。

目前没有找到的功能是:主 用一个串口 访问 从 -----靠地址区分。现在PLC地址都固定是地址1,所以,访问几台设备就需要几个COM口。不知道哪个属性 管 PLC地址!

kv2004 发表于 2020-4-18 22:57:03

huike 发表于 2020-4-18 21:01
这个.DLL有问题吗?我试了一下,放了一个串口控件,居然没有打开串口。也就是这里的串口一点用都没有。 ...

         一个串口下面挂一个modbusRTU从,我试过是能双向更新数据的。
但是,一个串口下面挂多个相同的从,
   或,一个串口下面挂多个不同的从,
我没有找到怎样实现。估计要通过config1的通讯设置参数来实现。
视频里,没有发现作者对这方面的介绍。

kxb 发表于 2020-4-19 08:44:54

谢谢分享

kv2004 发表于 2020-4-19 11:00:44

PCHMI一时不知道怎么做到 “用一个串口,做一主多从”,目前试用“一个串口,做一主一从”还是没问题的。

又根据4楼 落叶知秋 的提示,找到了 AdvancedHMI 。
在他官网 https://www.advancedhmi.com/ 能花钱买到这个源代码,现在价格是0元。

也是用免费的VS2017社区版就能解决。
按照步骤,不用一个代码,也能做成EXE。
和上面的PCHMI相似,
把AdvancedHMIDrivers.dll拖到工具栏,就有了各种通讯方式(目前我只关心ModbusRtu)的图标
把AdvancedHMIControls.dll拖到工具栏,就有了各种显示控制小零件的图标
我拖了两个ModbusRTUCom到中间那个黑画面里,就有了两个从设备的支持,两个控件的属性中,把串口都设置成一样,把站地址设置不同,这样就能用一个串口,同时访问两个从服务了。
再拖两个DigitalPaneMeter到画面中,他的属性中,com组件选择 上面的其中一个,PLC键盘地址 和 PLC文本地址 和 PLC数据地址 和 PLC(本控件是否)可视地址 的写法是 比如:40005,代表用modbus功能码 3 ,地址是5。
然后点运行,不用添任何代码。

1 用一个串口,做一主多从,没问题。
2 从机不同也是没问题的。

huike 发表于 2020-4-19 11:11:16

kv2004 发表于 2020-4-18 22:57
一个串口下面挂一个modbusRTU从,我试过是能双向更新数据的。
但是,一个串口下面挂多个相同的 ...

谢谢,地址改成DXX就可以了。汗呢,我看视频写的DTXXX,一直没反应。
这个要深入确实要花380。视频只大概讲个东西。

jjj 发表于 2020-4-19 11:14:11

感觉很不错,先收藏了

kv2004 发表于 2020-4-19 11:19:29

huike 发表于 2020-4-19 11:11
谢谢,地址改成DXX就可以了。汗呢,我看视频写的DTXXX,一直没反应。
这个要深入确实要花380。视频只大概 ...

是的,可能我也忽略了,没有说明白,我是纯数字,字母+数字,都试了一遍。再者他视频上的DLL版本明显比他网站上提供出来的版本高。

还可以看看我32楼说的AdvancedHMI。比PCHMI好在,我确认能够“一主多从”。 会编程的还可以任性改改源代码(我是不会)。

kinsno 发表于 2020-4-19 11:27:03

qiqirachel 发表于 2020-4-18 02:50
我是说qt,或者类似的,个人现在直接用MATLAB。有serial port device

你用PY+QT怎么把生成的程序导入下位机固件里去?没得搞啊。。

他这个我猜是用上位机做好一个界面,然后文件下载到下位机里,然后下位机就显示 。。。

kinsno 发表于 2020-4-19 11:28:06

kv2004 发表于 2020-4-18 22:57
一个串口下面挂一个modbusRTU从,我试过是能双向更新数据的。
但是,一个串口下面挂多个相同的 ...

我想说,你下位机用啥? 有上位机生成HMI界面,下位机呢怎么对应的解析上位机生成的数据,从而还原显示出界面。。




cqfeiyu 发表于 2020-4-19 11:30:22

labview它不香吗?

kv2004 发表于 2020-4-19 11:44:43

kinsno 发表于 2020-4-19 11:27
你用PY+QT怎么把生成的程序导入下位机固件里去?没得搞啊。。

他这个我猜是用上位机做好一个界面,然后 ...

不是这样的。
组态软件,可能我知道的也不多,我就把能通过简单的配置就弄成的软件,当作组态软件。这个配置是越少越好,配置数据,配置画面,尽量少的专业编程知识,尽量少的编程。上面的组态是在PC机上运行的。可能很多情况都是在计算机上配置好,最终要在某个7寸/10寸/n寸/文本 ,工控显示屏上 运行。

kv2004 发表于 2020-4-19 11:48:13

cqfeiyu 发表于 2020-4-19 11:30
labview它不香吗?

不香。
买过好几本厚厚的书,也安装过,搞得我的机器特别慢。
没入门,从扒窗户眼到放弃。

cdust 发表于 2020-4-19 11:55:12

有没有什么好的工控机推荐,小点的,尤其是触摸显示器。

cqfeiyu 发表于 2020-4-19 11:56:03

学labview就是按教程连连线就可以了,自带范例多多

kv2004 发表于 2020-4-19 12:01:28

cqfeiyu 发表于 2020-4-19 11:56
学labview就是按教程连连线就可以了,自带范例多多

说的简单,我那厚厚的几本书可告诉我没那么容易。

kinsno 发表于 2020-4-19 12:05:47

kv2004 发表于 2020-4-19 11:44
不是这样的。
组态软件,可能我知道的也不多,我就把能通过简单的配置就弄成的软件,当作组态软件。这个 ...

是的,上位机配置好,你下位机反解析显示啊,,,你现在这个光有上位机的DLL,那下位机对应固件呢?下位机咋显示呢?

cqfeiyu 发表于 2020-4-19 12:14:15

kv2004 发表于 2020-4-19 12:01
说的简单,我那厚厚的几本书可告诉我没那么容易。

我就是从串口入手的,labview学会了就不想敲代码了。

gxay2000 发表于 2020-4-19 12:15:00

matlab labview 都很好啊!

kv2004 发表于 2020-4-19 12:18:20

kinsno 发表于 2020-4-19 12:05
是的,上位机配置好,你下位机反解析显示啊,,,你现在这个光有上位机的DLL,那下位机对应固件呢?下 ...

感觉你可能没有理解这个方案。可能你需要先简单了解一下modbus协议。

kinsno 发表于 2020-4-19 12:39:58

kv2004 发表于 2020-4-19 12:18
感觉你可能没有理解这个方案。可能你需要先简单了解一下modbus协议。

你问问这个坛子里有人不懂modbus的吗?
本来想咨询一下这个方案,so, 还是从咨询到放弃系列吧。。哈哈。。

glm2134 发表于 2020-12-3 15:06:28

我连三菱FX1N。没成功

gaolf_2012 发表于 2020-12-3 19:05:40

有空还真想试试

asizdh 发表于 2021-3-22 22:54:45

看了下,还没曲线功能

waterx3 发表于 2021-5-4 15:19:57

WIN10,VS2019社区版,PCHMI VER3.7安装后不可用怎么解决?框架版本不对?

lnso 发表于 2021-5-4 15:34:21

组态王......

rugaogary700308 发表于 2021-5-4 16:53:59

我连台达的DVP-EH3没有成功。

7839502 发表于 2021-9-15 14:11:26

试试看,这种新的组态方式。
页: [1]
查看完整版本: 一个构造PC端 组态软件 的方案:用 PCHMI