想象你走进一家运转三十年的老工厂。退休返聘的老师傅老周,手里拿着螺丝刀,贴近设备听上几秒,就能说出“这是三号泵的轴承在响,一周内必须换”。车间主任半信半疑,结果三天后,三号泵果然发出刺耳的异响。这不是魔术,是老周积攒了三十年的听觉记忆、维修经验和对设备脾气的总和。西门子把这种“老师傅的直觉”装进了计算机,造就了工业大模型——西门子Industrial AI。本文带你从概念到落地,看看这位“数字老师傅”如何让工厂告别“惊喜”停机,让每一次生产都尽在掌握。

岗位关联

西门子Industrial AI是工业AI从业者的标杆案例:掌握它的架构与应用逻辑,你能快速复用到制造、能源等垂直行业的智能化项目,让“大模型落地工业”不再是一句空话。

目录
  1. 可视化演示
  2. 工业的烦心事
  3. 数字老师傅
  4. 收集经验
  5. 防患未然
  6. 精打细算
  7. 请进门来
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

动态演示西门子工业大模型应用的核心机制,通过总览/传输/转换/输出四种模式展示关键概念与交互流程。

本节配有交互动效(进入视口后自动加载,约 3KB)。

西门子工业大模型应用:西门子I 西门子Industrial A 工业大模型与通用大模型差异 核心机制可视化 西门子工业大模型应用整体架构与关键组件

工业的烦心事

老周最讨厌两种声音:一种是设备正常运转时让人昏昏欲睡的催眠曲,另一种是危机来临前细微又刺耳的杂音。工厂也分两种:一种是“定期体检型”——不管设备坏没坏,到点就换零件,像汽车每五千公里换机油,浪费但省心;另一种是“带病硬扛型”——设备坏了才停工抢修,像轮胎在高速上爆掉,损失惨重。西门子工业大模型要解决的第一件事,就是让工厂从“被动惊吓”走向“主动预知”。

在真实车间里,设备停机造成的损失远超想象。以一条连续生产的热轧产线为例,非计划停机一小时,可能损失几十万元产值。而传统定期维护虽然减少了意外停机,却制造了大量“过度维修”——轴承还能用三年,只因没到保险期就被换掉了。这两笔账,都是纯利润的流失。

西门子的思路很简单:让数据说话。通过给设备装上振动、温度、电流等传感器,用工业大模型持续学习设备的“健康语言”,一旦发现异常苗头就提前报警。这样就把“坏了一起修”变成了“有苗头就保养”。

理解了停机成本,你就明白“数字老师傅”出现的必要性——它不是为了省保养费,而是为了掐灭那个让老板心梗的分钟计时器。

Closs=Cfix+r×TdownC_{\text{loss}} = C_{\text{fix}} + r \times T_{\text{down}}
这个公式告诉你一次非计划停机到底烧掉多少钱:固定维修费 + 每分钟损失 × 停机时长。停机时长越长,损失越呈线性爆炸。
  1. 固定维修费 $C_{\text{fix}}$无论停机多久都要发生的开销,包括配件、人工、吊装等。
    CfixC_{\text{fix}}
  2. 单位时间损失 $r$每分钟停产造成的产值损失,由产线产能与产品利润决定。
    rr
  3. 停机时长 $T_{\text{down}}$从设备故障到恢复正常生产的总分钟数。
    TdownT_{\text{down}}
  4. 总损失叠加固定成本与时间损失相乘后相加,得到一次停机的总体代价。
    Closs=Cfix+r×TdownC_{\text{loss}} = C_{\text{fix}} + r \times T_{\text{down}}

数字老师傅

老周退休后,工厂怕他真走了,于是把他的“手艺”编进了系统。西门子Industrial AI就像这位数字化的老周:它不需要睡觉,不需要涨工资,还能同时盯住全厂几百台设备。那么这位“数字老师傅”的骨架是什么?答案是分了三层的平台架构。底层是工业数据层,负责把散落各处的传感器、PLC(可编程逻辑控制器,工业设备的小型控制电脑)和工控系统数据统一收拢;中间是模型层,各种AI模型在这里训练和迭代;顶层是应用层,把模型能力封装成车间工人能看懂的界面和指令。

