组态王通过Modbus TCP与ESP32通讯

组态王

组态王在工控领域被广泛应用。作为人机界面可以开发多种应用。与ESP8266通过无线网通讯没有太多的文章介绍,这里介绍通过使用modbus TCP协议实现数据上传和命令下发。

组态王的通讯设置

组态王可以通过板卡或串口来建立一个通讯路径。
在这里插入图片描述
这个画面中,选择设备-新建出现新建设备画面。
在这里插入图片描述
选择莫迪康(Modicon)作为生产厂家,就是我们要通讯设备的生产厂家(大名鼎鼎的Modicon,以前也叫过歌德,中国的炼钢厂当时用得都是这个厂家得PLC)。通讯协议选择是ModbusTCP。这个协议是在Modbus串口通讯协议发展而来得。

给这个设备起一个名称。这个是可以随意取。
在这里插入图片描述
这里要选择一个串口,因为在程序中要创建Socket,不知道为啥非要选串口。选一个不能用到得串口,我选择了COM21。

在这里插入图片描述
在这里需要注意,上面设置是按如下得格式设置得:

192.168.4.81 是要通讯的主机(Server)的IP地址。
:6600 是通讯服务器的端口号
5 是ModbusTCP的地址
/50 是超时时间
后面就是一路确定到:
在这里插入图片描述

组态王变量设置

Modbus的通讯可以是离散量输入,离散量输出,模拟量输入和模拟量输出。离散量是一个位,用modbus就是10001或者00001,10001表示输入,即数字输入点,00001表示输出,即数字量输出点。模拟量输入采用30001,十六位的输入,模拟量输出是40001,16位数字表示一个输出值。在这里我们设置一个16位寄存器值,40101.
在这里插入图片描述
这里选择的连接设备时WTGSimuPLC。寄存器是40101. 数据类型是无符号整数。通讯频率为1000ms。有了这个变量可以在图形中做可视化就可以读取这个变量值了。

变量显示

在画面中展示做一个数字,然后和变量进行连接就可以实现这个变量的显示了。
动画连接,选择模拟量输出:
在这里插入图片描述
在画面上可以展示这个输出了。

ESP8266编程

需要在ESP8266中编程,我还是选择了Arduino IDE进行编程。方法是当接受到信息时,接受这些信息,检查信息是否是发送给自己的,如果是的话,接受信息,然后按规约的要求发送信息到发送方。在编制程序时不需要添加一些头文件。

#include <ESP8266WiFi.h>
#include <WiFiClient.h>

WiFiClient client;
IPAddress loIP(192, 168, 4, 61);
IPAddress snIP(255, 255, 255, 0);
IPAddress gwIP(192, 168, 4, 1);
IPAddress mbTCP(192, 168, 4, 51);
WiFiServer server(6600);            // 服务器,server

void wifiSetup()
{
	  if (!WiFi.config(loIP, gwIP, snIP))
	  {
	    Serial.println("Satation配置不成功");
	    delay(3000);
	  }
	  WiFi.mode(WIFI_STA);
	  WiFi.begin(ssid, password);
}

void sMBTCP(uint8_t* buff, int16_t iLength)
{
  int iTemp;
  int rAdd;
  if ( bDebug )
  {
    Serial.println("The length = " + String(iLength));
    for(int i = 0; i < iLength; i++)
      Serial.printf("The buff[%d] = 0x%02X\n", i, (uint8_t)buff[i]);
  }
  if (buff[6] != 0x05)        // modbus TCP address
    return;
  switch ( buff[7] )
  {
    case 3:                   // read hold register
      rAdd = (buff[8] << 8) + buff[9];    // register address
      if ( bDebug4 )
      {
        Serial.println("The rAdd = " + String(rAdd));
      }
      buff[5] = ((buff[10] << 8) + buff[11]) * 2 + 3;  // reply bytes
      buff[8] = ((buff[10] << 8) + buff[11]) * 2;        
      iTemp = 9 + buff[8];        // total bytes send

      if ( rAdd == 0)
      {
        for (int i = 0; i < buff[8]/2; i++)
        {
          buff[9 + (i * 2)] = hreg40001[i] >> 8;
          buff[10 + (i * 2)] = hreg40001[i];
        }
      }
      if ( bDebug )
      {
        for ( int i = 0; i < iTemp; i++)
        {
          Serial.printf("buff[%d] = 0x%02X\n", i, (uint8_t)buff[i]); 
        }
      }
      client.write(buff, iTemp);
      break;
    case 6:
		break;
    case 16:

      break;
    default:
      break;    
  }
  if ( bDebug )
  {
    for (int i = 0; i < iTemp; i++)
      Serial.printf("The buff[%d] = 0x%02X\n", i, (uint8_t)buff[i]);
  }
}

