AUTOSAR CP 诊断寻址解密:物理寻址与功能寻址的“身份识别”是如何层层实现的?
引言一个看似简单却难倒无数工程师的“灵魂拷问”在汽车电子诊断开发领域有一个问题几乎每个新人都曾困惑过“诊断仪发了一条 CAN 报文ECU 怎么知道这是一个发给自己的单播请求还是一个发给全车的广播请求这个区分逻辑到底写在哪一层”这个问题之所以迷人是因为它触及了 AUTOSAR 经典平台CP软件架构的核心设计哲学——分层与职责分离。很多工程师会试图在某个单一的模块中寻找答案是不是 CAN 控制器的硬件过滤器是不是 CanIf 模块的 PDU 路由配置其实都不是。真正区分“物理寻址”和“功能寻址”的判决发生在 CAN 传输层CanTp与诊断通信管理器DCM的协作逻辑里。但这个“判决”并非凭空产生它是一场层层接力、分工明确的团队合作的结果。从 CAN 控制器上的硬件过滤器到 CanIf 的路由分拣再到 CanTp 的协议解析最后到 DCM 的应用逻辑裁决——每一步都在为最终的“身份识别”贡献关键信息。本文将为你完整呈现这幅“寻址识别全景图”。我们将从 ISO 15765-2 的寻址格式讲起深入 AUTOSAR 各个模块的配置细节剖析物理寻址与功能寻址在接收和发送两端的区别最后用一个“请求 VIN 码”的完整实例将整个过程串联起来。读完这篇文章你不仅能回答文章开头那个问题更能深刻理解 AUTOSAR 诊断栈“为何如此设计”。一、基础铺垫CAN 诊断报文中的寻址信息藏在哪里在 CAN 总线上传输诊断报文时寻址方式有两种正常寻址Normal Addressing和扩展寻址Extended Addressing。不论哪种方式诊断仪和 ECU 之间都会通过 CAN 标识符CAN ID和N_PDU 内的地址信息来确定通信的双方。1.1 正常寻址Normal Addressing正常寻址模式下CAN ID 本身编码了源地址N_SA和目标地址N_TA以及目标地址类型N_TAtype即物理寻址还是功能寻址。典型的映射关系如物理寻址请求CAN ID 0x7E0诊断仪→ECU其中隐含了 N_TA 为某个物理地址N_TAtype Physical。功能寻址请求CAN ID 0x7DF诊断仪→所有 ECU其中隐含了 N_TA 为广播地址如 0x7DN_TAtype Functional。在正常寻址中CAN ID 的 11 位或 29 位就已经隐含了目标地址类型但这并不意味着硬件过滤器或 CanIf 会去“解析”它——它们只是根据 ID 做匹配或路由而不关心这个 ID 代表单播还是广播。1.2 扩展寻址Extended Addressing扩展寻址模式下CAN ID 可能只包含一部分地址信息而 N_PDU 的第一个字节N_AI会包含额外的地址信息。此时目标地址类型信息可能分布在 CAN ID 和 N_AI 字节的组合中。CanTp 在组包完成后才能完整提取 N_SA、N_TA 和 N_TAtype。1.3 N_TAtype 的两种取值根据 ISO 15765-2目标地址类型N_TAtype定义了请求的寻址模式物理寻址Physical Addressing请求定向到一个特定的 ECU。接收方必须处理该请求并根据服务类型决定是否发送响应。功能寻址Functional Addressing请求广播给总线上所有的 ECU 或一组特定功能的 ECU。接收方执行请求但通常不应该发送正响应避免总线冲突。这是由应用层ISO 14229-1规定的。关键点N_TAtype 的最终确定依赖于对 CAN ID 和可能的 N_AI 字节的解析。这个解析工作落在了 CanTp 模块的头上。二、全景架构一张图看懂“寻址识别”的接力过程在 AUTOSAR CP 诊断协议栈中一条诊断请求报文从 CAN 总线进入 ECU 后会依次经过以下几个关键模块诊断服务层CAN 传输层CAN 接口层物理层与驱动层功能寻址 0x7DF物理寻址 0x7E0硬件放行提交给驱动Rx 缓冲区根据 CAN ID 路由至CanTp 对应的 Rx PduR完整 N_PDU 寻址信息 (N_TAtype)CAN 控制器硬件验收过滤器CAN 驱动Can_Read/Can_IrqCanIfPDU 路由分发CanTp组包/寻址解析N_SA, N_TA, N_TAtypeDCM服务处理/响应抑制CAN 总线这幅图反映了职责分离的核心理念硬件CAN 控制器通过验收过滤器决定哪些 CAN ID 能被接收不关心内容。CanIf把收到的 CAN 帧根据 ID 路由到配置好的上层模块通常是 CanTp不解析地址。CanTp负责帧的组包并从 CAN ID 和/或 N_AI 字节中提取 N_SA、N_TA、N_TAtype将这些信息连同完整的 N_PDU 一起上送给 DCM。DCM根据 CanTp 上报的 N_TAtype 以及内部的服务配置决定如何处理请求尤其是是否抑制正响应。结论真正的“功能/物理寻址”区分逻辑是由CanTp 解析提供信息DCM 裁决共同完成的。三、逐层剖析每一层究竟做了什么阶段 1物理层的“门卫”——CAN 控制器硬件验收过滤器职责只负责接收感兴趣的 CAN ID将所有不感兴趣的报文挡在 CPU 之外。在Can_Init阶段AUTOSAR CAN 驱动会根据配置CanHwFilter向控制器的寄存器写入验收码和掩码。例如掩码设为0x7FF标准帧验收码设为0x7E0则该硬件只接收 ID 为0x7E0的帧。如果要同时接收0x7E0和0x7DF则需要配置多个过滤器或者使用掩码使得两个 ID 都能通过。它能不能区分物理/功能寻址不能。硬件过滤器只有 ID 比对功能它不解析 ISO-TP 协议更不知道什么是功能寻址。它只是决定“这封信要不要投递”。如果硬件没有配置接收0x7DF那么功能寻址请求直接被硬件丢弃ECU 收不到任何功能寻址请求。所以这一步是“准入通行证”但不是寻址类型判断点。阶段 2路由层的“分拣员”——CanIf 模块职责根据 CAN ID 将收到的 PDU 路由至正确的上层模块。在 ARXML 配置中每个CanIfRxPdu会绑定一个或多个 CAN ID并指定其目标上层模块通过 PduR 路由。例如CanIfRxPdu_Rx_DiagReq_PhysCAN ID 0x7E0路由到CanTp。CanIfRxPdu_Rx_DiagReq_FuncCAN ID 0x7DF路由到CanTp。CanIf 看见 ID0x7E0它不关心这个 ID 代表物理寻址还是功能寻址它只是机械地按照查找表将数据递交给CanTp的接收入口。同样看见0x7DF也递交给CanTp。它能不能区分物理/功能寻址不能。CanIf 是协议无关的路由层它只认 ID不解析地址含义。之所以将两个 ID 都路由到 CanTp是因为诊断协议都需要由 CanTp 处理。真正区分它们的任务留给更上层的协议专家。阶段 3传输层的“协议解析官”——CanTp 模块职责处理 ISO 15765-2 传输协议包括帧重组、流控、寻址信息提取。CanTp 在接收到一帧帧的 CAN 报文后开始执行组包逻辑。当完整的 N_PDU 组装完成后CanTp 会解析出以下寻址参数N_SA源地址诊断仪的地址N_TA目标地址ECU 的物理地址或功能地址N_TAtype目标地址类型物理或功能这些信息来源于 CAN ID正常寻址和/或首字节 N_AI扩展寻址。CanTp 的配置中会为物理寻址和功能寻址分别定义两个独立的接收处理实体例如两个 TP 通道每个实体有自己的 N_TA 和 N_TAtype 配置。组包完成后CanTp 通过PduR_CanTpRxIndication将数据连同寻址信息一起上送给 DCM。AUTOSAR 的CanTp_RxIndication函数会传递N_TAtype参数。CanTp 能不能区分物理/功能寻址能。CanTp 直接根据配置好的通道属性在上报给 DCM 时明确告知这条消息的目标地址类型。此时“这是单播还是广播”的信息已经水落石出。阶段 4应用层的“裁决官”——DCM 模块职责处理诊断服务根据寻址类型决定是否抑制正响应。DCM 接收到 CanTp 上报的完整请求 PDU 和 N_TAtype 后会查找内部的诊断服务配置表。对于物理寻址请求DCM 执行服务逻辑并在需要时发送正响应Positive Response对于功能寻址请求DCM 执行服务逻辑但根据 ISO 14229 和 ECU 配置通常会抑制正响应。这个“响应抑制”决策是在 DCM 内部完成的。DCM 的配置DcmDsd中可以为每个服务定义在不同寻址模式下的行为DcmDsdServiceTable中的DcmDsdRequestSource可以是PHYSICAL、FUNCTIONAL等。对于功能寻址请求DCM 可以配置为“静默处理”即只执行不回复。DCM 能不能区分物理/功能寻址能。DCM 不仅依赖 CanTp 上报的 N_TAtype 来识别寻址类型还会根据此信息触发不同的响应行为。这是最终的业务逻辑判决点。四、为什么不能在一开始就“一刀切”——AUTOSAR 的设计哲学你可能会问为什么不在硬件或 CanIf 层就区分功能寻址报文直接丢弃响应省去后面那么多麻烦这恰恰违背了 AUTOSAR 的关注点分离原则。1. 性能与负担的平衡CAN 控制器硬件过滤器的主要目的是减轻 CPU 中断负担将无关的 ID 挡在芯片外部。如果让硬件同时去判断“这个 ID 是不是功能寻址”硬件复杂度会急剧上升而收益微乎其微——因为即便收到功能寻址报文CPU 仍然需要执行服务如读取 VIN只是不回复而已。所以硬件保持简单专注“收/不收”软件负责复杂的逻辑判断。2. 模块通用性与可移植性CanIf 模块设计为独立于上层协议的通用路由层。如果 CanIf 需要理解“功能寻址”这种诊断领域的特殊概念那它就不通用了。因为当你的系统切换到 Ethernet 诊断DoIP时CAN 层面的功能寻址概念将不复存在。CanIf 保持对诊断协议的无知才能被任何上层协议复用。3. 配置灵活性与可维护性通过 CanTp 和 DCM 的配置来区分寻址类型允许系统工程师自由定义“哪些地址是我的物理地址”、“哪些功能地址我需要响应”甚至可以为特定的功能地址定制响应行为比如有些 ECU 对功能寻址的特定服务也回复。所有这些灵活性如果固化在底层驱动或接口层修改和维护成本将极其高昂。4. 标准合规性ISO 14229 明确规定了功能寻址请求的响应抑制要求这是应用层的行为。由 DCM 负责实现这一行为是完全符合标准的。五、从配置视角看ARXML 里如何定义“寻址识别”为了让抽象的概念具象化我们来看看 AUTOSAR 配置中几个关键容器的设计。5.1 Can 控制器硬件过滤配置CanHwFilter在CanController下有CanHwFilter容器用于设置验收码和掩码。例如CAN-HW-FILTERCAN-HW-FILTER-MASK0x7FF/CAN-HW-FILTER-MASKCAN-HW-FILTER-CODE0x7E0/CAN-HW-FILTER-CODE/CAN-HW-FILTERCAN-HW-FILTERCAN-HW-FILTER-MASK0x7FF/CAN-HW-FILTER-MASKCAN-HW-FILTER-CODE0x7DF/CAN-HW-FILTER-CODE/CAN-HW-FILTER这里没有“寻址类型”字段因为硬件不需要知道。5.2 CanIf 路由配置CanIfRxPduCanIfRxPdu将 CAN ID 映射到 PduR 路由路径并最终指向 CanTp。配置中不会包含寻址类型判断只是标明“这个 ID 的数据送往哪个模块”。5.3 CanTp 通道配置CanTpChannelCanTp 中会定义接收通道每个通道可以关联到特定的寻址类型。例如CanTpRxPhysChannel配置本 ECU 的物理地址N_TA以及地址类型为PHYSICAL。CanTpRxFuncChannel配置功能地址例如0x7D以及地址类型为FUNCTIONAL。此外通道还会关联到特定的 PduR 接收路径使得 CanTp 在组包完成后可以知道应该将结果上报给 DCM 的哪个处理端口并携带正确的 N_TAtype 信息。5.4 DCM 服务配置DcmDsd在 DcmDsd 中DcmDsdServiceTable定义了每个诊断服务如0x22 ReadDataByIdentifier的请求来源处理。一个典型的配置是物理寻址PHYSICAL允许发送正响应。功能寻址FUNCTIONAL允许抑制正响应。这是最终决定功能寻址不回复的位置。六、完整实例追踪功能寻址“读取 VIN”请求的全生命周期让我们用一个真实的场景来贯穿整个流程诊断仪发送一条功能寻址请求要求所有 ECU 读取自己的 VIN 码。步骤 1物理层接收CAN 总线上出现 ID0x7DF的数据帧单帧数据长度 8包含02 22 F1 90等。ECU 的 CAN 控制器预先配置了接收0x7DF的硬件过滤器因此将其接收并触发中断。步骤 2CanIf 路由CanDrv 将收到的帧递交给 CanIf。CanIf 根据配置的CanIfRxPdu识别 ID0x7DF对应的 Pdu 是诊断功能请求通过 PduR 路由到 CanTp 的功能寻址接收通道。步骤 3CanTp 组包并解析寻址CanTp 接收到单帧由于其是单帧组包瞬间完成。CanTp 检查通道配置确认该通道对应功能寻址N_TA 0x7D 或类似N_TAtype FUNCTIONAL。然后 CanTp 通过PduR_CanTpRxIndication将数据22 F1 90和 N_TAtype FUNCTIONAL 一起上送给 DCM。步骤 4DCM 处理并抑制响应DCM 收到请求后解析出服务 ID0x22。它查询DcmDsdServiceTable对于服务 0x22功能寻址来源配置为“处理但不回复”。DCM 调用内部逻辑读取 VIN 码例如从非易失存储器中读取然后将结果丢弃或只记录到内部缓冲区。DCM 不调用 PduR 发送响应。总线上不会有任何回复报文。步骤 5结果诊断仪发送了功能寻址的0x22请求所有 ECU 都执行了读取操作但总线上保持安静。如果诊断仪需要获取某个特定 ECU 的 VIN它必须使用物理寻址请求例如 ID0x7E0这时 DCM 会发送正响应包含 VIN 数据。七、常见误区与澄清误区 1“功能寻址就是 CAN ID 0x7DF物理寻址就是 CAN ID 0x7E0。”这是典型的以偏概全。0x7DF/0x7E0 只是标准 CAN 诊断常用的一组 ID而且只适用于正常寻址。实际上功能寻址可以映射到任何一个 CAN ID甚至多个功能地址。关键在于 CanTp 中配置的 N_TAtype 和 N_TA而不是 CAN ID 本身。误区 2“功能寻址报文ECU 完全不应该回复任何数据。”根据 ISO 14229ECU 对于功能寻址请求不应发送正响应但在某些情况下允许发送负响应例如请求不支持的服务。另外如果使用了事件驱动或周期性传输功能寻址也可能触发 ECU 在另外的时刻发送数据。所以“不回复”仅指不发送直接的正响应。误区 3“硬件过滤器如果不接收 0x7DF就永远收不到功能寻址请求。”正确。所以工程师必须确保硬件过滤器配置了所有需要响应的功能寻址 CAN ID。否则即使上层软件完美配置报文也会被物理层丢弃。误区 4“CanIf 可以通过配置区分功能寻址和物理寻址。”CanIf 本身不区分它只做路由。但可以通过为不同的 CAN ID 配置不同的 PduR 路径使得它们在 CanTp 中进入不同的通道从而间接实现区分。但区分逻辑仍然在 CanTp 而不是 CanIf。八、总结与延伸在 AUTOSAR CP 诊断栈中“物理寻址”和“功能寻址”的区分是一个跨层协作的结果硬件层只负责按 ID 放行不区分寻址类型。CanIf 层只负责按 ID 路由不解析协议。CanTp 层解析协议提取 N_TAtype将寻址类型信息传递给 DCM。DCM 层根据 N_TAtype 和服务配置做出最终的业务决策如抑制正响应。这种设计将速度与智能分离底层用硬件加速过滤上层用软件完成复杂的协议和业务逻辑。它完美诠释了 AUTOSAR分层解耦、职责单一的架构思想。理解了这一机制你不仅能回答“区分物理/功能寻址的代码在哪里”更能以同样的思路去分析其他 AUTOSAR 协议栈中的跨层交互——例如以太网诊断DoIP中的物理/功能寻址其实也是同样的哲学硬件负责抓取传输层负责解析应用层负责裁决。附思考题如果一台 ECU 需要响应三个不同的功能地址例如 0x7DF、0x7E1、0x7E2它的 CAN 硬件过滤器、CanIf 和 CanTp 分别应该怎么配置在 AUTOSAR 中CanTp_RxIndication传递的 N_TAtype 参数是如何从 CAN ID 中计算出来的提示查看 ISO 15765-2 对正常寻址的编码规则如果 ECU 收到一条物理寻址请求但目标地址不是本 ECU 的物理地址DCM 会如何处理这个判断是在哪一层发生的本文基于 AUTOSAR 经典平台 4.0 以上版本的架构兼容 ISO 15765-2 和 ISO 14229-1 标准。