这三层架构解决了一个关键问题:工业AI不是实验室里的玩具,而是要能在厂房里稳定运行。云端负责训练大模型学“理论”,边缘侧负责做“实操”推理,真正做到“严师出高徒、徒弟守现场”。

模型层的核心动作可以概括为一个带参数的函数映射:输入设备的历史与实时数据,经过模型内部的层层计算,输出设备状态或控制建议。

有了这三层架构和这个函数映射,“数字老师傅”就从一个比喻变成了可落地的工程系统。

y^=F(x;θ)\hat{y} = F(x; \theta)
这行公式是“数字老师傅”的一次判断:给模型喂入数据 $x$,模型用学到的参数 $\theta$ 完成计算,输出预测结果 $\hat{y}$。
  1. 输入 $x$模型看到的“现场线索”,比如振动频率、温度曲线、电流波形。
    x=[x1,x2,…,xn]x = [x_1, x_2, \dots, x_n]
  2. 模型参数 $\theta$相当于老师傅大脑里的“经验权重”,是训练阶段从历史数据中学出来的。
    θ\theta
  3. 模型变换 $F$多层神经网络等结构对输入进行层层抽象,把原始信号提炼成高级特征。
    F(x;θ)F(x; \theta)
  4. 预测输出 $\hat{y}$模型给出的结论,比如“轴承剩余寿命28天”或“建议降低转速5%”。
    y^=F(x;θ)\hat{y} = F(x; \theta)

收集经验

老周的耳朵不是天生的,是他三十年里一次次贴近设备、一次次记录维修笔记练出来的。工业大模型的“耳朵”同样需要训练,而训练离不开数据。这些数据从哪来?第一是设备自带的控制系统,比如PLC里每秒都在刷新的温度、压力、启停状态;第二是后装的智能传感器,专门测振动和噪音;第三是生产管理系统里的工单、质检记录和能耗报表。多源数据汇到一起,就像老周既看仪表、又摸壳体、还翻维修档案。

但原始数据是“毛坯”,不能直接喂给模型。传感器偶尔断线、现场电磁干扰、人工录入出错,都会产生脏数据。西门子Industrial AI的数据引擎会先做清洗——把缺失值补上、把异常跳点剔除、把不同单位统一。接着由工艺专家给数据打标签:“这段波形是正常磨损,那截数据是轴承点蚀”— 这些标签就是大模型的“老师批改过的作业”。最后,平台还会构建设备知识图谱,把“电机→轴承→润滑系统→产线A”的关系连成一张网,让模型不仅知道“怎么了”,还能追问“为什么”。

归一化是数据清洗中最常见的一步,它把不同量纲的数据拉到同一个尺度,防止“温度1000度”把“振动0.1毫米”的贡献淹没。

数据经过清洗、标注、归一化之后,就不再是冰冷的数字,而是“数字老师傅”真正能读懂的“经验手记”。

x′=x−xmin⁡xmax⁡−xmin⁡x' = \frac{x - x_{\min}}{x_{\max} - x_{\min}}
这是一个数据“对齐刻度”的操作:把原始读数压缩到0到1之间,让每个特征在模型中拥有平等的发言权。
  1. 原始数据 $x$传感器读到的原始值,比如温度85℃或振动0.4mm/s。
    xx
  2. 最小值 $x_{\min}$当前样本中该特征的最小值,作为缩放起点。
    xmin⁡x_{\min}
  3. 最大值 $x_{\max}$当前样本中该特征的最大值,作为缩放终点。
    xmax⁡x_{\max}
  4. 归一化结果 $x'$原始值在最小值与最大值之间的相对位置,取值范围在0到1之间。
    x′=x−xmin⁡xmax⁡−xmin⁡x' = \frac{x - x_{\min}}{x_{\max} - x_{\min}}

防患未然

老周的价值不在于修得快,而在于“耳朵一动就知道要坏”。这就是预测性维护的精髓。传统维护像“撞大运”:定期换件是“宁可错杀一千”,坏了再修是“亡羊补牢”。而工业大模型的做法是实时盯着设备的“脉搏”——振动传感器传来波形,模型立刻判断:这是正常磨损的平稳节奏,还是轴承即将碎裂的死亡鼓点?

