当前位置: 首页 > news >正文

Modbus TCP协议介绍(ModbusTCP)

文章目录

  • 理解Modbus TCP协议(Understanding Modbus TCP Protocol)
    • 简介(Introduction to Modbus TCP)
      • 历史背景(Historical Context)
      • 关键特性(Key Features)
    • Modbus TCP协议结构(Modbus TCP Protocol Structure)
      • 帧格式(Frame Format)
        • MBAP头部
          • **Transaction Identifier (事务标识符)**
          • **Protocol Identifier (协议标识符)**
          • **Length (长度)**
          • **Unit Identifier (单元标识符)**
        • PDU部分
        • 示例
          • 请求帧示例
          • 响应帧示例
      • 数据模型(Data Model)
        • 离散输入
        • 线圈
        • 输入寄存器
        • 保持寄存器
    • 通信过程(Communication Process)
      • 建立连接(Establishing a Connection)(从设备默认监听端口502)
      • 请求与响应(Request and Response)
    • 实际实施(Practical Implementation)
      • 设置Modbus TCP服务器(Setting Up a Modbus TCP Server)
        • 注意:实际使用中,我们通常无需编写 modbus TCP 服务端代码,直接采购的支持 Modbus TCP 协议的设备出厂时就已包含
      • 与Modbus TCP客户端通信(Communicating with a Modbus TCP Client)
    • Modbus TCP的应用(Applications of Modbus TCP)
    • 挑战与解决方案(Challenges and Solutions)
    • 结论(Conclusion)
    • 其他
      • 关于Modbus TCP的“interoperability”(互操作性)
      • 关于 modbus TCP 客户端服务端的模拟通信

理解Modbus TCP协议(Understanding Modbus TCP Protocol)

The Modbus TCP protocol is an essential communication standard that serves as a backbone(支柱;脊梁) for industrial(工业) and automation(自动化) systems worldwide.
Modbus TCP协议是一种至关重要的通信标准,它是全球工业和自动化系统的支柱。

It builds upon the legacy(遗留的;已停产的) Modbus protocol, extending it over TCP/IP networks to enable communication between devices on modern Ethernet networks.
它基于传统的Modbus协议,通过扩展到TCP/IP网络上,使得设备能够在现代以太网网络上进行通信。

This article delves into the technical intricacies, applications, and implementation examples of Modbus TCP, providing a comprehensive guide for engineers, developers, and enthusiasts(爱好者) in the field of industrial automation.
本文深入探讨了Modbus TCP的技术细节、应用和实现示例,为工业自动化领域的工程师、开发人员和爱好者提供了全面的指南。

简介(Introduction to Modbus TCP)

历史背景(Historical Context)

Modbus, originally developed by Modicon in 1979, is a communication protocol designed for industrial devices to communicate over serial lines(串行线路).
Modbus最初由Modicon在1979年开发,是一种为工业设备设计的通过串行线进行通信的通信协议。

With the advent(出现) of Ethernet and TCP/IP, the protocol was extended to operate over these networks as Modbus TCP, making it more relevant(相关的) in the context of modern industrial systems.
随着以太网和TCP/IP的出现,该协议被扩展为在这些网络上作为Modbus TCP运行,使其在现代工业系统的背景下更加相关。

关键特性(Key Features)

  • Simplicity and Openness: Modbus TCP inherits its predecessor’s(前身;前任) simplicity, making it easy to understand, implement, and integrate(整合;集成).
    简单性和开放性:Modbus TCP继承了其前身的简单性,使其易于理解、实现和整合。

  • Scalability: It can be scaled(扩展) from small, single-processor devices to complex networked(联网的) systems.
    可扩展性:它可以从小型的单处理器设备扩展到复杂的网络系统。

  • Interoperability: Being an open standard, it ensures interoperability(互操作性) among devices from different manufacturers(生产商).
    互操作性:作为一个开放标准,它确保了来自不同制造商的设备之间的互操作性。

Modbus TCP协议结构(Modbus TCP Protocol Structure)

帧格式(Frame Format)