相关新闻

专科毕业论文查重工具 筛选要点与避坑指南

专科毕业论文查重工具 筛选要点与避坑指南

2026年专科毕业论文的学术不端检测与AI内容筛查标准持续趋严,多数院校会对所有毕业论文进行全覆盖检测,重复率不达标会直接要求返修,情况严重的会推迟答辩甚至影响正常毕业。作为第一次独立完成毕业论文的专科毕业生,多数人对查重…

2026/7/28 19:24:31 阅读更多 →
STM32F103 Bootloader编译与烧录全攻略:从源码到3D打印机主板实战

STM32F103 Bootloader编译与烧录全攻略:从源码到3D打印机主板实战

1. 项目缘起:为什么我们需要自定义 Bootloader?如果你正在玩基于 Klipper 的 3D 打印机,尤其是像 Voron 这类 DIY 机型,那么对 STM32F103 这颗“神片”一定不陌生。它成本低廉、性能足够,是许多主板(如 SKR…

2026/7/28 19:24:31 阅读更多 →
计算机网络-《图解HTTP》读书笔记

计算机网络-《图解HTTP》读书笔记

《图解HTTP》读书笔记 本文链接:https://blog.csdn.net/qiuxuewei2012/article/details/100108137 第一章:了解Web及网路基础 TCP/IP协议 把互联网想关联的协议集合起来总称为TCP/IP协议 TCP/IP 协议族按层次分为:应用层,传输…

2026/7/28 19:24:31 阅读更多 →

最新新闻

突破网盘限速瓶颈!夸克网盘提速+直链解析方法大汇编

突破网盘限速瓶颈!夸克网盘提速+直链解析方法大汇编

在日常传输和获取大型文件时,许多人经常会遇到数据接收进度缓慢、耗时过长的困扰。想要让数据传输的效率得到质的提升,关键在于对传输环境、链路通道以及本地软硬件状态进行全方位的调优。以下为您梳理的几个核心策略,能够帮助您显著提升文件…

2026/7/28 19:35:35 阅读更多 →
AzKaban

AzKaban

Azkaban工作流调度 二、 工作流 1. 工作流产生背景 工作流(Workflow),指“业务过程的部分或整体在计算机应用环境下的自动化”。是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。工作流解决的主要问题是:为了…

2026/7/28 19:35:35 阅读更多 →
C++聊天室集群化实战:Nginx负载均衡与Redis消息同步架构解析

C++聊天室集群化实战:Nginx负载均衡与Redis消息同步架构解析

1. 项目概述与集群化挑战聊到用C写聊天室,很多朋友可能都自己动手实现过单机版本,用个TCP socket,维护一个连接列表,消息来了就广播出去,功能跑起来没问题。但一旦用户量稍微上来点,比如几百上千人同时在线…

2026/7/28 19:35:35 阅读更多 →
C++委托构造函数:告别重复代码,实现优雅初始化

C++委托构造函数:告别重复代码,实现优雅初始化

1. 项目概述:从“重复劳动”到“优雅复用”的构造函数进化在C的日常开发中,尤其是面对一个拥有多个构造参数的复杂类时,我们常常会陷入一种困境:为了应对不同的初始化场景,不得不编写多个构造函数。这些构造函数内部往…

2026/7/28 19:35:35 阅读更多 →
Battery Toolkit:终极指南!如何为Apple Silicon Mac延长电池寿命40%以上

Battery Toolkit:终极指南!如何为Apple Silicon Mac延长电池寿命40%以上

Battery Toolkit:终极指南!如何为Apple Silicon Mac延长电池寿命40%以上 【免费下载链接】Battery-Toolkit Control the platform power state of your Apple Silicon Mac. 项目地址: https://gitcode.com/gh_mirrors/ba/Battery-Toolkit 想要让您…

2026/7/28 19:35:35 阅读更多 →
JAVA毕设项目:基于 SpringBoot 的校园心理树洞倾诉与互助分享平台设计 智能化高校心理健康管理与社区服务系统 (源码+文档,讲解、调试运行,定制等)

JAVA毕设项目:基于 SpringBoot 的校园心理树洞倾诉与互助分享平台设计 智能化高校心理健康管理与社区服务系统 (源码+文档,讲解、调试运行,定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/28 19:34:34 阅读更多 →

日新闻

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否也曾为官方Om…

2026/7/28 0:00:43 阅读更多 →
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

做 RAG 的人应该都踩过这个致命的坑:把几百页的财报、法规、技术手册扔给向量库,问一个具体问题,搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了,要么藏在几十条结果的最下面。语义相似≠真正相关,这个…

2026/7/28 0:00:43 阅读更多 →
抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

2026年做短视频运营,从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候,每天刷半小时抖音,手动把爆款视频的口播敲进备忘录,一条2分钟的视频得花十来分钟,碰到语速快的还要反复回听。后来试了一圈工具&am…

2026/7/28 0:00:43 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/28 12:04:22 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/28 8:29:16 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/28 5:03:42 阅读更多 →

月新闻