预测性维护的落地分三步。第一步是异常检测:模型持续计算当前数据与历史正常模式的偏差,偏差超过阈值就报警。第二步是故障诊断:定位问题出在哪个部件、属于哪种失效模式。第三步是剩余寿命预测:估算还能安全运行多久,给维修团队留出充足的备件和排程时间。西门子Industrial AI在这些环节中不只是给出“是或否”,还会输出“为什么”——得益于前期构建的知识图谱,模型能追溯到最可能的原因链。

异常检测最常用的基础指标是Z-score,它衡量一个数据点偏离平均值的程度,单位是标准差。

当模型连续捕捉到多个高Z-score点,并叠加知识图谱的原因分析,“数字老师傅”就会在设备真正停机前给出预警——这就是工业大模型“未卜先知”的秘密。

z=x−μσz = \frac{x - \mu}{\sigma}
Z-score像“离群哨音”的分贝计:数值越大,说明这个读数越不像正常状态,越值得老师傅竖起耳朵。
  1. 实时读数 $x$当前传感器返回的数值,比如某时刻的振动加速度。
    xx
  2. 历史均值 $\mu$正常工况下该传感器读数的平均水平。
    μ\mu
  3. 历史标准差 $\sigma$正常读数的波动幅度,衡量数据的稳定程度。
    σ\sigma
  4. Z-score 计算把当前读数减去均值,再除以标准差,得到偏离的正常倍数。
    z=x−μσz = \frac{x - \mu}{\sigma}

精打细算

如果说预测性维护是“保平安”,那生产优化就是“创效益”。老周最拿手的本事,是听一听、摸一摸,就能把锅炉的进料比例微调几个百分点,让产量上升还省煤气。工业大模型把这门手艺搬进了控制系统。以工艺参数优化为例:模型把温度、压力、速度、原料配比等参数一起纳入考量,不断试算哪种组合能在保证质量的前提下让产出最大、能耗最低。

质量检测是另一个重点。过去靠人工目检,一分钟看几十个零件,眼神一花就漏检。现在工业大模型结合机器视觉,对每个产品的表面瑕疵、尺寸偏差做全量检测,检测速度是人工的几十倍,漏检率大幅下降。更厉害的是,模型能把“哪道工序导致哪种瑕疵”的规律找出来,反哺到上游工艺调整,形成闭环。

参数寻优的过程可以转化为一个最小化损失函数的问题:让预测结果与真实目标的差距尽可能小。

用这个损失函数当“考官”,工业大模型在工艺参数的空间里不断试错、迭代,最终找出一组让工厂“多快好省”的最优解。

L=1n∑i=1n(yi−y^i)2L = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2
这是“精打细算”的指挥棒:模型每次调整参数,都让预测值 $\hat{y}$ 更贴近实际值 $y$,误差平方和越小,说明优化越成功。
  1. 样本数量 $n$参与评估的数据条数,比如最近100件产品的质检记录。
    nn
  2. 真实值 $y_i$第 $i$ 个样本的实际结果,比如真实的产品合格率。
    yiy_i
  3. 预测值 $\hat{y}_i$模型给出的预估值,比如AI预测的合格率。
    y^i\hat{y}_i
  4. 误差平方求和把每个样本的预测误差平方后求和再平均,防止正负误差相互抵消。
    L=1n∑i=1n(yi−y^i)2L = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2

请进门来

老周退休后返聘回来,不是一个人干活,而是带着几个年轻徒弟,把自己的本事一点点传下去。工业大模型的落地也是如此:它不是把老师傅一脚踢开,而是让“数字老师傅”和人一起协作。真正的落地要过三关:第一关是部署方式,很多工厂出于数据安全考虑,不愿把核心生产数据放到公有云上,于是西门子支持私有化部署——模型在工厂内网训练和运行,数据不出厂;第二关是安全合规,工业数据涉及商业机密和生产线安全,必须做好权限分级和审计追踪;第三关是组织变革,一线工人需要理解AI的“脾气”,学会复核AI的建议,而不是盲从或抵触。

一套合理的推进路径是:先在一条产线上做小范围试点,跑通数据链路、验证模型效果,让工人尝到甜头;再逐步扩大到车间级、工厂级。过程中要建立“AI提建议、人拍板、数据反馈优化”的飞轮,让模型越用越准。