A Modbus TCP frame consists of a 7-byte header and a data section. The header includes fields for transaction(事务) identifier(标识符), protocol identifier, length, and unit identifier, facilitating(促进) the management of requests and responses over TCP/IP.
Modbus TCP帧由一个7字节的头部和一个数据部分组成。头部包含事务标识符、协议标识符、长度和单元标识符等字段,便于在TCP/IP上管理请求和响应。

Modbus TCP的请求帧和响应帧在帧格式上是相同的。它们都包括一个MBAP头(Modbus Application Protocol header)和一个PDU(Protocol Data Unit)部分。MBAP头用于TCP/IP通信,而PDU部分与传统的Modbus RTU/ASCII帧的PDU相同。

MBAP头部

MBAP头部由以下几个部分组成:

Transaction Identifier (事务标识符)

2字节,用于协调请求和响应之间的事务处理。客户端发起的每个请求都有一个唯一的事务标识符,服务器的响应会使用相同的标识符。

Protocol Identifier (协议标识符)

2字节,用于识别上层协议。对于Modbus TCP来说,这个值是0。

Length (长度)

2字节,表示接下来的单元标识符、功能码和数据的总字节数。

Unit Identifier (单元标识符)

1字节,通常用于识别远程服务器,特别是在串行线路上通过网关连接到多个Modbus设备时。

PDU部分

PDU部分包括:

  • Function Code (功能码): 1字节,指示请求的操作类型,如读取或写入数据。
  • Data (数据): 随功能码而变,对于请求,它包含了请求的地址和数量等信息;对于响应,它包含了请求的数据或者状态信息。
示例
请求帧示例

假设需要从设备上读取保持寄存器的值,从地址100开始,读取3个寄存器。

  • Transaction Identifier: 0x0001
  • Protocol Identifier: 0x0000
  • Length: 0x0006 (接下来的字节数,包括单元标识符、功能码和数据)
  • Unit Identifier: 0x01
  • Function Code: 0x03 (读取保持寄存器)
  • Data: 开始地址0x0064 (100),数量0x0003 (3)
响应帧示例

对上述请求的响应,假设读取的寄存器值分别为:0x000A0x000B0x000C

  • Transaction Identifier: 0x0001 (与请求相同)
  • Protocol Identifier: 0x0000
  • Length: 0x0009 (接下来的字节数,包括单元标识符、功能码、字节计数和数据)
  • Unit Identifier: 0x01
  • Function Code: 0x03
  • Byte Count: 0x06 (读取的字节数,3个寄存器*2字节/寄存器 = 6字节)
  • Data: 寄存器值0x000A0x000B0x000C

通过这些示例,可以看到Modbus TCP请求和响应帧的结构是相似的,主要区别在于PDU部分的数据内容。

数据模型(Data Model)

Modbus TCP follows a simple data model with four primary tables:
Modbus TCP遵循一个简单的数据模型,包含四个主要表格:

离散输入
  • Discrete Inputs: Read-only boolean values.
    离散输入:只读布尔值。
线圈
  • Coils: Read-write boolean values.
    线圈:可读写布尔值。

在Modbus协议的数据模型中,“线圈”(Coils) 是用来表示可读写的布尔值(0或1)的内存位置。这个术语“线圈”来源于早期的继电器控制系统,在这些系统中,物理的继电器(或线圈)被用来打开或关闭电路,从而控制机械设备的开启和关闭。当继电器的线圈被激活(通电)时,相应的开关就会闭合,反之则断开。

在Modbus协议中,虚拟的“线圈”延续了这一概念,用于代表和控制设备的二进制状态。例如,一个线圈可以用来控制一个电机的启动/停止,或者表示一个传感器的开/关状态。每个线圈的状态都由单个比特表示,可以被设置(1)或重置(0)。

因此,尽管在数字通信和控制系统中我们不再直接操作物理的继电器线圈,这个术语仍然被用来描述可以被单独控制的逻辑单位。这样的命名保留了与早期自动化系统的联系,同时也提供了一个直观的方式来理解这些控制元素的作用。