void setup()
{
	Serial.begin(115200);					// 调试助手
 	delay(1000);                          	// pasue 1 second
  	wifiSetup();                     			// setup wifi hot AP
  	server.begin();							// 服务器运行
}

void loop() 
{
  if (server.hasClient())         // 这个是当有新的client与Server连接时
  {
    client = server.available();
    Serial.println("client connected");
  }	

  if ( client && client.connected())
  {
    int i = 0;
    while (client.available())
    {
      char c = client.read();
      if (client.available() == 0)
        mbLength = i + 1;
      mdTCPbuff[i] = c;
      i++;
    }
    if ( i > 0 )
    {
      sMBTCP(mdTCPbuff, i);
    }
  }
}

上面的程序可以完成modbusTCP通讯了。场景是固定的IP地址,发送读取命令,然后应答读取。

总结

用组态王做一个人机界面在工控领域比较流行。ESP8266可以通过Wifi作为一个服务器为HMI提供服务。

### 回答1: 组态王是一款常用的工业自动化软件平台,它可以通过与各种智能仪表的通讯实现数据的采集、监控和控制。其中,正泰电能表是一款常见的电力计量仪表,也可以通过组态王进行通讯组态王与正泰电能表的通讯方式采用了modbus协议。modbus是一种通信协议,它被广泛应用于工业自动化系统中。通过modbus协议,可以实现各种设备之间的数据交互,包括数据采集、控制命令、告警信息等。而正泰电能表是一种带通讯接口的电力计量仪表,它支持modbus通讯协议,可与组态王实现数据的采集、监控和控制。 通过组态王与正泰电能表的通讯,用户可以实现对电力系统的实时监测,以及对电能数据的采集和分析。在应用中,组态王可以通过编程实现自动化控制,以提高生产效率和节约能源。同时,正泰电能表的使用也可以提高电力监测的准确性和可靠性,为企业节约成本并降低风险。总之,组态王与正泰电能表的通讯是一种高效、可靠的电力监测手段,为工业企业提供了诸多便利和优势。 ### 回答2: 组态王是一种常用的工业自动化软件,它可以通过不同的通讯协议进行与各种设备的通讯交互。其中,Modbus就是一种应用广泛的串口通讯协议,在工业控制系统中被广泛应用。正泰电能表是一种用于电能计量和电能管理的设备,在工业生产和民用场所均有应用。组态王可以通过Modbus协议与正泰电能表进行通信,获取电能数据,从而实现对电能消耗的监测和管理。使用组态王与正泰电能表通讯的好处是,可以实现实时的电能数据采集和远程监控,方便管理人员进行电能管理和调控。另外,组态王还可以对电能数据进行分析与处理,提供更多的电能消耗趋势分析和优化建议,从而提高电能利用效率,降低电能消耗成本。总之,组态王通过Modbus协议与正泰电能表进行通讯交互,不仅可以实现对电能数据的可视化监控和管理,也为实现电能节约和优化提供了良好的技术支持。 ### 回答3: 组态王是一款用于自动化设备的软件,可以通过与各种仪表、传感器和控制器通信来实现自动化控制和数据采集等功能。其中,组态王通过modbus协议与正泰电能表仪表进行通讯,实现对电能表的监测和控制。 正泰电能表是一种用于测量电能消耗的仪表,它可以测量电压、电流、功率因数等电力参数,并能通过通讯接口将这些数据传输给上位设备进行分析和处理。而modbus协议则是一种通讯协议,可以让不同的设备之间进行数据交换和通信。 通过组态王与正泰电能表仪表之间的通信,用户可以实现对电能消耗的监控和控制。例如,可以通过组态王程序实时监测电能使用情况,或通过组态王程序控制电能表的开关状态,实现对电力的精细化管理。 总之,组态王与正泰电能表仪表之间的通信,为用户提供了一种可靠、高效的电能管理解决方案。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值