{PLC,IOT}>ESP32 项目实践——简单入门

一、实验目的

        通过简单的实验,掌握IOT-PLC运行的基本条件和开发环境的使用。

二、实验内容

1、IOT-PLC的硬件工作环境准备

2、基本的输入和输出功能设计

3、下载运行以及在线调试

4、继电器输出和晶体管输出的区分

三、实验过程

3.1 IOT-PLC硬件工作环境准备

3.1.1 材料和工具

小一字螺丝刀、连接线、IOT-PLC-3872RE、USB Type-C 数据线、12V电源适配器

3.1.2 连接

VOUT-12V 连接Digital Input-S/S,12V电源适配器输出连接POWER,Digital Input-X0 连接测试接线,USB Type-C 数据线连接 DOWNLOAD,并将USB连接到有开发测试环境的电脑,然后12V电源适配器通电。

3.2 基本的输入和输出功能设计

3.2.1 打开 OpenPLC Editor开发软件

3.2.2 点击【文件】->【新建】菜单,选择项目的目标文件夹

3.2.3 新建POU(Programming Organisation Unit)

将默认的POU名字改为 IO_Test,点击【确定】按钮。

3.2.3 添加 IO 变量

点击【添加变量】按钮

分别添加变量:

3.2.4 绘制梯形图

在工作区绘制梯形图,保存设计文件。

3.3 下载运行以及在线调试

点击【编译下载】按钮

可以在状态区的【控制台】看到编译下载的过程和结果

将测试信号线和VOUT-GND接触,观察到X0的指示灯亮,可以听到IOT-PLC-3872RE的继电器发出接通的声音。

点击【设置\调试】

进入【设置/调试】界面,点击【调试】:

进入调试界面:

选择目标设备,观测信号,触发源以及出发类型,然后点击【采样】按钮:

测试信号线和VOUT-GND接触并断开,观察调试波形:

3.4 继电器输出和晶体管输出的区别

IOT-PLC-3872RE 配置 3个继电器输出、8个晶体管输出、7个光耦输入和 2个模拟输入,自带RS485接口和以太网接口。

继电器输出是将  Relay Output - L端,编程控制接通到 Y0 、Y1 或者 Y2;

晶体管输出是输出端的电压由编程控制输出为 Transister Ouput - L+  或者 Transister Ouput - M,IOT-PLC-3872RE 的Y3~Y10 是晶体管输出,其中Y3、Y4的极性和Y5~Y10相反。IOT-PLC-3872RE的晶体管输出有指示灯。可以将实验修改为测试输出端为 Y10,观测晶体管输出。注意L+和M需要连接 12V和GND。

可以在项目文件夹找到设计代码和生成的代码:

设计代码是:

<?xml version='1.0' encoding='utf-8'?>

<project xmlns:ns1="http://www.plcopen.org/xml/tc6.xsd" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.plcopen.org/xml/tc6_0201">

  <fileHeader companyName="未知" productName="未命名" productVersion="1" creationDateTime="2023-09-21T20:43:02"/>

  <contentHeader name="未命名" modificationDateTime="2023-09-21T20:57:04">

    <coordinateInfo>

      <fbd>

        <scaling x="10" y="10"/>

      </fbd>

      <ld>

        <scaling x="10" y="10"/>

      </ld>

      <sfc>

        <scaling x="10" y="10"/>

      </sfc>

    </coordinateInfo>

  </contentHeader>

  <types>

    <dataTypes/>

    <pous>

      <pou name="IO_Test" pouType="program">

        <interface>

          <localVars>

            <variable name="K0" address="%IX0">

              <type>

                <BOOL/>

              </type>

            </variable>

            <variable name="P0" address="%QX0">

              <type>

                <BOOL/>

              </type>

            </variable>

          </localVars>

        </interface>

        <body>

          <LD>

            <leftPowerRail localId="1" height="40" width="20">

              <position x="270" y="60"/>

              <connectionPointOut formalParameter="">

                <relPosition x="20" y="20"/>

              </connectionPointOut>

            </leftPowerRail>

            <contact localId="2" height="20" width="30" negated="false">

              <position x="350" y="70"/>

              <connectionPointIn>

                <relPosition x="0" y="10"/>

                <connection refLocalId="1">

                  <position x="350" y="80"/>

                  <position x="290" y="80"/>

                </connection>

              </connectionPointIn>

              <connectionPointOut>

                <relPosition x="30" y="10"/>

              </connectionPointOut>

              <variable>K0</variable>

            </contact>

            <coil localId="3" height="20" width="30" negated="false">

              <position x="430" y="70"/>

              <connectionPointIn>

                <relPosition x="0" y="10"/>

                <connection refLocalId="2">

                  <position x="430" y="80"/>

                  <position x="380" y="80"/>

                </connection>

              </connectionPointIn>

              <connectionPointOut>

                <relPosition x="30" y="10"/>

              </connectionPointOut>

              <variable>P0</variable>

            </coil>

            <rightPowerRail localId="4" height="40" width="80">

              <position x="530" y="60"/>

              <connectionPointIn>

                <relPosition x="0" y="20"/>

                <connection refLocalId="3">

                  <position x="530" y="80"/>

                  <position x="460" y="80"/>

                </connection>

              </connectionPointIn>

            </rightPowerRail>

          </LD>

        </body>

      </pou>

    </pous>

  </types>

  <instances>

    <configurations>

      <configuration name="Config0">

        <resource name="Res0">

          <task name="task0" priority="0" interval="T#20ms">

            <pouInstance name="instance0" typeName="IO_Test"/>

          </task>

        </resource>

      </configuration>

    </configurations>

  </instances>