在Modbus协议的上下文中,线圈的使用不仅限于控制继电器,它们可以用来控制或表示任何二进制输出/输入设备的状态,使得Modbus协议能够灵活地应用于各种工业自动化和控制场景中。

输入寄存器
  • Input Registers: Read-only 16-bit values.
    输入寄存器:只读的16位值。
保持寄存器
  • Holding Registers: Read-write 16-bit values.
    保持寄存器:可读写的16位值。

通信过程(Communication Process)

建立连接(Establishing a Connection)(从设备默认监听端口502)

A Modbus TCP connection is established over TCP/IP using the standard socket connection mechanism. The client (usually a master device) initiates a connection to the server (slave device) on port 502, which is the default port for Modbus TCP communications.
通过使用标准的套接字连接机制在TCP/IP上建立Modbus TCP连接。客户端(通常是主设备)通过502端口(这是Modbus TCP通信的默认端口)发起连接到服务器(从设备)。

请求与响应(Request and Response)

After establishing a connection, the client sends request packets to read or write to the data model. The server processes these requests and responds accordingly(相应地).
建立连接后,客户端发送请求包以读取或写入数据模型。服务器处理这些请求并做出相应的响应。

实际实施(Practical Implementation)

设置Modbus TCP服务器(Setting Up a Modbus TCP Server)

A basic example of setting up a Modbus TCP server using a hypothetical(假设的) library modbus-tcp might look like this:
使用一个假想的库modbus-tcp设置Modbus TCP服务器的基本示例可能如下所示:

from modbus_tcp import ModbusServer# Initialize the server with the IP address and port number
server = ModbusServer(host='192.168.1.100', port=502)# Define handling for read and write requests
def handle_request(request):# Process request and return responsereturn responseserver.on_request(handle_request)# Start the server
server.start()
注意:实际使用中,我们通常无需编写 modbus TCP 服务端代码,直接采购的支持 Modbus TCP 协议的设备出厂时就已包含

在实际应用中,通常我们会采购已经支持Modbus TCP协议的设备,如传感器、PLC(可编程逻辑控制器)、变频器等,这些设备在出厂时已经内置了Modbus TCP服务器的功能。这意味着它们能够监听网络上的请求,并且能够处理来自Modbus TCP客户端(通常是监控系统、SCADA系统或其他控制设备)的命令。

部署这些设备的步骤大致如下:

  1. 物理连接:将Modbus TCP支持的设备连接到网络中,这通常通过以太网线和交换机完成。

  2. 配置IP地址:为每个设备配置一个唯一的IP地址。这可以通过设备的控制面板、专用软件或网络协议如DHCP完成。在很多情况下,为了保证网络通信的可靠性,会给这些设备配置静态IP地址。

  3. 配置Modbus设置:根据需要,可能还需要在设备上配置Modbus相关的设置,如单元标识符(Unit ID)或其他参数。这一步骤依赖于具体设备的配置方法。

  4. 测试通信:配置完成后,使用Modbus客户端软件或设备测试与Modbus TCP服务器(即你的设备)的通信是否正常。这通常涉及读取或写入设备的寄存器来验证配置。

“设置Modbus TCP服务器”的步骤,更多的是在学习、测试或开发自定义解决方案时使用。例如,如果你正在开发一个新的Modbus TCP客户端应用,或者需要在没有实际硬件的情况下测试系统,你可能会使用模拟的Modbus TCP服务器软件来模拟真实设备的行为。

实际上,内置Modbus TCP功能的工业设备设计为即插即用,简化了现场的网络集成和设备配置过程。配置好IP地址并确保网络连接正常后,这些设备就可以作为Modbus TCP服务器,响应网络上Modbus客户端的请求了。

与Modbus TCP客户端通信(Communicating with a Modbus TCP Client)

Similarly, setting up a client to communicate with a Modbus TCP server can be demonstrated as follows:
同样,设置客户端与Modbus TCP服务器通信的示例可以如下所示:

from modbus_tcp import ModbusClient# Initialize the client with the server's IP address and port
client = ModbusClient(host='192.168.1.100', port=502)# Connect to the server
client.connect()# Read from holding registers starting at address 0, quantity of 10(读取十个保存寄存器)
registers = client.read_holding_registers(address=0, quantity=10)# Print the values
print(registers)# Close the connection
client.disconnect()

