开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

12
返回列表 发新帖
楼主: mashimin
收起左侧

[其它求助] 易语言控制PLC实现开关

[复制链接]
结帖率:84% (48/57)
发表于 2024-12-29 08:53:51 | 显示全部楼层   安徽省淮北市
两种方案:1.数据到达50工人看到了是手动去开电脑外的某个设备上按钮开灯,这种需要三菱PLC加上继电器控制那个设备上的按钮。2.数据达到50,工人看到了需要点击电脑中某个开灯的按钮。这种需要用易语言程序实时监控这个软件状态,自动点击。 第一种相对太难
回复

使用道具 举报

结帖率:100% (3/3)

签到天数: 19 天

发表于 2024-12-29 09:59:36 | 显示全部楼层   福建省莆田市
mashimin 发表于 2024-12-29 08:46
意思是使用单片机控制继电器实现吗?

plc要写程序串口通信协议,连接电脑才能和易语言通讯
回复

使用道具 举报

结帖率:100% (8/8)

签到天数: 19 天

发表于 2024-12-29 10:20:53 | 显示全部楼层   安徽省六安市
网上买个 ESP8266+继电器 模块 通过局域网控制 一般卖家都会给你板子烧录好控制程序  你只需要使用易语言网络访问esp8266的地址  或者 直接发送命令  就可以控制继电器开关
回复

使用道具 举报

结帖率:100% (8/8)

签到天数: 19 天

发表于 2024-12-29 10:28:41 | 显示全部楼层   安徽省六安市
[C++] 纯文本查看 复制代码
#include <Arduino.h>
#include <WebServer.h>
#include <WiFi.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define jdq_pin 21
#define Wd_pin 13

void wifiConnect(void);
void serverStart(void);
void ON(void);
void OFF(void);
void Wifi_jc(void);
void KG_bool(void);
void Wd_dq(void);

String data = "-1";
IPAddress staticIP(192, 168, 1, 200); // 静态IP地址
IPAddress gateway(192, 168, 1, 1); // 网关
IPAddress subnet(255, 255, 255, 0); // 子网掩码
WebServer server(5000);//端口
OneWire oneWire(Wd_pin);// 创建 OneWire 实例
DallasTemperature sensors(&oneWire);// 创建 DallasTemperature 实例

void wifiConnect(void) // 连接wifi并打印ESP32 IP
{
    const char *ssid = "独西超市";
    const char *password = "123456789";
    Serial.begin(9600);
    WiFi.config(staticIP,gateway,subnet);
    WiFi.begin(ssid, password);
    while (WiFi.status() != WL_CONNECTED)
    {
        delay(1000);
        Serial.println("连接到wifi...");
    }

    Serial.println("已连接wifi");
    Serial.println(WiFi.localIP());
}

void serverStart(void) // 启动http服务
{
    server.on("/on", ON); // URL:http://192.168.1.200:5000/on
    server.on("/off", OFF); // URL:http://192.168.1.200:5000/off
    server.on("/KG_bool", KG_bool); // URL:http://192.168.1.200:5000/KG_bool
    server.on("/Wd_dq", Wd_dq); // URL:http://192.168.1.200:5000/Wd_dq
    server.begin();
    Serial.println("web服务启动");
}

void ON() // 开灯
{
    digitalWrite(jdq_pin,HIGH);
    if(digitalRead(jdq_pin)){
        data = "开灯成功";
        server.send(200, "text/plain", data);
    } else {
        data = "开灯失败";
        server.send(200, "text/plain", data);
    }
}
void OFF() // 关灯
{
    digitalWrite(jdq_pin,LOW);
    if(digitalRead(jdq_pin) != 1 ){
        data = "关灯成功";
        server.send(200, "text/plain", data);
    } else {
        data = "关灯失败";
        server.send(200, "text/plain", data);
    }
}
void KG_bool() // 检查开关状态
{
    if (digitalRead(jdq_pin)){
        data = "1";
        server.send(200, "text/plain", data);
    } else
    {
        data = "0";
        server.send(200, "text/plain", data);
    }
    

}
void Wifi_jc() // 检查wifi是否连接成功
{
    if (WiFi.status() != WL_CONNECTED){
        wifiConnect();//重新连接wifi
    }
}
void Wd_dq(){
    // 请求温度读数
    sensors.requestTemperatures();

    // 获取温度值
    float temperatureC = sensors.getTempCByIndex(0); // 获取第一个传感器的温度

    // 检查读取是否成功
    if (temperatureC != DEVICE_DISCONNECTED_C)
    {
        data = temperatureC;
        server.send(200, "text/plain", data);
    }
    else
    {
        data = "-999";
        server.send(200, "text/plain", data);
    }
}


void setup()
{
    wifiConnect();//链接wifi
    serverStart();//启动http服务
    sensors.begin(); // 初始化 DS18B20 传感器
    pinMode(jdq_pin,OUTPUT);
}

void loop()
{
    Wifi_jc(); //wifi掉线重连
    server.handleClient();//处理请求
}


这是一个简单的 esp32创建http服务控制继电器 和检测温度的 arduino代码   

下面在给你火山安卓APP的控制方式
5cf5ae73-5c64-4481-a5cc-620957602fc5.png

易语言的pc操作方式就是网页_访问对应的地址  达到操作开关的目的