</project>

生成代码是:

PROGRAM IO_Test
  VAR
    K0 AT %IX0 : BOOL;
    P0 AT %QX10 : BOOL;
  END_VAR

  P0 := K0;
END_PROGRAM


CONFIGURATION Config0

  RESOURCE Res0 ON PLC
    TASK task0(INTERVAL := T#20ms,PRIORITY := 0);
    PROGRAM instance0 WITH task0 : IO_Test;
  END_RESOURCE
END_CONFIGURATION



 

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ESP32CAM是一款集成摄像头的开发板,我们可以利用它来拍摄照片并将照片上传到阿里物联网平台。 首先,我们需要在阿里物联网平台上创建一个设备,获取设备的三元组信息(设备ID、设备密钥和设备证书)。然后,在ESP32CAM开发板上安装适配的开发环境,如Arduino IDE。 在代码中,我们需要引入ESP32CAM相应的库,设置WiFi连接信息和阿里物联网服务器的IP地址。连接到WiFi后,我们可以使用阿里IoT库提供的接口进行设备认证和连接。 接下来,我们需要使用ESP32CAM的摄像头进行拍照。通过指定分辨率和图像质量,我们可以使用相应的库函数来捕获照片。 一旦照片被捕获,我们可以将其保存到SD卡或者使用HTTP或MQTT协议将照片上传到阿里物联网平台。对于HTTP协议,我们可以使用HTTPClient库来创建HTTP请求,并使用POST方法将照片数据发送到指定的阿里IoT存储节点。对于MQTT协议,我们可以使用PubSubClient库来实现MQTT连接,并将照片数据发布到指定的主题。 上传完成后,我们可以在阿里物联网平台上查看和处理上传的照片。我们可以使用设备ID和设备密钥进行设备认证,并使用MQTT或HTTP协议从阿里IoT平台接收云端命令或更改设备参数。 总之,通过使用ESP32CAM开发板和阿里物联网平台,我们可以方便地实现照片的拍摄和上传功能,为物联网应用提供了更多可能性。 ### 回答2: ESP32-CAM是一款集成了摄像头功能的开发板,它可以通过Wi-Fi连接到互联网,实现图像上传至阿里物联网平台。 首先,我们需要配置ESP32-CAM的开发环境。这包括安装适当的开发工具,例如Arduino IDE,以及必要的库和驱动程序。在Arduino IDE中,我们需要选择正确的开发板(ESP32 Dev Module),并设置正确的端口和速率。 接下来,我们需要创建一个阿里物联网平台的账户,然后在平台上创建一个设备,得到该设备的三元组(设备ID、设备密钥和设备证书)。这些信息将用于与物联网平台建立安全连接。 在编程方面,我们首先需要在代码中包含必要的库文件,例如WiFi.h和HTTPClient.h。然后,我们可以使用WiFi.begin()函数连接到Wi-Fi网络,并使用WiFi.status()函数检查连接状态。 一旦Wi-Fi连接成功,我们可以通过HTTPClient库将图片上传至阿里物联网平台。我们需要使用密钥和证书创建一个安全的HTTP连接,并通过POST请求将图像数据发送到物联网平台的URL。 在发送请求之前,我们需要使用camera.begin()函数初始化摄像头,并使用camera.capture()函数获取图像数据。然后,我们可以使用HTTPClient对象的相关函数设置请求头、指定URL,以及将图像数据作为请求体发送。 一旦图像上传完毕,我们可以使用HTTPClient对象的相关函数获取服务器响应,以确认上传是否成功。然后,我们可以关闭HTTP连接,并进行必要的清理操作。 需要注意的是,上传图像到阿里物联网平台可能需要一些额外的配置和认证步骤,具体取决于你的设备和平台的要求。请确保你已经阅读了相关文档,并按照指导进行操作。 综上所述,我们可以通过配置ESP32-CAM的开发环境,创建阿里物联网平台的账户和设备,编写相应的代码,将图片上传至阿里物联网平台。这样,我们就可以实现ESP32-CAM与阿里物联网平台的连接和数据传输。 ### 回答3: esp32cam是一个集成了摄像头模块的开发板,它基于ESP32芯片,具备Wi-Fi和蓝牙功能。想要将图片上传到阿里物联网平台,需要进行以下几个步骤: 1. 配置Wi-Fi连接:使用ESP32开发板的WiFi库,将其连接到本地Wi-Fi网络,确保能够访问互联网。 2. 获取图片:利用ESP32Cam的摄像头模块,使用适当的函数或库从摄像头中获取图像数据。 3. 封装图片数据:将获取到的图像数据进行封装,可以使用Base64编码将其转换为字符串形式。这将简化数据传输和解码的过程。 4. 连接阿里物联网平台:使用ESP32开发板的HTTP或MQTT库,连接到阿里物联网平台。您需要先在该平台上注册设备,并获取设备的认证信息,如设备ID,密钥等。 5. 发送图像数据:通过HTTP或MQTT协议,将封装好的图像数据传输到阿里物联网平台。您需要构建合适的HTTP请求或MQTT发布消息,同时附上设备认证信息和图像数据。 6. 处理图像数据:在阿里物联网平台的后台,您可以设置相应的规则和数据处理逻辑,对上传的图像数据进行处理。您可以将图像保存到云存储中,进行人工智能分析,或与其他设备进行交互等。 综上所述,要将esp32cam上传图片到阿里物联网平台,您需要连接Wi-Fi,获取图片并封装数据,连接阿里物联网平台,并发送图像数据。同时,确保您在平台上设置了相应的数据处理规则,以便后续对图像数据进行处理和应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值