Modbus TCP的应用(Applications of Modbus TCP)

Modbus TCP is widely used in various industrial sectors(领域), including manufacturing, energy, building automation(建筑自动化), and more. Its applications range from monitoring and controlling devices, like sensors and actuators(执行器), to more complex scenarios like integrating with SCADA (Supervisory(监督的) Control and Data Acquisition) systems for comprehensive facility management.
Modbus TCP在各种工业领域广泛使用,包括制造业、能源、建筑自动化等。其应用范围从监控和控制设备(如传感器和执行器)到更复杂的场景,如与SCADA(监控控制和数据采集)系统集成,进行综合设施管理。

挑战与解决方案(Challenges and Solutions)

While Modbus TCP offers many benefits, it also faces challenges like security vulnerabilities(脆弱性) inherent(固有的、内在的) in its simplicity. Modern implementations often incorporate security measures such as VPNs, encryption, and secure authentication(认证) methods to mitigate(减轻) these risks.
虽然Modbus TCP提供了许多好处,但它也面临着由于其简单性而固有的安全漏洞等挑战。现代实施通常包括采取VPN、加密和安全认证方法等安全措施来减轻这些风险。

结论(Conclusion)

Modbus TCP continues to be a vital(至关重要的) protocol in the realm of industrial automation, offering a blend(和谐结合;融合) of simplicity, efficiency, and interoperability. Its widespread adoption(采用) and the community’s ongoing(持续的) efforts to address(设法解决) its limitations ensure its relevance(相关性) in the evolving(不断发展的) landscape(领域) of industrial communication technologies.
Modbus TCP继续在工业自动化领域内是一个至关重要的协议,它提供了简单性、效率和互操作性的完美结合。它的广泛采用以及社区持续努力解决其局限性,确保了它在不断发展的工业通信技术领域中的相关性。

其他

关于Modbus TCP的“interoperability”(互操作性)

Modbus TCP的 “interoperability”(互操作性) 指的是不同制造商生产的设备能够通过Modbus TCP协议无缝通信和协同工作的能力。互操作性是信息技术和工业自动化领域的一个关键概念,它确保了不同设备之间可以交换信息和使用对方的服务,即使这些设备来自不同的厂家、运行不同的软件或使用不同的硬件平台。

对于Modbus TCP而言,互操作性的实现基于几个关键因素:

  1. 开放标准:Modbus TCP是一个公开的协议标准,任何组织或个人都可以访问这些标准的细节,并在自己的设备或软件中实现这些标准。这种开放性促进了广泛的采用和支持,从而增强了不同设备间的互操作能力。

  2. 统一的通信协议:Modbus TCP定义了一组统一的通信规则,包括数据格式、功能码和错误检测机制等。这确保了所有遵循Modbus TCP标准的设备都能以相同的方式交换数据,无论制造商或设备类型。

  3. 简单性和灵活性:Modbus TCP的简单性和灵活性也有助于互操作性。它支持多种数据类型和操作,能够满足不同应用的需求,同时保持足够的简单性,以便于不同厂家的设备实现和理解。

  4. 广泛的支持:由于Modbus TCP的广泛应用,许多工具和库已经支持这个协议,提供了现成的解决方案来简化设备间的通信。这进一步降低了实现互操作性的障碍。

因此,Modbus TCP的互操作性意味着不同来源的设备和系统可以更容易地集成在一起,为用户提供更大的灵活性和选择性,同时降低了系统整合的复杂性和成本。这对于构建和维护大型、复杂的自动化系统尤其重要,因为它允许系统设计者从多个供应商中选择合适的设备,而不用担心兼容性问题。

关于 modbus TCP 客户端服务端的模拟通信

参考文章:Python Docker实现Modbus TCP协议客户端与服务端模拟通信

相关文章:

Modbus TCP协议介绍(ModbusTCP)

文章目录 理解Modbus TCP协议(Understanding Modbus TCP Protocol)简介(Introduction to Modbus TCP)历史背景(Historical Context)关键特性(Key Features) Modbus TCP协议结构&…...

