3-2用比较指令编程 (1)plc三个开关控制一盏灯全开全关2个LED灯亮灭按启动按钮10?

  可能是看门狗定时器错误,也可能是可编程控制器的硬件受损。

  1) 停止可编程控制器,再次上电。ERROR(ERR) LED灯灭时,考虑是由于看门狗定时器错误造成的。请执行下述中的某一个解决方法。-修改程序扫描时间的值(D8012)请勿超出看门狗定时器的设定值(D8000)。-输入中断或脉冲捕捉中使用的输入, 在1个运算周期内是否频繁地ON/OFF多次。-高速计数器中输入的脉冲(DUTY 50%)的频率是否超出规格的范围。-增加WDT指令请在程序中加入多个WDT指令, 在1个运算周期内复位几次看门狗定时器。-变更看门狗定时器的设定值通过程序, 更改看门狗定时器的设定值(D8000), 使其值大于扫描时间的值(D8012)。2) 拆下可编程控制器,提供其他的电源。ERROR(ERR) LED灯灭时,考虑有可能是噪音带来的影响,因此请考虑以下的解决措施。-确认接地情况, 修改接线的路径以及设置的场所。-在电源线上加上噪音滤波器。3) 实施了1)~2)后ERROR(ERR) LED灯仍然不灭的时候,请与三菱电机自动化(中国)有限公司或其办事处联系。

  在可编程控制器中出现了以下的任意一种错误。? 参数错误? 语法错误? 回路错误

  请用编程工具进行PLC诊断以及程序的检查。关于对应解决方法,

  没有出现会使可编程控制器停止的错误

  以及程序检查。 有可能发生[I/O构成错误]、[串行通信错误]、[运算错误]。

广东深圳市沙井街道恒明珠工业区11栋

1、本信息由搜了网用户发布,搜了网不介入任何交易过程,请自行甄别其真实性及合法性;
2、跟进信息之前,请仔细核验对方资质,所有预付定金或付款至个人账户的行为,均存在诈骗风险,请提高警惕!

在很多的开源硬件编程创客作品中都会用到“语音识别”控制功能,比如通过“小度小度”等唤醒词来实现语音命令的唤醒与传送,目前大部分的语音识别功能都离不开网络支持(像百度智能云)。其实,我们还可以通过离线语音模块(比如好好搭搭的ASR-THREE)来实现语音识别,优点是响应速度非常快,而且支持中英文甚至是方言语音命令的训练学习与应用。如果想要设计制作一个Arduino“声控门”,用户通过发出“请开门!”、“请关门!”的语音指令来控制舵机进行开关门的动作,如何来实现呢?

实验装置包括Arduino UNO开发板一块,ASR-THREE离线语音模块一个,SG90舵机一个,红色、绿色LED灯各一支,小型面包板一个,各种颜色的杜邦线若干。

首先,通过红色和黑色两根杜邦线,将Arduino的5V和GND端分别连接至面包板的侧边(标注有“+”红色和“-”蓝色长线);接着,将ASR-THREE离线语音模块的V(电源正极)和G(接地端)连接至面包板的电源正极和负极,再将S(Signal)信号端连接至Arduino的3号引脚;然后,将SG90舵机的电源正极和接地端同样也连接至面包板的电源正极和负极,再将信号端连接至Arduino的10号引脚;最后,将红色和绿色LED灯的负极(“短腿”)均插入面包板的负极,正极(“长腿”)则分别通过杜邦线连接至Arduino的13号和12号引脚(如图1)。

2.训练ASR-THREE离线语音模块“学习命令词”

默认情况下,ASR-THREE离线语音模块提供了50多条包括“学习命令”、“唤醒词”和“命令词”在内的语音指令,每条语音指令均对应一个十进制的ID号,比如命令词“打开灯光”的ID号是70、“减小音量”的ID号是104等等。由于在设计制作的Arduino“声控门”项目中需要的语音命令词是“请开门!”和“请关门!”,因此需要进行自定义训练ASR-THREE离线语音模块进行“学习”,方法如下:

将Arduino的数据线连接至电脑的USB接口,很快就有“欢迎使用语音识别助手!”的语音提示;接着,对着离线语音模块的麦克风说出任意一条唤醒词——比如“智能管家”,离线语音模块回答“我在呢!”;再说:“学习命令词”,回答:“学习状态中,保持安静,请按提示学习命令词,请说出第一条要学习的指令”,再说:“请开门!”,回答:“学习成功,请再说一次”;按照提示,最终完成该语音指令命令词的训练学习。同样的操作,再训练完成对“请关门!”语音指令的学习,对应的ID号分别是53和54(如图2)。

(1)导入库与setup()函数初始化操作

12”;然后,通过“Servo myservo”语句来创建舵机对象,并且建立变量pos来初始化舵机的角度值为0:“int pos = 0”。

先来编写open_door()“开门”函数:当收到“请开门!”语音指令时,首先控制红色LED灯亮:“digitalWrite(RedLED,HIGH)”;然后,通过一个for()循环结构(“for(pos=0;pos

接着,编写close_door()“关门”函数,与open_door()函数非常类似,比如for()循环控制舵机由90°旋转恢复至0°(“for(pos=90;pos>=0;pos-=1)”)、控制红色和绿色LED灯的亮或灭,等等(如图4)。

(3)编写loop()主函数及Arduino“声控门”的测试

loop()主函数非常简单,通过if()语句来判断串口是否有新数据产生:“if (mySerial.available() > 0)”;如果有新数据产生,说明收到了某条语音指令,通过switch多分支结构(“switch (mySerial.read())”)来对语音指令的对应ID号进行判断——如果ID号是53,说明收到的语音指令是“请开门!”,则执行open_door()函数;如果ID号是54,说明收到的语音指令是“请关门!”,则执行close_door()函数。

将程序保存为Sound_Door.ino,上传至Arduino进行测试。先通过“智能管家”唤醒词进行唤醒,再发出“请开门!”语音指令,紅色LED灯亮、舵机由0°旋转至90°、红色LED灯熄灭、绿色LED灯发光;接着再发出“请关门!”语音指令,绿色LED熄灭、红色LED灯发光、舵机由90°旋转至0°、红色LED灯熄灭;反复测试,均能实现语音指令控制舵机正反转开关门的功能(如图5)。

4.方法二:在Mind+中进行图形化编程

启动Mind+,首先点击“扩展”按钮进行主控板中“Arduino Uno”、执行器中“舵机模块”和用户库中“离线语音识别模块”的添加;点击“返回”按钮后开始图形化的编程:

同样也是先编写“开门”和“关门”两个函数,包括红色和绿色LED灯的开关及舵机的旋转控制;然后再进行主程序的编写,包括语音识别的初始化和串口波特率的设置,同样也是在循环结构中先进行语音识别是否有数据可读的判断,然后通过变量Order_ID来存储语音识别的读取数据并判断其数值——如果是53,则调用执行“开门”函数;如果是54,则调用执行“关门”函数(如图6)。

将程序保存为Arduino“声控门”.sb3,点击“连接设备”后再进行程序的上传测试,效果与使用Arduino IDE进行代码编程的测试一致。

我要回帖

更多关于 plc三个开关控制一盏灯全开全关 的文章

 

随机推荐