Air724+HC32L176做的电能集中器——JSY-1039单相4G集中器

2023-10-26

很多朋友在很多地方都听到过**集中器,但是对集中器还没有隔概念,那么什么是集中器呢?
问:什么是集中器
集中器(concentrator device)是连接终端、计算机或通信设备的中心连接点设备。它成为电缆汇合的中心点。在若干终端密集区内,通常为减少通信线路,先把终端接到集中器,然后再经过高速线路将集中器连接到计算机的通信控制器,因此,集中器也是共享线路和提高线路利用率的一种有效设备。

本设备就是一个小型的集中器,可以和JSY-1030以及大部分产品衔接组成网络
在这里插入图片描述
本设备下行通过RS485读取其他数据采集设备汇总后通过上行4G定时上报至服务器,服务器亦可主动获取数据信息。设备多用于配电箱,工业领域、民用领域都可使用。细分领域到路灯照明系统、汽车充电站、机房节能系统、球场灯控管理系统。

小型配电箱
在这里插入图片描述

接下来开始讲解如何使用华大单片机HC32L176如何控制合宙4G模块Air724
Air724使用AT指令模式,那么需要先配置HC32串口

void App_Uart2PortCfg(void)
{
    GPIO_General_MODE_SET(AirKeyCom, 0x11);
    Gpio_SetIO(AirKeyCom);
    GPIO_General_MODE_SET(AIR724_nRst_Pro, AIR724_nRst_Pin, 0x10);
    GPIO_General_MODE_SET(AIR724_Tx_Pro, AIR724_Tx_Pin, 0x10);
    Gpio_SetAfMode(AIR724_Tx_Pro, AIR724_Tx_Pin, GpioAf1);
    GPIO_General_MODE_SET(AIR724_Rx_Pro, AIR724_Rx_Pin, 0x00);
    Gpio_SetAfMode(AIR724_Rx_Pro, AIR724_Rx_Pin, GpioAf1);
}
void App_Uart2Cfg(void)
{

    stc_uart_cfg_t stcCfg;
    // stc_uart_baud_t stcBaud;
    DDL_ZERO_STRUCT(stcCfg);
    Sysctrl_SetPeripheralGate(SysctrlPeripheralUart1, TRUE); ///
    ///< UART Init
    stcCfg.enRunMode = UartMskMode1;
    stcCfg.enStopBit = UartMsk1bit;
    stcCfg.enMmdorCk = UartMskDataOrAddr;
    stcCfg.stcBaud.u32Baud = 115200;
    stcCfg.stcBaud.enClkDiv = UartMsk8Or16Div;
    stcCfg.stcBaud.u32Pclk = Sysctrl_GetPClkFreq();
    Uart_Init(AIR724_UART, &stcCfg);

    Uart_ClrStatus(AIR724_UART, UartRC);
    Uart_ClrStatus(AIR724_UART, UartTC);
    Uart_EnableIrq(AIR724_UART, UartRxIrq);
    EnableNvic(UART1_3_IRQn, IrqLevel1, TRUE);
}

接下来开始配置Air724,在上电是最好控制模块硬件复位一次,复位后连续发送AT\r\n获取OK指令后

typedef struct
{
    char *tData;
    char *rData;
    u16 TimeOut;
    u16 WaitTime;
    u8 Cycle;
    u8 Flag;

} AIR724_CmdDef;
AIR724_CmdDef AIR724_Cmd[] = {

    {"AT\r\n", "OK", 500, 100, 10, 1},                // AT 测试通讯是否正常
    {"AT&F\r\n", "OK", 1000, 1000, 3, 1},             //恢复出厂设置
    {"ATE1&W+CREG=2;&W\r\n", "OK", 1000, 100, 3, 1},  //关闭回显
    {"AT+CPIN?\r\n", "+CPIN: READY", 500, 10, 20, 1}, //查询SIM卡是否正常
    {"AT+CSQ\r\n", "+CSQ: 0,0", 500, 10, 60, 0},      //查询信号强度
    {"AT+CGATT?\r\n", "+CGATT: 1", 500, 10, 60, 1},   //
    {"AT+CREG?\r\n", "+CREG:", 500, 10, 30, 1},       //查询模组是否注册GSM网络
    {"AT+CGREG?\r\n", "+CGREG: 0,1", 500, 10, 3, 1},  //查询模组是否注册上GPRS网络
    {"AT+CIPHEAD=1\r\n", "OK", 1000, 10, 3, 1},       //设置接收到消息时显示IP头,格式为:"+IPD,data length:"
    {"AT+CIPSHUT\r\n", "OK", 1000, 300, 3, 1},        //关闭移动场景
    {"AT+CSTT=CMNET\r\n", "OK", 1000, 100, 3, 1},     //
    {"AT+CIICR\r\n", "OK", 10000, 200, 3, 1},         //激活移动场景
    {"AT+CIFSR\r\n", "OK", 1000, 50, 10, 0},          //查询本机IP地址
    {"AT+CIFSR=?\r\n", "OK", 1000, 100, 10, 1},       //
};