投资回报率是老板最关心的数字,它衡量的是数字化转型这件事到底值不值得。

当ROI算得过来,组织也理顺了,“数字老师傅”就算正式进了门。它不会替代老周,而是让老周的经验在产线上永远“在线”。

ROI=B−CCROI = \frac{B - C}{C}
这是一笔“请老师傅进门”的账:总收益减去总成本,再除以总成本,得到回报比例。大于0说明值得干,越大越划算。
  1. 总收益 $B$AI带来的一切收益,包括停机损失减少、良率提升、能耗下降。
    BB
  2. 总成本 $C$硬件采购、软件授权、数据治理、人员培训等所有投入。
    CC
  3. 净利润 $B - C$总收益减去总成本,得到净赚的部分。
    B−CB - C
  4. 回报率计算净利润除以总成本,得到每投入一元钱赚回多少。
    ROI=B−CCROI = \frac{B - C}{C}

AI 应用场景

场景一:钢铁厂热轧电机预测性维护

阶段:智能运维

解决的问题:某大型钢厂热轧产线的关键电机此前采用定期维护,仍频繁发生非计划停机。每次停机维修长达8小时,产线中断造成每小时数十万元损失。西门子在电机上加装振动和温度传感器,接入Industrial AI平台,利用工业大模型持续学习电机正常运行模式,提前7天预警了轴承早期磨损。

具体案例:某次模型在深夜检测到振动频谱出现早期点蚀特征,随即通过知识图谱定位到“3号电机轴承润滑不良”,并生成维修工单。维修团队利用白班换辊窗口完成更换,避免了原本可能发生的产线中断。该钢厂应用一年后,非计划停机减少约60%,维护成本下降25%。

场景二:汽车零部件AI质量全检

阶段:生产优化

解决的问题:传统汽车焊接车间依靠人工目检焊接瑕疵,检测速度慢、漏检率高,且质检员容易疲劳。西门子Industrial AI结合机器视觉大模型,对每个焊点的轮廓、气孔、飞溅进行全量检测,同时将检测结果与上游工艺参数关联,自动定位导致瑕疵的焊接参数偏差。

具体案例:某零部件供应商部署AI质检后,检测节拍从“每件30秒人工检查”提升到“每秒检查3个焊点”,漏检率从5%降至1%以下。系统还通过持续学习不断适应新车型的焊接特征,减少了频繁的人工算法调参。

场景三:空压机群能耗智能调度

阶段:能源管控

解决的问题:空压机是工厂里的“电老虎”,占不少工厂总电费的20%-30%。传统启停靠师傅经验,常常出现“多台空压机同时满载、另一台空转”的低效状态。西门子Industrial AI通过预测车间用气负荷,动态推荐各台空压机的启停组合与加载率。

具体案例:某电子工厂接入AI能耗优化后,系统实时预测未来2小时的用气需求,提前调整3台空压机的运行组合,避免频繁空载。运行6个月后,空压机群综合能耗降低15%,年省电费超过120万元,项目投资回报周期仅为8个月。

Python 演示

