阿里云HaaS100主板在Alios things中控制380V遮阳棚电机

Posted 亿企创新-莫学良

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了阿里云HaaS100主板在Alios things中控制380V遮阳棚电机相关的知识,希望对你有一定的参考价值。

 

文档说明

本文是说明HaaS100通过RS485串口控制380V电机的开发记录:

涉及到modbus的驱动函数使用,以及跟厂家的协议匹配,数值处理等方面。

我的系统通过HaaS100的RS485口,连接了1个32位的Modbus继电器。

目录

文档说明

1.设备连接拓扑

2.程序实现

3.助人自助


 

1.设备连接拓扑

这个拓扑图是简化了的,实际上控制一个380V的电机,需要3个继电器,脉冲式的控制电机启动。这在制作配电柜的时候,需要跟厂家说明,预留出接线端子。

 

2.程序实现

程序上实现需要以下三步:

2.1.控制继电器脉冲式开关

/* 函数名称:Set_Switch_state 函数功能:
设置继电器闪开闪关,因为是脉冲输出,因此其实没有所谓开或是关,都一样 
输入参数:         
参数1:mb_handler1 modbus数据结构句柄         
参数2:DeviceAddr Modbus地址         
参数3:Coiladdr 线圈地址         
参数4:CoilValue 线圈状态 Switchon,Switchoff; 输出参数:成功与否的标志位 */ mb_status_t  Set_Switch_state(mb_handler_t *mb_handler1,uint8_t DeviceAddr,uint16_t Coiladdr,uint16_t CoilValue) {     
    mb_status_t status1;     
    mb_handler_t *mb_handler;     
    uint16_t   data_resp = 0;                                   
status1 = mbmaster_write_single_coil(mb_handler1, DeviceAddr, Coiladdr,Switchon, NULL, &dat    a_resp, NULL, AOS_WAIT_FOREVER); status1 = mbmaster_write_single_coil(mb_handler1, DeviceAddr, Coiladdr,Switchoff, NULL, &data_resp, NULL, AOS_WAIT_FOREVER);     
return status1; 
}

 

2.2.解析云端指令并执行

/** recv event post response message from cloud 
static int user_property_set_event_handler(const int devid, const char *request, const int request_len)
{
    int res = 0;
    EXAMPLE_TRACE("Property Set Received, Request: %s", request);

    /* request ="{"Switch01":1}" 下发的指令是1号开关的---------*/

    cJSON *root = NULL, *item_PowerSwitch = NULL;
    root = cJSON_Parse(request);
    //-----------------------1号开关的控制逻辑
    item_PowerSwitch = cJSON_GetObjectItem(root, "Switch01");
        if (item_PowerSwitch != NULL)
        {
            if(item_PowerSwitch->valueint)
            {
                Set_Switch_state(mb_handler,SwitchDeviceAddr01,0,Switchon);
            }    
            else
            {
                Set_Switch_state(mb_handler,SwitchDeviceAddr01,0,Switchoff);
                
            }
        }
……
}

 

2.3.根据电机逻辑修改代码

实际上电机要正常动作,有一个逻辑顺序,就是正转之后你要反转,必须先按停止,因此会出现,用户要启动电机无论是正转还是反转,都需要先按下停止,所以代码中会有相应的关联。比如开关123分别对应正反停,那么当正被按下时,应该执行两个开关命令,即

正传的代码是:

if(item_PowerSwitch->valueint) 
{ 
    Set_Switch_state(mb_handler,SwitchDeviceAddr03,0,Switchon); 
    Set_Switch_state(mb_handler,SwitchDeviceAddr01,0,Switchon);
}

反转的代码是:

if(item_PowerSwitch->valueint) 
{ 
    Set_Switch_state(mb_handler,SwitchDeviceAddr03,0,Switchon); 
    Set_Switch_state(mb_handler,SwitchDeviceAddr02,0,Switchon);
}

 

3.助人自助

在Haas开发过程中,系统代码本身有阿里云的技术支持积极的给我们解决问题,应用上的问题,自己的代码,我们可以实现互助交流,我本身代码能力也不强,写的代码是能用但是不是很规范,完备,希望大家指正,如果项目上遇到选型、驱动,方案上的问题,欢迎和我交流,微信paulmark。

我是技术人员创业,道路不是很好走,听朋友说,多交流才有机会,希望通过不断的交流,输出有价值的东西,得到更多的机会。

我是学良,欢迎与我沟通。

 

以上是关于阿里云HaaS100主板在Alios things中控制380V遮阳棚电机的主要内容,如果未能解决你的问题,请参考以下文章

HaaS100开发调试系列 之 定位AliOS Things内存及Crash问题

AliOS Things 3.3.0 : 实战HaaS100扩展SD卡

一文轻松入门HaaS100诊断调试系统_AliOS Things 3.3

使用HaaS Studio开发AliOS Things C/C++应用

Alios Things 3.3.0应用稳定性底牌方案:网络异常自动重启

AliOS Things 物联网开发训练营圆满结束