标签:用博途1200PLC编程(下面没有选PLC的选项随便选一个下面的)
某投币饮料自动售货机,只接受一元、一角硬币和5元纸币。当投入硬币与所选饮料价格一致,自动向顾客提供饮料。该机只提供两种饮料,可乐和咖啡。可乐2元,咖啡3元。
控制要求:
1、顾客首先选择饮料品种,并按下相应按钮,饮料指示灯亮。
2、顾客投币后当硬币与所选择饮料价格一致时,对应饮料罐电磁阀打开,
```
```液体自动流出9秒关断。
3、多余的钱自动退出,打开退钱窗口。
3、当顾客选定一种饮料,另一饮料按钮无效。
不知道你这个问题是否已经解决, 如果还没有解决的话:
- 你可以看下这个问题的回答https://ask.csdn.net/questions/7728081
- 以下回答来自chatgpt: 解决方案: 1.硬件设计:利用传感器检测硬币和纸币的面额,然后通过3.2三极管实现电平转换电路将信号转换成数字信号输入到PLC中进行处理。 2. PLC程序设计:首先设计一个2选1多路选择器,顾客选择饮料后,根据饮料选择,将信号输入到二进制编码器中进行编码,然后根据输入的硬币和纸币的面额以及已选饮料的价格进行比较,并根据比较结果控制对应饮料罐的电磁阀打开或关闭。同时设置一个余额变量,用于记录投币的多余金额,当多余金额大于等于一元或一角时,自动退出,并打开退钱窗口。 代码示例: LD K1 // K1表示饮料1按钮信号 OUT M1 // M1表示饮料1指示灯亮 LD K2 // K2表示饮料2按钮信号 OUT M2 // M2表示饮料2指示灯亮 // 2选1多路选择器信号处理 LD X0 // X0表示选择饮料1 ANI X1 // X1表示选择饮料2 ORI X0 // X0,X1多路选择结果 // 二进制编码器信号处理 ANI I0 // I0表示1元硬币 ANI I1 // I1表示1角硬币 ANI I2 // I2表示5元纸币 OUT Y0 // Y0为二进制编码器的输出1 OUT Y1 // Y1为二进制编码器的输出2 // 余额变量初始化 LD #0 // 初始余额为0 ST V0 // V0为余额变量 // 投币处理 LD I0 // I0表示1元硬币 SUB #1 // 扣除投入的1元 JZ BOTTLE_1 // 当余额等于饮料1价格时控制电磁阀打开 CALL REFUND // 处理退钱 LD I1 // I1表示1角硬币 SUB #0.1 // 扣除投入的1角 JZ BOTTLE_1 // 当余额等于饮料1价格时控制电磁阀打开 CALL REFUND // 处理退钱 LD I2 // I2表示5元纸币 SUB #5 // 扣除投入的5元 JN COMPARE // 当余额小于0时跳转到比较金额 // 硬币和纸币面额比较 COMPARE: LD #2 // 饮料1价格 CMP V0 // 比较余额和饮料1价格 JN BOTTLE_1 // 当余额等于饮料1价格控制电磁阀打开 LD #3 // 饮料2价格 CMP V0 // 比较余额和饮料2价格 JN BOTTLE_2 // 当余额等于饮料2价格控制电磁阀打开 CALL REFUND // 处理退钱 // 饮料控制 BOTTLE_1: LD Y0 // Y0为二进制编码器的输出1 OUT M3 // M3表示饮料1电磁阀打开 CALL REFUND // 处理退钱 JMP END BOTTLE_2: LD Y1 // Y1为二进制编码器的输出2 OUT M4 // M4表示饮料2电磁阀打开 CALL REFUND // 处理退钱 JMP END // 退钱处理 REFUND: ST V0 // 保存余额 LD #0 // 初始退钱金额为0 LD I0 // I0表示1元硬币 LP1: SUB #1 // 扣除1元 JN LP1 // 当余额小于1元时退出循环 ADD #1 // 保存1元硬币的数量 LD I1 // I1表示1角硬币 LP2: SUB #0.1 // 扣除1角 JN LP2 // 当余额小于1角时退出循环 ADD #0.1 // 保存1角硬币的数量 OUT M5 // M5表示退钱窗口打开 ST V0 // 保存余额 RET END: HALT // 程序结束
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^