python55 行
import mathimport random  class IndustrialAnomalyDetector:    """工业大模型中异常检测组件原型"""     def __init__(self, window_size=50, threshold_z=3.0):        self.window_size = window_size        self.threshold_z = threshold_z        self.sample_list = []        self.alert_list = []     def add_sample(self, value):        self.sample_list.append(value)        if len(self.sample_list) > self.window_size * 2:            self.sample_list = self.sample_list[-self.window_size:]        return self._is_anomaly(value)     def _safe_std(self, data):        if len(data) < 3:            return 1.0        mean = sum(data) / len(data)        variance = sum((x - mean) ** 2 for x in data) / (len(data) - 1)        return math.sqrt(variance) or 1.0     def _is_anomaly(self, value):        mean = sum(self.sample_list) / len(self.sample_list)        std = self._safe_std(self.sample_list)        z_score = (value - mean) / std        if abs(z_score) > self.threshold_z:            self.alert_list.append((len(self.sample_list), value, z_score))            return True        return False  def generate_sensor_data():    normal = [50 + 3 * math.sin(i / 5) + random.uniform(-0.5, 0.5) for i in range(80)]    fault = [50 + 3 * math.sin(i / 5) + (18 if i % 7 == 0 else 0) for i in range(21)]    return normal + fault  def main():    detector = IndustrialAnomalyDetector()    stream = generate_sensor_data()    for idx, value in enumerate(stream):        if detector.add_sample(value):            _, raw, z = detector.alert_list[-1]            print("报警: 第{}个采样点 读数={:.1f} z分数={:.2f}".format(idx + 1, raw, z))    if not detector.alert_list:        print("未检测到异常")  if __name__ == "__main__":    main()
目的:模拟西门子工业AI中“数字老师傅”的耳朵——对连续传感器数据流实时计算Z-score,当读数异常偏离正常波动时发出报警。
  1. class IndustrialAnomalyDetector:定义一个可复用的工业异常检测器,相当于一个“AI耳朵”组件。
  2. self.sample_list.append(value)把每个新读数放进滑动窗口,让模型永远基于最近的设备状态做判断。
  3. std = self._safe_std(self.sample_list)使用无偏标准差估计当前数据的波动幅度,避免除零。
  4. z_score = (value - mean) / std计算当前读数偏离均值的标准差倍数,即异常检测的“哨音分贝”。
  5. if abs(z_score) > self.threshold_z:Z-score绝对值超过3就视为异常,这是工业中常用的3σ法则。
  6. generate_sensor_data()先造一段平稳正常的振动数据,再混入周期性尖峰,模拟轴承早期缺陷产生的冲击脉冲。
  7. detector.add_sample(value)每个采样点都先通过检测器的“耳朵”,走一遍实时判定流程。

常见误区

误区以为把ChatGPT部署到工厂车间,工人们和它聊聊天,设备就不坏了。

正解工业大模型的核心能力是预测与决策,而不是闲聊。西门子Industrial AI更像个“诊断医生+生产军师”,它输出的是设备故障预警、工艺参数推荐、质量异常根因分析,而不是“今天天气怎么样”。通用大模型擅长语言,工业大模型擅长理解机器的“语言”。

为何常见:ChatGPT现象级爆火,让很多人把“大模型”直接等同于“聊天机器人”,忽略了工业场景更关注可靠性和物理世界的因果逻辑。

误区觉得只要把工厂历史上所有数据都倒进模型,大模型会自动变得无所不知。

正解工业数据中大量是重复的正常样本,夹杂着传感器漂移、断线补值和人工误录。脏数据喂进去,模型学到的不是规律而是噪声。西门子Industrial AI在训练前会做严格的数据治理和标注把关,先求质量、后谈数量。

为何常见:“大数据驱动AI”的说法深入人心,但工业界的现实是优质标注数据稀缺,数据工程往往比模型算法更花时间。

误区认为不上云就不是真正的AI,工厂数据必须传到云端才能训练和推理。

正解很多制造业企业对数据安全极其敏感,加上现场对推断延迟的要求,西门子Industrial AI采用“云端训练+边缘推理”的混合模式。模型在云端完成大规模训练后,量化压缩部署到工厂本地的边缘服务器上,即使断网也能正常工作。

为何常见:互联网行业“云优先”的思维惯性让不少人忽略了工厂的特殊性——可靠性、实时性和数据主权远比“随时随地访问”重要。

误区AI能自动检测出故障,那还要维修工人干嘛?

正解工业AI目前更擅长“预判”和“建议”,而更换部件、调整机构、判断安全风险这些动作仍需要人。它更像是给老师傅配了一个不知疲倦的学徒,把老师傅从重复巡检中解放出来,去做更复杂的决策和处置。西门子的落地经验表明,成功的工厂都走“人机协同”路线,而非“无人化”。

为何常见:媒体喜欢用“AI取代XX”的标题吸引眼球,但工业场景中责任重大、工况复杂,人在决策闭环中仍是关键锚点。

面试题

Q1. 西门子Industrial AI在工业场景中的核心角色是什么?

单选题 · easy

  • A.替代现场工程师
  • B.让设备更聪明可靠← 正确答案
  • C.提高设备售价
  • D.简化工业协议

答案:B。Industrial AI的定位是“数字老师傅”——用数据预测设备状态、优化生产参数,让设备更可靠、工厂更高效。它并不替代工程师现场操作,也不负责销售定价或协议简化,因此正确答案是B。

