手机app控制PLC方案-仅限局域网
前面有视频讲到了用浏览器可以监控PLC的变量的方法,如下图所示,将PLC的IP地址192.168.10.6映射到了一个外网地址,随意一台上网的手机或者电脑都可以查看对应变量表的数值。
后面一直琢磨怎么能让手机能够控制PLC呢?web 服务器可以自定义网页,但是需要自己开发网页,我不会啊,然后就想到了用MIT APP开发APP软件,具体的使用编程有兴趣可以去试试,拖拽式,很适合没有C语言基础的小白,我不细讲了。
受限于该开发平台限制,合适使用的通讯方式只有TCP连接,PLC做服务器,app做客户端。
PLC的配置如下,开放2001端口连接
app的客户端配置
然后就是数据处理,首先是浮点数处理,因为这个开发平台是不能处理浮点数的,也没有各种进制转换,所以只有PLC那边将所用数据转成字符串形式发送,所以它只适合做简单控制处理。
如上图,将压力28.41转成字符传2841
将Q 点状态转成ON或者OFF,(这里0和1也行),后续在app处理
如下图,就是app 收到的字符传,收到内容在app后台编程截取字符加上小数点就行
部分代码如下,截取97和99开始的各两个字符,加上小数点显示即可
就把2487转成了24.87
下图就是输入输出的转态和控制开关,绿色标识为ON中,蓝色标识OFF中,也是app 接收到ON,OFF进行编程处理
开关量状态部分代码如下,接收到OFF设置背景延时为蓝,否则背景颜色为绿,(其实发送01好像节省PLC地址,我懒得改了。)
处理完读取然后是控制指令,需要如果需要设置浮点数的话,需要在app 设置字符串,然后PLC转换成浮点数,我就没搞了,浪费时间,讲下开关量控制吧。
我给每个开关设置预留一个字符位置,点击就取反,总共需要10个控制点位+一个总开关
比如SV4106对应第五个字符,SV4203对应的第8个字符位置
点击一下就取反,然后刷新数据发送
将起始符+10个开关状态+总开关状态合并合成一串字符,发送到PLC
PLC收到就是&B开头的一串字符串,如下,然后进行数据处理
PLC如下处理,手动下,链接状态正常,确认开始符后,对应字符=1就执行输出
通过以上方式就实现手机APP控制PLC,缺点是数据处理麻烦,不适合需要设置比较多参数的项目,最适合手动调试一些开关量。
还有个缺点是tcp 客户端通讯是能适用于局域网,外网是不支持的,后续研究下外网吧。
手机APP和PLC通讯-外网方式
上篇文章提到手机APP通过TCP局域网的方式和PLC通讯,就在考虑外网如何实现。
查询了很多资料,主要是通过物联网协议MQTT通讯实现。
一,实现外网控制的几种方式
1,西门子S7-1200或者1500系列PLC本身支持MQTT协议的
PLC连接外网的情况下,通过对应库做MQTT客户端连接到服务器,手机APP再连接MQTT服务器,实现数据交换,这个我摸索了好久,没摸索明白,就放弃了。
2,对于不支持MQTT协议的PLC可以通过物联网网关实现,购买一个有人或者巨控之类的网关,这个方式相对简单,手机端和云端APP都是厂家开发好的,缺点是价格贵些。
3,第三种方式就我用的方式,简单描述就是一台可以上网的电脑,一边连着PLC,一边做MQTT客户端,和手机APP连到通一个MQTT服务器进行通讯,如下图
手机APP使用MIT APP平台开发,上文有介绍,各位可以看看。
而我用云服务器代替了电脑,想练习的朋友不用云服务器,用普通电脑也行的,PLC连到了蒲公英路由器,通过蒲公英的异地组网功能实现云服务和PLC连接,如下图
云主机(随意一台电脑也行,一下用电脑代替),怎样接PLC的数据发送到手机呢?这里只要用到一个工具 Node-red,如下
它是完全免费的,可以一边读写PLC数据一边订阅和发布MQTT消息,等同于免费物联网网关。
二,简单程序编写
1,node-red和PLC通讯
node-red怎么安装各位自己搜索就好,或者找我要链接,这里不多讲啦,先讲Node-red怎么和PLC通讯,安装完毕后直接浏览器输入 HTTP://localhost:1880,或者127.0.0.1:1880进入编程界面,刚安装的是没有和西门子PLC通讯的插件的
如上图,设置进入控制板,然后搜索s7,添加S7的PLC的插件,安装完毕就有读取和输出的图标,拖出来用就行。
下面是配置PLC的通讯参数
需要读取的点
地址格式参考这个网站 https://www.mqtt.cn/1245.html
下面是写入PLC的数据,通讯参数和读取的一样
地址是一串字符串,处理方式和上文TCP局域网的处理一样。
发给PLC,PLC收到的数据是
输出为1的位置就表示对应的Q输出
2.node-red和MQTT服务器的通讯
MQTT服务器用的这个免费的
地址和端口设置好,主题设置为hyxhyx
这样,node-red就会将我需要的数据按周期发送到MQTT服务器,IOData就是对应Q的输出状态,1标识ON中,0标识OFF 中
下面是用MQTT客户端测试数据是否正常发出,如下图订阅的主题是hyxhyx,能正常收到数据
下图是订阅一个主题为"hyxhyx1'的消息,
是将手机APP发送的数据传到MQTT服务器,MQTT服务再给node-red,node-red将数据写入PLC的地址 DB99里面的0开始的地址,然后PLC处理数据
3,PLC和手机APP处理
上面大家也看明白了,node-red,MQTT服务器客户端,都是中转,为了让APP能和PLC能进行数据交换,下面简单介绍PLC数据处理。
PLC传输到APP
浮点数数据都是转字符的,开关也是字符表,0表示OFF中,1表示ON中
下面是PLC收到的数据,一大串字符,比如PT4101的压力是28.387
如下图,搜索整个字符串PT4101的位置,然后提取出来,
开关量数据一样
这是读取的PLC数据,
下面看看控制Q点开关如何编写
点击取反
所有内容合成一串
合成一串后以"hyxhyx1"主题发布
订阅主图hyxhyx1测试
PLC收到的内容
程序判断是字符1输出
以上是简单的控制,实际使用肯定需要加一些保护,比如心跳检测,APP是否和PLC通讯上等考虑。
相关问答
plc的TERM什么意思_作业帮
[最佳回答]TERM模式保持PLC原有的运行状态,以前是不在TERM模式不能通过连接的PC机更改PLC的运行状态,也就是说现在的PLC没有这个TERM,只有RUN和STOP.不过PLC处...
visionpro可以用什么app?
例如,您可以使用CognexExplorer软件来查看和管理VisionPro系统和图像库。CognexDesigner软件可用于创建机器视觉应用程序,它有一个GUI,可以轻松设置常见机...
尊龙新版手机app下载(中国)官方网站·IOS/APP下载/APP_微思
🚈尊龙新版手机app下载🉑支持:64/128bit🖤是一款简单易用的下载工具,适用于mac...Aprogrammablelogiccontroller(PLC),orprogram...
主程序和子程序是怎么上传到plc的?
主程序和子程序通常通过以下方法上传到PLC:1.使用PLC编程软件:PLC编程软件通常提供了上传和下载程序的功能,并通过连接电缆将PLC与计算机连接在一起。用户可...
Arduino可不可以记录plc产生的数据并传给手机app?
可以实现。这里的核心是设计并实现数据通讯的方式,1.电动机的自动控制是由PLC完成的,所有的数据都在PLC中。2.想通过手机APP查看或调整PLC数据库中的数据,...
西门子plc怎样跟手机通信?
西门子PLC可以通过模块/硬件/软件等连接方式,通过手机或移动设备与其连接通信。比如西门子的S7-1200CPU,它可以通过以太网/WIFI和GPRS模块连接手机,或者使用...
爱赢app下载安装(官方)最新IOS//手机版APP下载_微思
🤒爱赢app下载安装💋支持:64/128bit🔝是芒果TV旗下的一款基于Macos平台使用的视频播放器,专门提供湖南卫视丰富内容的在线点播,并支持主流音视频格式的本地播放...
PLC程序中,手动程序和自动程序必须()A、自锁B、互锁C、保持...
[最佳回答]PLC程序中,手动程序和自动程序必须(B)题目做过,是正确的!请予采纳
怎么检测plc编程?
下载并安装PLC学习应用软件FX-TRN-BEG-CL-feI,进行程序输入,使用输入按钮FBI,输出显示灯YO,运行自己的编制程序,仿真并验证程序所实现的控制功能:1)按下FBI...
新型PLC控制系统包括哪些?
新型PLC控制系统主要包括以下几个方面:硬件系统:包括中央处理器、存储器、输入输出接口、电源等。其中,中央处理器是PLC控制系统的核心,负责执行用户程序和控...