如果得到的应答都正确,那么就表示模块已经可以正常连接到服务器了


```c
/**
 * @name:
 * @msg: 设置服务器IP和端口号
 * @param {*}
 * @return {*}
 */
const u8 DeviceMessage[] = {0x03, 0x39, 0x15, 0x00, 0x19, 0x00, 0xFA, 0x00, 0x64, 0x10, 0x01, 0xB0, 0x01, 0x10, 0x01};
u8 AIR724_SetIPPort(void)
{
    u8 result = 0xff;
    // u16 rlen=0;
    switch (AIR724_Workflow.Setp)
    {
    case 0: //获取本地IP地
        result = AIR724_ReloadingReadAT("AT+CIFSR\r\n", (char *)m4G.LocalIP, 1000, 3, 1);
        break;
    case 1:
        result = AIR724_ReloadingReadAT("AT+CGSN\r\n", (char *)m4G.M.u.IMEI, 500, 3, 1);
        m4G.M.u.IMEI[15] = 0;
        break;
    case 2:
        result = AIR724_ReloadingReadAT("AT+CCID\r\n", (char *)m4G.M.u.CCID, 1000, 3, 1);
        break;
    case 3:
        result = GetCREG();
        break;
    case 4:
        result = GetCSQ();
        break;
    case 5:
        result = AIR724_ReloadingWriteAT("AT+CIPCLOSE\r\n", "1234", 1000, 3, 0);
        break;
    case 6:
        memset((char *)m4G.TxData, 0, sizeof(m4G.TxData));
        sprintf((char *)m4G.TxData, "AT+CIPSTART=TCP,%d.%d.%d.%d,%d\r\n", m4G.M.u.ServerIP[0], m4G.M.u.ServerIP[1], m4G.M.u.ServerIP[2], m4G.M.u.ServerIP[3], m4G.M.u.Port[1] | m4G.M.u.Port[0] << 8);
        result = AIR724_ReloadingWriteAT((char *)m4G.TxData, "CONNECT OK", 10000, 3, 1);
        break;

    case 7:
        result = AIR724_ReloadingReadAT("AT+CIPHEAD=1\r\n", "OK", 1000, 3, 1);
        break;
    case 8: //登录
        sprintf((char *)m4G.account, "admin");
        sprintf((char *)m4G.password, "123456");
        StrTruncate(m4G.account, m4G.TxData, 0, 0, 8);
        StrTruncate(m4G.password, m4G.TxData, 0, 8, 8);
        if (AIR724_SendAndRecServerCom(0x1000, 16, m4G.TxData) == OK)
        {
            if ((AIR_Receive.u.D_FunC[0] << 8 | AIR_Receive.u.D_FunC[1]) == 0x1000 && AIR_Receive.u.DataField[0] == 0x00)
            {
                AIR724_Workflow.Setp++;
                break;
            }
        }
        break;
    case 9: //注册
        if (AIR724_SendAndRecServerCom(0x1001, 15, (u8 *)DeviceMessage) == OK)
        {
            if ((AIR_Receive.u.D_FunC[0] << 8 | AIR_Receive.u.D_FunC[1]) == 0x1001 && AIR_Receive.u.DataField[0] == 0x00)
            {
                AIR724_Workflow.Setp++;
                break;
            }
        }
        break;
    case 10: //获取时间
        if (AIR724_SendAndRecServerCom(0x1005, 6, (u8 *)m4G.Time.T) == OK)
        {
            if ((AIR_Receive.u.D_FunC[0] << 8 | AIR_Receive.u.D_FunC[1]) == 0x1005)
            {
                AIR724_Workflow.Setp++;
                StrTruncate(AIR_Receive.u.DataField, m4G.Time.T, 0, 0, 6);
                App_RtcSetTime();
                break;
            }
        }
        break;
    case 11:
        SetAirRunStep(WORK, 0);
        break;
    default:
        AIR724_Workflow.Setp = 0;
        break;
    }
    // Modbus_HoldRegCpy(ModbusPar.aModbusData, 0, 0x0200 * 2, sizeof(m4G.M.Data));
    switch (result)
    {
    case OK:
        DDL_ZERO_STRUCT(AIR724_UART_MARK.TX);
        AIR724_Workflow.WaitFlag = RESET;
        AIR724_Workflow.SendFlag = RESET;
        AIR724_Workflow.Setp++;
        break;
    case No_ops:
        break;
    case AIR_Error:
        SetAirRunStep(FAULT, 0);
        return FAULT; //转到故障
    case Wait_Timeout:
				SetAirRunStep(FAULT, 0);
        return FAULT; //转到故障
        break;
    default:
        break;
    }
    // Modbus_HoldRegCpy(m4G.M.Data, 0, 0x0200 * 2, 60);
    return WORK;
}

连接到服务器后就可以正常接收数据了,需要按照协议进行通讯
在这里插入图片描述
这里使用C#临时搭建个TCP服务器,后续会出一篇新帖讲述如何搭建TCP服务器
在这里插入图片描述
PC上位机临时测试软件
在这里插入图片描述
在这里插入图片描述
设备参数
1)电压量程:100V、220V等可选

2)电流量程:100A,外接开口互感器型号可选

3)信号处理:采用专用测量芯片,24位AD采用

4)过载能力:1.2倍量程可持续;瞬间(<20mS)电流5倍,电压1.2倍量程不损坏

5)输入阻抗:电压通道>1KΩ/V;电流通道≤100mΩ

测量输出数据

电压、电流、功率、正向电能、反向电流、漏电流、功率因素、频率等多个电参量,

测量精度

电压、电流、电量:±1.0%,有功电度1级
在这里插入图片描述

隔离

RS-485接口与供电电源、电压输入、电流输出之间相互隔离;隔离耐压2000VAC

电源

1)可选100V、220V、电压线路100V~220V

2)AC220V供电时,峰值电压不得超过265V;典型功耗:≤2W

工作环境

1)工作温度:-20~+70℃;存放温度:-40~+75℃。

2)相对湿度:5~95%,无结露(在40℃下)。

3)海拔高度:0~3000米

4)环境:无爆破、腐蚀气体及导电尘埃,无显著摇动、振动和冲击的场所。

温度漂移

≤100ppm/℃

安装方式

2P导轨式安装

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Air724+HC32L176做的电能集中器——JSY-1039单相4G集中器 的相关文章

  • CRC校验流程

    通常我们在涉及到传输指令或者命令行的时候 为了保证数据传输的正确性和准确性 会涉及到校验码的问题 而我们通常会采用CRC校验 CRC是比较常用的对命令行和指令行的校验方法 一般会放在指令的后面 用以核对数据的正确性 其实如果是比较简单的指令
  • js使用mqtt的示例代码

    浏览器如果要使用mqtt 需要引用js包 基本使用 Create a client instance var options mqtt客户端的id 这里面应该还可以加上其他参数 具体看官方文档 clientId mqttjs Math ra

随机推荐

  • 数字IC手撕代码-数据位宽转换器(宽-窄,窄-宽转换)

    前言 本专栏旨在记录高频笔面试手撕代码题 以备数字前端秋招 本专栏所有文章提供原理分析 代码及波形 所有代码均经过本人验证 目录如下 1 数字IC手撕代码 分频器 任意偶数分频 2 数字IC手撕代码 分频器 任意奇数分频 3 数字IC手撕代
  • 数组转化为list

    1 Arrays asList strArray 方式 将数组转换List后 不能对List增删 只能查改 否 则抛异常 此时是java util Arrays ArrayList 这里面有java util Arrays里面的内部类 里面
  • [pycharm]添加环境变量

    1 问题描述 当import第三方库时 例如自己定义的rosmsg 可能会出现无法索引的情况 2 解决方案 2 1 方法1 在pycharm解释器里面添加路径 File gt Setting gt Project xxxx gt Pytho
  • java开发环境搭建参考网址整理【全】

    前言 大家每次换本儿是不是和我一样头疼需要重新把开发环境重新搭建一遍 我本人主要是通过百度参考别人的网址跟着搭建的 慢慢我就想为啥不专门写一篇文章整理一下从头至尾比较全面的步骤呢 这样方便自己 也方便大家哈 ps 以下有关的文章链接是参考优
  • python中dtypes_Dataframe创建及index,columns,values,dtypes等属性介绍

    DataFrame概念 可以通俗理解为excel中一片数据 表格型数据结构 带有标签的二维数组 有行标签 index 和列标签 columns 其值可以是数值 字符串 布尔值等 1 index 行标签 2 columns 列标签 3 val
  • Layui之动态选项卡&iframe使用

    目录 tab选项卡 方法层 实体类 User web层 登录界面代码 tab选项卡 我们顺着上篇的博客内容 在那个基础上加一个选项卡 首先我们打开Layui的在线文档 网址如下 Tab选项卡 在线演示 Layuihttp layui org
  • LeetCode之螺旋矩阵 II 简单易懂与晦涩难懂两种方法解决

    目录 题目 方法一 简单易懂 四方步步紧逼法 代码 方法二 复杂一点 上下法 代码 题目 给你一个正整数 n 生成一个包含 1 到 n2 所有元素 且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 示例 1 输入 n 3
  • ptv服务器系统,红狮PTV安灯管理服务器系统有效提升国内某知名车企生产效率

    国内某知名汽车企业 在其以往的日常生产管理中 由于汽车生产各产线设备间没有实现互联 工位间信息不流通 每天都需要安排设备管理员定时巡视各个工位 检查设备运行状况 记录生产现状 这不仅造成了时间 人力成本的浪费 更制约了该企业生产效率的提升
  • 修改远程桌面登陆端口的方法

    Windows系统中的远程终端服务是一项功能非常强大的服务 其默认的端口号3839很容易成为入侵者长驻主机的通道 使用户电脑成为通常称为的 肉鸡 受入侵者远程操控 盗取用户重要资料和隐私信息 是非常严重的网络安全隐患 因此 在使用远程终端服
  • 小程序的开放能力、分享及组件的传参

    一 小程序开放功能 1 获取网络状态wx getNetworkType 2 从网络上下载文档wx downloadFile 3 下载成功之后进行预览文档wx openDocument Page 点击 预览文档 的按钮 触发tap回调 tap
  • python解析xml

    import xml dom minidom dom xml dom minidom parse r K identify voc to coco cache annotations 0 xml 打开xml文件 送到dom解析
  • 【网络基础】通俗易懂的搞明白什么是子网掩码(大白话版)

    目录 前言 什么是子网掩码 子网 如何判断是否在同一个子网 子网掩码的功能总结 子网掩码的分类 可变长子网掩码 总结 前言 本次的文章内容均为个人在网络上搜罗知识点并梳理而来 尽量用浅显易懂的方式讲解 但不会讲的很深入 因为只想给刚入行的人
  • webrtc.lib(m74) 链接的 obj 文件[应该与编译选项有关,备忘]

    01F68076 0 obj test fake video codecs fake vp8 encoder obj 01F680A6 48 obj test fake video codecs fake vp8 decoder obj 0
  • Android监听程序的安装和卸载

    在android系统中 安装和卸载都会发送广播 当应用安装完成后系统会发android intent action PACKAGE ADDED广播 可以通过intent getDataString 获得所安装的包名 当卸载程序时系统发and
  • 数据库——SQL语句(其它)

    目录 1 数据类型 2 查询条件 1 数据类型 数据类型 含义 CHAR n CHARACTER n 长度为n的定长字符串 VARCHAR n CHARACTERVARYING n 最大长度为n的变长字符串 CLOB 字符串大对象 BLOB
  • 基于体系结构架构设计-架构真题(十五)

    基于体系结构开发设计 Architecture Base Software Design ABSD 是指构成体系结构的 组合驱动 ABSC方法是一个自项向下 递归细化的方法 软件系统的体系结构通过该方法细化 直到能产生 产品 功能需求和设计
  • CSS实现悬浮提示(通用)

    没有废话 先看效果 为id选择器 如果有id可以直接确认到指定控件最好 如果class固定也可以只通过class选择器指向控件 不会取的也可以通过浏览器检查页面找到 代码如下 deep xmly ant select selection r
  • matlab 集成学习方法,集成学习(ensemble learning)

    本章参考西瓜书第八章编写 从个体和集成之间的关系出发 引出了集成学习的遵循的两大标准 基学习器的准确定和多样性 然后开始介绍具体的集成学习算法 串行的Boosting和并行的Bagging 前者通过对错判训练样本重新赋权来重复训练 以提高基
  • 统计机器学习---主成分分析(PCA)

    主成分分析的基本了解 主成分分析方法 是一种使用最广泛的数据降维算法 PCA的主要思想是将高维的特征映射到k维上 这k维就是主成分 并能保留原始变量的大部分信息 这里的信息是指原始变量的方差 如果用坐标系进行直观解释 一个坐标系表示一个变量
  • Air724+HC32L176做的电能集中器——JSY-1039单相4G集中器

    很多朋友在很多地方都听到过 集中器 但是对集中器还没有隔概念 那么什么是集中器呢 问 什么是集中器 集中器 concentrator device 是连接终端 计算机或通信设备的中心连接点设备 它成为电缆汇合的中心点 在若干终端密集区内 通