MQTT协议网关网口连接西门子SMART200PLC操作说明v1.4
目录
一. 使用流程
二. 准备工作
2.1 需要准备如下物品
2.2 LF220网关准备工作
2.3 PLC准备工作
2.4 电脑的准备工作
2.5 MQTT服务器准备工作
三. 阿里云IoT平台配置步骤
3.1 创建产品
3.2 添加设备
3.3 配置阿里云IoT平台物模型
3.4 获取连接阿里云IoT平台的参数
四. MQTT网关登陆平台配置步骤
4.1 登录
4.2 网关概况
4.3 MQTT连接配置
4.4 驱动管理
4.5 变量管理
五. 数据上报和写入配置
5.1 数据上报配置设置
5.2 写变量配置
六. 其他功能
七. 注意事项
前言:MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议的特点是轻量、简单、开放和易于实现的,同时,西门子PLC广泛应于工业控制领域,是一款性能高、稳定性强的PLC设备。
此文档将介绍如何使用MQTT协议网关串口连接西门子200SMART PLC,将PLC的数据通过MQTT协议传输到阿里云MQTT数据平台,用户可以在阿里云的MQTT台上实时接收到200SMART PLC的数据,实现将PLC数据上云,远程监控数据的功能。
流程如下,首次使用网关按照以下流程就可以实现将的PLC数据上传到阿里云的MQTT服务器,实现数据采集。
下文将按照此流程分步进行介绍说明。
1) 西门子200SMART PLC一台
2) MQTT协议网关一台,天线和电源适配器(以下用LF220作为实例)。
3) SIM卡一张,有流量,大卡(移动,联通或者电信卡)。
4) 联网电脑一台(WinXP/Win7/Win8/Win10操作系统)。
5) 能登录阿里云的账号(本文以新开通的账号为例)。
6) USB转RS232线、网线、电工工具、导线若干。
网关相关技术参数与使用说明,可参考《LF220边缘计算网关使用手册V1.1》。
保证网关可以正常联网,可通过4G卡(移动/联通/电信流量卡,大卡)联网(需接上随网关附带的天线)或通过网线联网(需将路由器出来的网线接到网关的WAN口);
网关接12V或24V直流电源,上电。(注意,电源正负极不要接反)。
2.2 PLC准备工作
PLC连接电源(注意电源是24VDC还是220VAC),将PLC网口和LF220的LAN口用网线连接起来。
电脑安装“蓝蜂MQTT网关配置工具压缩包”。
进入蓝蜂官网(https://www.lanfengkeji.com/),点击【资源中心】→【技术手册】→【蓝蜂MQTT网关配置工具压缩包】,如图:
※本客户端为免安装客户端,下载后请使用解压软件进行解压缩操作,打开解压缩后的文件夹,双击“蓝蜂MQTT网关配置工具.exe”文件,即可启动蓝蜂MQTT网关配置工具。
使用方式:启动蓝蜂MQTT网关配置工具,会开启命令行窗口并启动电脑内默认浏览器,在浏览器内进行配置操作,请勿关闭已打开的命令行窗口,或修改浏览器内地址,否则将无法正常使用配置工具。
推荐浏览器:Chrome浏览器,Edge浏览器,360浏览器。
不推荐浏览器:不推荐使用IE浏览器,火狐浏览器,世界之窗浏览器。
2.5 MQTT服务器准备工作
需要准备一台MQTT服务器,实体服务器、云服务器(阿里云、华为云等)均可。使用云服务器,需要配置网关的MQTT上报脚本,必须要满足云服务器的格式。
本文以阿里云服务器介绍。
进入阿里云IoT平台官网(https://www.aliyun.com/),登录账号,然后点击右上角控制台。
进入控制台后,选择【产品与服务】→【物联网平台】。或直接搜索“物联网平台”。
注:第一次使用阿里云 IoT 平台物联网服务器需要先开通服务才能使用,跟随界面提示点击即可。
这样就可以进入阿里云的物联网平台。“公众实例”平台是免费的。
成功登陆阿里云IoT平台以后,需要进行配置,按照如下步骤操作。
3.1 创建产品
点击实例,可进入实例详情,点击【设备管理】→【产品】→【创建产品】,如图。
【产品名称】:可自定义填写,会在“设备所属产品”中进行展示。
【所属品类】:本案例选择自定义品类,自定义功能。标准品类时,可选择与自己产品设备相近的模型,选择后系统可自动为您创建必选功能,也可根据需要添加可选功能和自定义功能。
【节点类型】:选择直连设备
【联网方式】:蜂窝(2G/3G/4G/5G)
【数据格式】:ICA标准数据格式(Alink JSON)
【校验类型】和【认证方式】保持默认即可
3.2 添加设备
创建产品完成后,点击确认,可进行添加设备,点击“前往添加”。
【DeviceName】建议填写蓝蜂网关sn编号,可方便后续对配置文件进行导入导出操作,也可以自定义名称。
【备注】可不写。
完成后点击【确认】按钮后,可在设备列表中看到添加的设备。
点击【查看】按钮,可查看设备的连接参数以及其他详细信息。
【DeviceName】和【ProductKey】需要记录下来,在之后的配置过程中会用到。
3.3 配置阿里云IoT平台物模型
此步骤类似于在平台创建变量。只有添加了变量以后,平台才会将这些数据进行展示。
在阿里云IoT平台,点击【产品】,找到我们刚刚创建的产品,点击查看按钮,如图:
进入产品中,点击【功能定义】→【编辑草稿】。
进入编辑草稿页面,点击【添加自定义功能】,可根据自己需求进行变量创建。
这里我们添加属性,添加温度,湿度和开关三个变量,如图:
注意:数据类型需要根据设备每个属性的实际情况进行选择,在后面使用蓝蜂MQTT网关配置工具配置时,需要与之进行匹配。
区别于EMCP物联网云平台,此处不需要填写变量的地址,数据是根据“标识符”来展示的。建议在创建变量后将创建的“变量名称”、“标识符”、“数据类型”记录下来,如下表。在之后的蓝蜂MQTT网关配置工具中会用到。
变量名称 | 标识符 | 数据类型 |
温度 | Temperature | int32(32位整形) |
湿度 | Humidity | int32(32位整形) |
开关 | Switch | Bool(开关量) |
添加完成后,列表中可看到我们添加的3个属性,点击左下角发布上线。
注:
- 如果想要修改创建好的功能类型,点击编辑草稿即可。
- 如果想要创建新的模块(类似于变量的分组)点击编辑草稿→添加模块即可。
- 每个产品中可以有多个设备,共用所有的模块(变量)信息。举例:我有10台设备在同一个产品下,默认模块中设置了3个变量。在通讯正常时,10台设备都会采集这3个相同的变量进行展示。
3.4 获取连接阿里云IoT平台的参数
点击【设备】,找到刚刚创建的设备,点击后方的【查看】如图
非常重要。在后面使用蓝蜂MQTT网关配置工具配置网关登陆时(4.3节处)需要按照此处信息填写。这个界面刷新后会变化,建议在配置网关时打开,复制粘贴即可。
至此,按照如上步骤,对于阿里云平台的设置就完成了。
总结:
- 关于变量:在阿里云平台中创建变量完成后,必须要知道设备的“DeviceName”、“ProductKey”、“变量名称”、“标识符”、“数据类型”。
- 关于MQTT连接参数:非常重要,此为网关登录阿里云IoT平台的参数。
- MQTT网关登陆平台配置步骤
- 4.1 登录
MQTT网关支持本地串口配置和远程无线配置两种方式连接网关进行配置。
※本地串口配置方式
使用本地串口配置方式,如图:
使用232串口进行本地配置,将网关的RS232口使用USB转232线接到电脑上,填写配置参数,包括选择通讯口,波特率,数据位,数据校验,停止位。默认参数为115200,8,无,1。
【读取网关串口参数】:如果对于串口参数并不了解,可点击“读取网关串口参数”按钮,客户端会主动搜索并填入已选中的串口的参数。
【记住配置】:点击“记住配置”按钮后,会记住当前配置,避免每次进入时需要重新配置的问题,再次进入时可直接进行连接操作。
点击“立即连接”按钮,可进入网关配置工具进行配置。
※远程无线配置方式
当第一次拿到设备时,网关内部默认服务器为蓝蜂的MQTT服务器,使用“远程无线配置”可直接通过蓝蜂MQTT服务器对网关进行远程配置,修改网关参数。
需填写对应的参数:
【网关SN码】:网关SN码必须为要连接的目标网关。SN码位于网关机身。
【客户端id】:电脑登录MQTT服务器的ID,随机生成,也可以自行填写,最多200个字符,不能与其他设备设置的客户端id重复。
【IP/域名】:蓝蜂MQTT服务器网址为110.249.137.42
【端口】: 蓝蜂MQTT服务器端口号为1883
其余项目不需要修改,连接成功后即可进入网关配置界面对网关设置进行修改。
注意,远程无线配置功能对于一般实体MQTT服务器来说可以直接使用,只需要填写好对应MQTT服务器参数即可进行远程无线配置。针对于阿里云、腾讯云等部分有限制的MQTT服务器来讲,此功能不建议使用。
4.2 网关概况
当连接成功后,即可进入网关配置页面,在此界面中可以查看到网关的基本信息、资源使用情况、服务器连接状态等,同时也可以对网关进行相应的配置。
关于网关基本信息的具体介绍,见《蓝蜂MQTT网关配置工具使用说明》第4.1节。
注意:LF220最多支持添加2000个变量
4.3 MQTT连接配置
MQTT配置页面可用于填写MQTT服务器参数,具体介绍内容见《蓝蜂MQTT网关配置工具使用说明V1.0》第4.2节。首次拿到网关需要进行MQTT连接配置,用于配置连接的MQTT服务器的参数。配置完成后,网关即可连接MQTT服务器。如图,图中所有参数均从阿里云处拿到,详见本文第3.4节:
此处所有的配置是从阿里云平台处获取的,复制时不要添加或删除任何字符,否则将无法连接阿里云MQTT平台。
填写完成后点击保存按钮,需要重启网关,配置才会生效。建议使用串口连接。如使用远程连接修改的此处参数,当网关重启后就不能远程修改了,只能使用串口连接。
4.4 驱动管理
驱动管理用来配置网关与下位机的驱动管理,支持创建/编辑,删除驱动,设置通讯口配置信息等,如图。由于是第一次配置,此处为空,需要进行添加驱动的操作。
【通讯口配置】:点击通讯口配置下面有3个通讯端口项,【RS232】、【RS485】和【LAN】,分别对应网关上的3个数据通讯端口,3个通讯口可以同时和下位机进行通讯。可按照需要对相应通讯口进行配置。
我们需要使用网线与PLC进行通讯,所以需要配置网口的参数。如下图。本案例中,PLC的IP地址为192.168.1.55。同时,建议使用手动设置IP的方式。需要填写和PLC同一网段的地址,任意即可,这里填写192.168.1.10,子网掩码为255.255.255.0。
【+新增】:点击此处创建驱动,可根据实际使用需求进行选择填写。
【驱动名称】:自定义。不限中英文,不限标点符号,包括空格,最大支持20个字。
【品牌】、【型号】:根据需要选择品牌型号,网关会根据您选择的品牌型号的专有协议跟设备进行通讯。本案例连接西门子200SMART PLC,所以【品牌】选择“西门子”,【型号】选择“S7-200 SMART”。
【IP地址】:必填项,填写PLC的IP地址。
【端口号】:西门子默认为102。
完成后点击确定即可看到新创建的驱动。
4.5 变量管理
首先我们需要拿到PLC端的地址表, 此处的【寄存器类型】和【寄存器地址】需要和PLC的地址表一致。地址表见后方说明。
注意:此处的【变量标识(key)】需要和阿里云MQTT平台中填写的一致且区分大小写。见3.3节表格。
注:
1、网关会将创建的所有变量上传到阿里云IoT平台,由IoT平台根据标识符来判断数据是否采集、展示。
2、MQTT网关配置工具支持变量的复制/导入/导出功能,使用【复制】可以快速添加变量。
具体内容介绍见《蓝蜂MQTT网关配置工具使用说明V1.0》第4.5.2节和4.5.3节。
※变量名称说明:
【仪表、PLC】:必填,选择刚才创建的西门子smart200即可。
【变量表示(key)】:必填,自定义即可。注意不能有重复的名称。
【寄存器类型】:必填,填写对应西门子smart200PLC的寄存器类型。
【寄存器地址】:必填,与实际寄存器地址一致。具体可见下方地址表示例。
【数据类型】:必填,根据实际需要选择即可。
【死区设置】:具体内容见后方“?”。
【读写方式】:可根据需求自行修改该寄存器的读写方式,默认为只读。
【采集公式】:可根据需求自行编写公式,需要使用英文字符。具体内容介绍见《蓝蜂MQTT网关配置工具使用说明V1.0》第4.5.4节。
地址表示例:
由于阿里云IoT平台是有自己独立的数据上报格式的,我们需要在“蓝蜂MQTT网关配置工具”中对这一部分进行编辑。
5.1 数据上报配置设置
5.1.1 配置步骤
打开阿里云平台,点击【产品】→【查看】,如图:
进入产品后,点击【topic类列表】-【物模型通信topic】,即找到属性上报主题,如图
其中“ /sys/ gqbaihhDlTb /${deviceName}/thing/event/property/post”中的gqbaihhDlTb是IoT平台自动生成的,需要改成自己设备的ProductKey。为3.2节中标出需要记录的ProductKey。
主题中的通配符${deviceName}需要替换成我们这个产品中创建的设备的DeviceName。我们的示例在阿里云IoT平台创建的设备的DeviceName为网关sn编号,而在蓝蜂配置工具中可使用通配符${sn}代替sn编号。
因此我们的上报主题为/sys/gqbaihhDlTb/${sn}/thing/event/property/post
我们将该主题写入数据上报配置中的上报主题中,如图:
【上报方式】:可按需求选择定时上报或变化上报,此文档以定时上报为例。
※【加工脚本】如下,复制粘贴即可,一般不需要进行修改:
function reportToJson(signalArray, system){
var json ={
id: system.msgId,
version:"1.0",
sys:{ ack : 0},
method: "thing.event.property.post",
params:{}
}
var time = new Date().getTime();
for(var i=0; i<signalArray.length; i++){
var signal = signalArray[i];
json.params[signal.key] = {
time:time,
value:Number(signal.value)
}
}
return JSON.stringify(json);
}
点击确定按钮,配置完成,需要重启网关,配置才会生效,将网关接入设备后,采集到的数据就可上报到阿里云IoT平台了。
5.1.2 查看数据
当设备采集到数据并上报到阿里云IoT平台后,我们可以在阿里云IoT平台,点击设备,找到我们接入的设备。
点击查看按钮,进入设备详情中,点击物模型数据,便可查看到我们采集到的数据,如图:
点击查看数据按钮,可查看该属性的历史数据详情,如图:
5. 2 写变量配置
5.2.1 操作步骤
从阿里云IoT平台向设备写入数据,需要在蓝蜂MQTT网关配置工具中对写入进行配置。
点击【数据传输配置】-【写变量配置】,我们可在写变量配置中设置请求和响应主题,在阿里云IoT平台打开对应设备的topic列表找到属性设置topic,如图:
进入产品后,点击【topic类列表】-【物模型通信topic】,即找到属性设置主题,如图:
其中“/sys/ gqbaihhDlTb /${deviceName}/thing/service/property/set”中的gqbaihhDlTb是IoT平台自动生成的,需要改成自己设备的ProductKey。为3.2节中标出需要记录的ProductKey。
主题中的通配符${deviceName}需要替换成我们这个产品中创建的设备的DeviceName。
我们的示例在阿里云IoT平台创建的设备的DeviceName为网关sn编号,而在蓝蜂配置工具中可使用通配符${sn}代替sn编号。
因此我们的请求主题为:/sys/gqbaihhDlTb/${sn}/thing/service/property/set,
响应主题为:/sys/gqbaihhDlTb/${sn}/thing/service/property/set_reply
我们将请求主题和响应主题写入写变量配置中的请求和响应主题中,如图:
※【请求解析脚本】如下,复制粘贴即可,一般不需要进行修改:
function writeReqToJson(str){
if(str != ''){
var req = JSON.parse(str)
var keys = Object.keys(req.params)
var key = keys[0]
var msgId = req.id
var json = { data:[{key: key, value:req.params[key]+""}],msgId:msgId}
return JSON.stringify(json)
}
return ''
}
※【响应加工脚本】如下,复制粘贴即可,一般不需要进行修改:
function writeRespToJson(signal, system){
var json = {
"code": 200,
"data": {},
"id": system.msgId,
"message": "success",
"version": "1.0"
}
return JSON.stringify(json)
}
点击确定按钮,配置完成,需要重启网关,配置才会生效,将网关接入设备后,就可以从阿里云IoT平台直接控制设备,进行写入数据了。
5.2.2 向设备写入数据
打开阿里云IoT平台,点击【监控运维】→【在线调试】,选择我们想要写入数据的设备,如图:
找到想要写入数值的属性,我们此处对温度进行写入数值36,如图:
设置成功后,在阿里云IoT平台数值查看处我们也可以看到我们写入成功的数据,如图。
注意:
- 点击“获取”时,获取到的值是阿里云平台最后一次成功通讯的值。即使获取成功,也不能说明网关和下位机通讯正常。
- 连接阿里云IoT平台时建议将网关的“透传设置”、“采集异常设置”、“状态上报设置”关闭。
LF220支持PLC远程下载、断网续传、脚本功能,(透传功能不适用于阿里云服务器)功能介绍可查看《LF220边缘计算网关用户手册》,或点击对应功能页中的“?”跳转帮助界面进行查看。
1、LF220网关暂时不支持web配置页,目前暂时不能设置交换机和路由器模式。
2、在打开蓝蜂MQTT网关配置工具之后,请勿关闭已打开的命令行窗口,或修改浏览器内地址,否则将无法正常使用配置工具。
3、配置成阿里云服务器以后,再次配置网关时只能使用RS232转USB本地配置,不能使用在线配置。
4、配置LF220网关参数时必须要和阿里云服务器中设置的一致。
5、阿里云服务器(或其他服务器)有自己固定的格式,需要编写对应的脚本。阿里云服务器脚本按照文档中填写的即可,可以直接复制粘贴。
6、如果串口232是7位时,串口连接点击升级,升级成功客户端不会提示升级成功,但是网关实际会升级成功。
7、蓝蜂MQTT网关配置工具的网关编码格式为UTF-8。
8、兼容性:win7, win10, win11系统,不支持winxp及更低版本windows系统,不支持linux、MacOS、android和ios系统。