Q2. 相比传统定期维护,预测性维护的主要优势是?

单选题 · mid

  • A.按固定周期换件
  • B.坏后再修成本低
  • C.按状态提前干预← 正确答案
  • D.彻底取消维修

答案:C。定期维护是“到点就换”的盲换,事后维修是“坏了再修”。预测性维护通过持续监测设备健康状态,在故障发生前精准干预,既减少停机损失又避免过度维修。正确答案是C。

Q3. 在异常检测中,Z-score绝对值越大说明什么?

单选题 · mid

  • A.数据越远离均值← 正确答案
  • B.数据越接近中位数
  • C.数据频率越高
  • D.数据总量越大

答案:A。Z-score是当前读数与均值的差除以标准差,它衡量的是偏离程度。值越大,说明该读数相对正常波动越“离谱”,就像数字老师傅听到的一声尖锐异响。它与数据量、频率、中位数无关,因此选A。

Q4. 工业大模型优先选择私有化部署的最主要原因是什么?

单选题 · hard

  • A.提升模型训练速度
  • B.降低硬件采购成本
  • C.保护数据安全与产线控制权← 正确答案
  • D.减少车间办公面积

答案:C。工厂的生产参数、工艺配方和能耗数据都是核心商业机密,且产线要求高实时性、高可用性。私有化部署让数据不出厂、控制权牢牢握在自己手中。它并不会提升训练速度或降低成本,故选C。

Q5. 工业AI项目中,哪些属于常见的实时数据来源?

多选题 · mid

  • A.振动温度传感器← 正确答案
  • B.PLC运行状态← 正确答案
  • C.设备保养手册
  • D.生产工单系统← 正确答案

答案:ABD。振动温度传感器、PLC运行状态和生产工单系统都能提供实时或准实时的数据流;设备保养手册是静态文档,不属于实时数据源,但可作为大模型的知识库输入。因此选A、B、D。

Q6. 工业AI在质量检测中最显著的改进是?

单选题 · easy

  • A.人工抽检更轻松
  • B.AI全检加抽检复核← 正确答案
  • C.取消质量检测
  • D.客户投诉后补救

答案:B。人工抽检只能覆盖部分产品,且容易疲劳漏检。工业AI实现全量在线检测,再用抽检复核结果,大幅降低了漏检率。它不会取消检测,更不是事后补救,故选B。

Q7. 下列哪些是工业大模型落地过程中的常见阻碍?

多选题 · hard

  • A.数据质量差且标注少← 正确答案
  • B.OT与IT系统割裂← 正确答案
  • C.员工流程抵触← 正确答案
  • D.工厂电压不稳定

答案:ABC。工业项目落地难常有“三座大山”:数据脏乱差、IT/OT融合难、组织变革阻力大。工厂电压不稳属于供电问题,不是AI落地的典型阻碍。因此选A、B、C。

Q8. 工业知识图谱的主要价值在于?

单选题 · easy

  • A.渲染设备三维模型
  • B.结构化设备关系支持推理← 正确答案
  • C.替代传感器采集数据
  • D.扩大数据库存储容量

答案:B。知识图谱把设备、部件、故障模式、维修记录连成一张关系网,让大模型不仅能判断“是什么故障”,还能追问“为什么”。它不负责渲染、采集或存储,故选B。

Q9. 工业大模型与工业小模型在场景中的正确关系是?

单选题 · mid

  • A.大模型完全替代小模型
  • B.大模型语义理解加小模型实时推理← 正确答案
  • C.小模型负责训练大模型
  • D.两者互不相关

答案:B。大模型擅长理解复杂语义、处理多源知识,但推理速度慢;小模型则轻快实时。工业实践中常用大模型做任务解析和调度,把具体的高频预测交给小模型,两者是协作关系而非替代,故选B。

Q10. “数字老师傅”成功落地需要哪些组织层面的准备?

多选题 · mid

  • A.领导层充分支持← 正确答案
  • B.运维人员接受培训← 正确答案
  • C.重新梳理流程与考核← 正确答案
  • D.撤掉质量部门

答案:ABC。工业AI落地是“一分技术、九分组织”。高层支持提供资源,运维培训保证人机协同,流程与考核调整让数据闭环转起来。撤销质量部门与优化方向相反,故选A、B、C。