阿里云HaaS100主板在Alios things中控制380V遮阳棚电机
Posted 亿企创新-莫学良
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了阿里云HaaS100主板在Alios things中控制380V遮阳棚电机相关的知识,希望对你有一定的参考价值。
文档说明
本文是说明HaaS100通过RS485串口控制380V电机的开发记录:
涉及到modbus的驱动函数使用,以及跟厂家的协议匹配,数值处理等方面。
我的系统通过HaaS100的RS485口,连接了1个32位的Modbus继电器。
目录
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++应用