【Java核心能力】一篇文章了解 ZooKeeper 底层运行原理

欢迎关注公众号(通过文章导读关注:【11来了】),及时收到 AI 前沿项目工具及新技术的推送! 在我后台回复 「资料」 可领取编程高频电子书! 在我后台回复「面试」可领取硬核面试笔记! 文章导读地址…...

P2123皇后游戏

P2123皇后游戏 参考题解 #include <iostream> #include <algorithm> using namespace std;int T; int n; long long res;struct Person {int a,b,d; }p[20005];bool person_cmp(const Person& x,const Person& y) {if(x.d y.d){if(x.d < 0)return x.a …...

git之目前的主流版本

官方文档 简介 我们都知道&#xff0c;在开发过程中&#xff0c;版本控制是至关重要的。Git作为目前最为流行的版本控制系统&#xff0c;已经成为了开发者们的标配。出于好奇&#xff0c;本人对git目前主流几大版本&#xff08;GitLab、GitHub、Gitee 和 GitCode&#xff09;…...

PyQT5学习--新建窗体模板

目录 1 Dialog 2 Main Window 3 Widget Dialog 模板&#xff0c;基于 QDialog 类的窗体&#xff0c;具有一般对话框的特性&#xff0c;如可以模态显示、具有返回值等。 Main Window 模板&#xff0c;基于 QMainWindow 类的窗体&#xff0c;具有主窗口的特性&#xff0c;窗口…...

企业产品网络安全建设日志0328

文章目录 Actuator再次暴露域名上线基线检查初见效果WAF更新遇波折301跳转推进中 Actuator再次暴露 为了验证挖f的拦截效果&#xff0c;自己随手拼了个Actuator&#xff0c;结果可以访问到公司的actuator。。 据称是某网关更换新组件后未做防御&#xff0c;已要求全部做防御&a…...

QT(C++)-error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“2”不匹配值“0”

1、项目场景&#xff1a; 在VS中采用QT&#xff08;C&#xff09;调试时&#xff0c;出现error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“2”不匹配值“0”错误 2、解决方案&#xff1a; 在“解决方案资源管理器”中选中出现此类BUG的项目&#xff0c;右键-…...

【 MyBatis 】| 关于多表联查返回 List 集合只查到一条的 BUG

目录 一. &#x1f981; 写在前面二. &#x1f981; 探索过程2.1 开端 —— 开始写 bug2.2 发展 —— bug 完成2.3 高潮 —— bug探究2.4 结局 —— 效果展示 三. &#x1f981; 写在最后 一. &#x1f981; 写在前面 今天又是 BUG 气满满的一天&#xff0c;一个 xxxMapper.xm…...

PL/SQL的词法单元

目录 字符集 标识符 分隔符 注释 oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 PL/SQL块中的每一条语句都必须以分号结束。 一个SQL语句可以跨多行&#xff0c;但分号表示该语句的结束:一行中也可以有多条 SQL语句&…...

第三十二天-PythonWeb主流框架-Django框架

目录 1.介绍 发展历史 介绍 2.使用 1.安装 2.创建项目 3.项目结构 4.启动 3.开发流程 1.设置ip可访问 2.创建模块 3.第一个页面 4.视图 5.include()参数 6.url与视图的关系 7.响应内容 4.视图处理业务逻辑 1.响应html 2.获取url参数 3.从文件响应html内容 …...

利用python搭建临时文件传输服务

场景 如果想从一台服务器上传输文件又多种方法&#xff0c;其中常见的是利用scp进行传输&#xff0c;但是需要知道服务器的账号密码才能进行传输&#xff0c;但有时候我们并不知道账号密码&#xff0c;这个时候我们就可以通过python -m SimpleHTTPServer 命令进行传输文件 启…...

详解 WebWorker 的概念、使用场景、示例

前言 提到 WebWorker,可能有些小伙伴比较陌生,不知道是做什么的,甚至不知道使用场景,今天这篇文章就带大家一起简单了解一下什么是 webworker! 概念 WebWorker 实际上是运行在浏览器后台的一个单独的线程,因此可以执行一些耗时的操作而不会阻塞主线程。WebWorker 通过…...