补充内容 (2024-12-29 10:34):
当然  我这上述的是wifi远程操作  如果是近距离有线操作  那还是串口更好使  直接在板子里写串口接到的命令 判断下引脚的高低电平就行了  

补充内容 (2024-12-29 10:34):
易语言的端口 串口模块  论坛有很多封装的
回复

使用道具 举报

结帖率:100% (5/5)

签到天数: 2 天

发表于 2024-12-29 10:46:39 | 显示全部楼层   广东省佛山市
我就是用c#写上位机的,用易语言简单封装一个也能用,工控福利-端口-串口通讯
https://bbs.125.la/forum.php?mod=viewthread&tid=14704022
(出处: 精易论坛)
回复

使用道具 举报

结帖率:100% (8/8)

签到天数: 19 天

发表于 2024-12-29 11:17:34 | 显示全部楼层   安徽省六安市
[C++] 纯文本查看 复制代码
#define JDQ_1 23 //继电器1的数据引脚
#define JDQ_2 22 //继电器2的数据引脚
#define JDQ_3 21 //继电器3的数据引脚

bool KG_1 = false;
bool KG_2 = false;
bool KG_3 = false;

void setup() {
  Serial.begin(9600); // 设置串口波特率
  Serial.println("串口设置已完成");
  pinMode(JDQ_1, OUTPUT); // 设置引脚为输出模式
  pinMode(JDQ_2, OUTPUT); // 设置引脚为输出模式
  pinMode(JDQ_3, OUTPUT); // 设置引脚为输出模式
}

void loop() {
  if (Serial.available() > 0) { // 检查是否有数据可读
    String receivedData = Serial.readString(); // 读取串口数据
    receivedData.trim(); // 去除字符串首尾的空白字符
    Serial.print("接收到的数据: ");
    Serial.println(receivedData); // 打印接收到的数据

    if (receivedData == "1" && !KG_1) {
      Serial.println("开1");
      digitalWrite(JDQ_1, HIGH); // 设置数据引脚高电平
      KG_1 = true;
    } else if (receivedData == "1" && KG_1) {
      Serial.println("关1");
      digitalWrite(JDQ_1, LOW); // 设置数据引脚低电平
      KG_1 = false;
    } else if (receivedData == "2" && !KG_2) {
      Serial.println("开2");
      digitalWrite(JDQ_2, HIGH); // 设置数据引脚高电平
      KG_2 = true;
    } else if (receivedData == "2" && KG_2) {
      Serial.println("关2");
      digitalWrite(JDQ_2, LOW); // 设置数据引脚低电平
      KG_2 = false;
    } else if (receivedData == "3" && !KG_3) {
      Serial.println("开3");
      digitalWrite(JDQ_3, HIGH); // 设置数据引脚高电平
      KG_3 = true;
    } else if (receivedData == "3" && KG_3) {
      Serial.println("关3");
      digitalWrite(JDQ_3, LOW); // 设置数据引脚低电平
      KG_3 = false;
    } else {
      Serial.println("无效的命令");
    }
  }
}


这是串口控制继电器的代码 需要使用 Arduino IDE 烧录进 ESP8266 或者 ESP32 单片机  成本大概在15块钱左右  ESP8266 11元 5V单路继电器4元  一个esp8266能控制多个继电器 或者一个多路继电器

至于PC端软件  就直接用易语言的串口模块  给ESP8266发送 1 2 3这种命令就行了
回复

使用道具 举报

结帖率:100% (8/8)

签到天数: 19 天

发表于 2024-12-29 11:18:26 | 显示全部楼层   安徽省六安市
1.png

接线图如上图  https://wokwi.com/projects/new/esp32
回复

使用道具 举报

结帖率:75% (42/56)

签到天数: 11 天

 楼主| 发表于 2025-1-5 22:17:47 | 显示全部楼层   广西壮族自治区百色市
花间一壶酒 发表于 2024-12-29 10:28
[mw_shl_code=cpp,true]#include
#include
#include

兄弟能帮忙写个软件,实现一下软件和硬件吗?有偿服务。
回复

使用道具 举报

结帖率:100% (8/8)

签到天数: 19 天

发表于 2025-1-6 11:54:32 | 显示全部楼层   安徽省六安市
mashimin 发表于 2025-1-5 22:17
兄弟能帮忙写个软件,实现一下软件和硬件吗?有偿服务。

https://bbs.125.la/forum.php?mod ... rtype=1#pid29599968

补充内容 (2025-1-6 11:59):
这是MQTT协议远程控制  可以用wai网超远程控制  之前发的 两个方案 一个是TCP局域网控制  另一个是串口控制有线连接    像你这种直接串口控制就行了

补充内容 (2025-1-6 12:01):
串口控制代码就那几种  简单粗暴 无非是自己配置环境烧录程序到板子麻烦点 易语言收发串口命令就几行代码 楼上那个大佬都封装过了模块
回复

使用道具 举报

结帖率:93% (14/15)

签到天数: 12 天

发表于 2025-1-8 08:49:17 | 显示全部楼层   山西省太原市
你可以买个MODBUS-TCP的 IO模块

补充内容 (2025-1-8 08:53):
Tao宝搜了下  MODBUS-TCP的 IO模块好像不多  或者你可以买个MODBUS-RTU的  再买个USB转485
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表