IOS面试题编程机制 6-10

6. 如何理解MVVM设计模式?MVVM即 Model-View-ViewModel 1.View主要用于界面呈现,与用户输入设备进行交互 2.ViewModel是MVVM架构中最重要的部分,ViewModel中包含属性,方法,事件,属性验证等逻辑,负责View与Model之间的通讯 3.Model就是我们常说的数据模型,用于数据的构造…...

seleniumui自动化实例-邮箱登录

1.登录163邮箱源码&#xff1a; from selenium import webdriver driver webdriver.Firefox() driver.get("http://www.163.com") driver.find_element_by_id("id").clear() driver.find_element_by_id("id").send_keys("用户名")…...

力扣练习 3.27

121. 买卖股票的最佳时机 贪婪思想&#xff1a;力争在最低成本买入&#xff0c;最高利润卖出。 [7,1,5,3,6,4] 可以先假设在第一天买入和卖出&#xff0c;这时最低成本是7&#xff0c;最大利润是7-70 然后假设在第二天买入和卖出&#xff0c;成本就是1&#xff0c;利润也是0 第…...

C 指向指针的指针

指向指针的指针是一种多级间接寻址的形式&#xff0c;或者说是一个指针链。通常&#xff0c;一个指针包含一个变量的地址。当我们定义一个指向指针的指针时&#xff0c;第一个指针包含了第二个指针的地址&#xff0c;第二个指针指向包含实际值的位置。 一个指向指针的指针变量…...

通俗易懂:新生代、老年代和永久代/元空间的具体含义是什么?

在Java虚拟机&#xff08;JVM&#xff09;的内存管理中&#xff0c;堆内存通常被划分为几个不同的区域&#xff0c;以便更有效地管理和回收内存。以下是新生代&#xff08;Young Generation&#xff09;、老年代&#xff08;Old Generation&#xff09;和永久代/元空间&#xf…...

Centos7.9备份mysql数据库

1. 备份 备份shell脚本 [rootiZoqvrzbtnzd6kZ local]# vi mysql_backup.sh #!/bin/bash #设置MySQL登录信息 MYSQL_USER"root" MYSQL_PASSWORD"**********" MYSQL_DATABASE"ubox" BACKUP_DIR"/usr/local/mysql_backup" MONTH"…...

Automatic Prompt Engineering

让大模型自己生成prompt&#xff0c;生成提示&#xff08;prompt&#xff09;存在两种不同的操作方式。第一种方式是在文本空间中进行&#xff0c;这种提示以离散的文本形式存在。第二种方式是将提示抽象成一个向量&#xff0c;在特征空间中进行操作&#xff0c;这种提示是抽象…...

Spring高级面试题-2024

Spring 框架中都用到了哪些设计模式&#xff1f; 1. 简单工厂&#xff1a; ○ BeanFactory&#xff1a;Spring的BeanFactory充当工厂&#xff0c;负责根据配置信息创建Bean实例。它是一种工厂模式的应用&#xff0c;根据指定的类名或ID创建Bean对象。2. 工厂方法&#xff…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

【杂谈】-递归进化:人工智能的自我改进与监管挑战

递归进化&#xff1a;人工智能的自我改进与监管挑战 文章目录 递归进化&#xff1a;人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管&#xff1f;3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言&#xff1a; 在人工智能快速发展的浪潮中&#xff0c;快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型&#xff08;LLM&#xff09;。该模型代表着该领域的重大突破&#xff0c;通过独特方式融合思考与非思考…...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量&#xff0c;这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下&#xff0c;卢森堡罗伯特舒曼医院&#xff08;the Robert Schuman Hospitals, HRS&#xff09;凭借在无菌制剂生产流程中引入增强现实技术&#xff08;AR&#xff09;创新项目&#xff0c;荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议&#xff0c;专门用于在数字音频设备之间传输数字音频数据。它由飞利浦&#xff08;Philips&#xff09;公司开发&#xff0c;以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...