很多刚接触工控的朋友,第一次上手做PLC和变频器联机,十有八九会从台达这套组合开始。DVP ES系列属于台达的经典型号,机器皮实、指令集直白,MS300变频器又是目前市面上出货量很大的一款通用变频器,两者走Modbus RTU通讯,是练习RS485主从通讯最顺手的一条路子。我手头那个项目就是这么搭的:一条小型输送线,五个工位,每台设备配一台0.75kW的MS300,主站用DVP14ES2,用通讯的方式统一调速、启停、读运行状态。今天就拿这个配置当例子,把这套联机的细节、参数、程序框架和踩过的坑一次说清楚。
这套方案能解决什么问题?简单说,就是用两根通讯线替代了原本一堆多芯控制电缆。以前每台变频器要接启动、停止、正反转、频率给定这些硬接点,线多、查线麻烦、抗干扰还差。走Modbus RTU之后,所有控制都变成数据包,频率、启停、状态、故障代码全部通过通讯寄存器读写,配线工作量砍掉一大半,后期改逻辑也只需要改程序,不用动端子。适合谁参考?正在做入门级PLC和变频器联机调试的工程师,或者电工转自动化方向想建立通讯控制概念的朋友。看完这篇,你至少能独立完成一套“PLC主站+多台MS300从站”的通讯工程,并且知道出了问题从哪下手查。
1. 方案选型与硬件连接
1.1 为什么选Modbus RTU而不是其他通讯方式
选通讯方案之前,我先把现场的条件和成本捋了一遍。台达DVP ES系列本身支持多种通讯接口,但最主要、最实惠的就是内置的RS485口走Modbus RTU协议。有人可能会问,怎么不用以太网?MS300有些型号带内置RJ45口,但那是以太网通讯模块或者扩展卡,价格比RS485高不少,而且DVP ES如果走以太网,还得额外加通讯模块,成本一下就上去了。对于一条输送线这种规模,通讯速率要求不高,数据量也不大,Modbus RTU在9600波特率下跑得稳稳当当,完全够用。
还有一层考虑是Modbus RTU在工业现场兼容性极好。不管是台达自家的设备,还是以后想接第三方的仪表、温控器、伺服,只要支持Modbus协议,几乎都能用同一套程序框架去读,学习成本很低。PLC侧只需要两条指令:一条读指令,一条写指令,整个工程的逻辑就建立在“读寄存器、写寄存器”这两个基本动作上。这种标准化程度,是以太网和专用总线比不了的。
1.2 RS485接线与终端电阻处理
通讯用的物理介质是RS485,两线制,标号一般是D+(或者DATA+)和D-(或者DATA-),有些机器上印的是SG和DG,SG是信号地。很多人不重视这个地线,但实际通讯不稳的时候,它的作用就体现出来了。正确的接法是:PLC的D+接变频器通讯端子的D+,D-接D-,SG端用一根线把所有从站串起来,最后在主站侧单点接地,不能把所有设备的SG都分别接地,那样反而会形成地环流。
电缆选择也有讲究。通讯距离短、干扰小的场合,普通的双绞屏蔽线就行,市面上常见的RVSP 2×0.75平方的就很合适。但如果现场有变频器这种强干扰源,屏蔽层的处理是加分项:屏蔽层单端接地,一般是接到控制柜的接地铜排上,不要两头都接。我一开始图省事,屏蔽层直接剪掉没接地,通讯运行时偶尔报超时,后来把屏蔽层处理好,故障就消失了。
终端电阻的事情也必须提一下。RS485总线在距离短、从站少的时候,终端电阻可以不接,但一旦线路拉长到几十米,或者从站数量超过四五台,信号反射就会成为通讯异常的隐形凶手。台达MS300的通讯端子附近有短接开关或者标注了终端电阻位置,通常有一个ON/OFF拨码用来接入120Ω终端电阻;DVP ES系列有些型号内部没有直接提供拨码,那就需要在总线最末端设备外部并联一个120Ω电阻。我那次现场最远端是一台变频器,距离主站大概40米,把总线两端的终端电阻都接上后,误码率明显下降。注意,终端电阻只在总线的两端接,中间节点不能接。
1.3 硬件清单与站号分配
这套系统的硬件非常少,但站号分配需要提前规划好,不然调试的时候会糊涂。主站是DVP14ES2,自带两个通讯口,COM1是RS232,COM2是RS485,我们用的是COM2。从站是5台MS300变频器,分别设置站号为1到5。站号在Modbus RTU协议里就是每个从站唯一的“身份证”,数据包的目的地址就靠它识别。站号范围是1到247,0号是广播地址,一般不用,超出247不能用。
站号分配的规则很简单:从小到大,避免跳号和重复,并且和实际设备在产线上的位置对应起来,方便后期维护。我一般习惯把站号1给第一个工位,站号2给第二个工位,以此类推。如果后期要加设备,最好预留几个站号,比如这次用了5台,我就在文档里把6到8留出来备用。另外,每个从站的通讯参数(波特率、数据格式)必须设成完全一致,否则主站发出去的数据包,从站对不上格式直接丢弃,表现就是单个从站无响应。
2. 变频器参数设置与通讯地址解析
2.1 MS300通讯相关参数清单
MS300的通讯参数主要集中在参数组里,我用的是面板操作来设置的,方式比较直接。几个关键参数的设置值如下表所示:
| 参数代号 | 设置值 | 功能说明 |
|---|---|---|
| 00-20 | 1 | 通讯地址:1号站 |
| 00-21 | 4 | 通讯速度:9600波特率 |
| 00-22 | 6 | 通讯格式:8N2,两停止位 |
| 00-23 | 1 | 通讯协议:Modbus RTU |
| 01-00 | 5 | 频率指令来源:通讯给定 |
| 01-01 | 3 | 运转指令来源:通讯控制 |
01-00这个参数最重要,它决定了变频器的主频率从哪里来。设为5就是从通讯寄存器读取频率指令,面板的旋钮和外部端子给定就都不起作用了。01-01设为3,就是把启动、停止、正反转这些命令来源也切到通讯上。这两个参数不设对,你通讯写得再好,变频器也不会动。
还有一点容易忽略,00-21和00-22设置的通讯格式必须和PLC侧COM2的通讯格式完全一致。PLC侧默认可能是7位数据位、偶校验、一个停止位这种格式,如果变频器侧设成8N2,两边对不上号,数据包发过去就是乱码,从站根本不动。我一般把两边都统一设为9600、8位数据、无校验、两个停止位(8N2)。这个组合在干扰较大的现场表现更稳定,因为两个停止位给通讯时序多留了一点余量。
2.2 Modbus寄存器地址与功能码映射
MS300的Modbus地址映射是调试中最容易卡壳的地方。台达变频器的通讯地址,官方手册里给的编号是16进制形式的,比如“2000H”、“2001H”,但你在PLC里写通讯指令时,地址必须用10进制表达。这个进制转换如果搞错,读回来的数据永远不对。
我这里列几个最常用的寄存器地址,直接给你们一个对照表,省得到处翻手册:
| 寄存器含义 | 16进制地址 | 10进制地址 | 读写属性 | 数据说明 |
|---|---|---|---|---|
| 运转命令 | 2000H | 8192 | 写 | 0:停止,1:正转,2:反转,4:自由停车,8:故障复位 |
| 主频率给定 | 2001H | 8193 | 写 | 数值对应频率,小数点位数由参数决定 |
| 输出频率 | 2003H | 8195 | 读 | 变频器当前实际输出频率 |
| 输出电流 | 2004H | 8196 | 读 | 变频器当前输出电流 |
| 运行状态 | 2100H | 8448 | 读 | 各个位代表不同状态,比如Bit0是运转中 |
| 故障代码 | 2101H | 8449 | 读 | 最近一次故障的代码 |
举个例子,频率给定寄存器2001H,数据格式是十六位无符号整数。MS300默认显示频率是到两位小数,所以你写6000,面板上显示的是60.00Hz,写500,就是5.00Hz。这个单位换算是很多新手最容易忽略的地方:PID运算的结果、HMI上输入的目标频率,都得先乘以100再写入寄存器。我一般会在PLC程序里做一个换算:目标频率×100,再把结果传给写指令。
功能码这块也要提前搞清楚。Modbus RTU里常用的功能码不多:03H是读寄存器,06H是写单个寄存器,10H是写多个寄存器。台达MS300读输出频率、输出电流、状态字,用03H;写频率给定、写启停命令,用06H就行。调试阶段用串口调试助手直接发16进制报文也很快,但后面程序中要实现自动轮询,就必须靠PLC指令了。
2.3 频率给定和启停指令的细节
启停寄存器2000H的写值,要特别注意“故障复位”这个值。变频器报故障之后,比如过流、过载,你要恢复运行,必须给2000H写8,复位故障状态,然后才能重新写1启动。如果你直接写1,变频器会因为故障状态未清除而拒绝启动,误以为是自己程序出了问题,其实只是缺少复位动作。
另一个细节是启动和停机的缓冲问题。通过通讯控制启停,它的加减速时间是走变频器参数里的加减速时间设定,和面板启动不一样,面板启动有可能会被某些出厂默认参数优处理。我们现场用通讯启停,加减速时间走01-12和01-13这两个参数,默认值通常够用,但如果你发现启动瞬间电流冲得太高,就要把加速时间调长。
还有一点值得记录:频率给定写在启停命令之后,顺序有讲究。我习惯先给2000H写停止,再给2001H写频率,最后给2000H写启动。千万不能一边写频率一边又写启停,把两条指令弄反了,因为频率给定寄存器在停止状态也是可以写入的,但启动命令一旦执行,变频器会立即按当前给定频率运行,如果你频率还没写进去,它就按上一次的频率跑起来了。
3. PLC通讯程序设计与实操实现
3.1 DVP ES通讯初始化
PLC侧的程序,我分成通讯设置在先、读写指令在后的结构。DVP ES系列用COM2做Modbus通讯,不需要复杂的初始化块,只需要在程序中把通讯格式、协议相关特殊寄存器配置好。
DVP ES系列的特殊寄存器对应COM2的设置:特殊寄存器D1120用来设置通讯格式,比如数据位、校验位、停止位、波特率。D1121设置通讯站的站号,主站这个值填0即可。D1122是通讯超时时间,单位是10ms,我一般设10,也就是100ms超时。这个值如果设得太短,程序容易误判超时;设得太长,故障反应又慢。100ms是我在9600波特率下实测比较均衡的取值。
还要设置D1129,这个是通讯异常次数寄存器,在程序里可以用它做故障统计。但关键的是要开启通讯自动发送功能。DVP系列支持一种比较方便的通讯模式:不需要额外的发送指令,只要往特M寄存器里写数据就能自动发送。但是更多情况下还是建议用标准的读写指令,因为程序逻辑更清晰,后面也方便扩展站号。
具体初始化很好记:程序启动时,用一连串MOV指令,把需要的值传进去。先把D1120设为十六进制值,对应9600、8N2。M1120置为ON,这个动作的意义是让COM2的通讯格式设置生效。M1143这个是通讯指令的触发位,有些场合要用到多台从站自动轮询,DVP ES是通过特殊继电器M1132或相关机制实现的,但初学阶段我建议还是手动一条条来。
3.2 MODRD和MODWR指令的使用
DVP ES系列读写Modbus的指令就是MODRD和MODWR。MODRD是读从站寄存器,MODWR是写从站寄存器。这两个指令用法非常直接,但有一个地方很多人第一次会搞混:指令里的地址是“通讯地址”,不是变频器手册里的十进制寄存器号,需要特别注意偏移。
以DVP14ES2的梯形图为例:
| | | MODRD | | | | 地址: K1 | | | | 功能码: H03| | | | 起始地址: K8195| | | | 长度: K2 |这条指令的意思是,读1号从站,功能码03H,从寄存器8195(2003H,输出频率)开始读,连续读2个寄存器,读回来的数据分别放到PLC的数据寄存器D100和D101里:D100对应输出频率,D101对应输出电流。K8195这个起始地址,直接采用十进制形式对应手册里的2003H,不需要再加1的偏移。注意,MODRD指令执行是触发式的,不是靠线圈一直给通就能一直读。我一般用一个10ms的脉冲触发一次,读取完成后把结果存到指定寄存器。
MODWR的用法类似:
| | | MODWR | | | | 地址: K1 | | | | 功能码: H06| | | | 起始地址: K1 | | | | 数据: D110 |这条指令的功能是,往1号从站的寄存器8193(2001H,主频率给定)写入D110里的值。D110在程序中可以先做频率换算。写好之后,M1129是通讯异常标志,程序里可以监控它来判断通讯是否成功,如果异常累计超过一定次数,拉故障报警。
MODRD和MODWR都是执行一次完成单次通讯。想要持续读频率、读电流,就得让程序周期性地触发它们。方法有几种:最简单的是用一个固定时基脉冲(比如M1013是100ms时钟脉冲)去触发,但更稳妥的做法是等MODRD的通讯完成标志出来之后,再触发下一条指令。DVP系列的MODRD执行完毕,会把M1140设为ON,程序里可以用这个信号来顺序触发下一个读写动作,这样可以避免通讯指令互相打架。
3.3 频率换算和轮询工程化处理
频率换算这一块,我实际编程时是在HMI和PLC之间做了两层处理。HMI上操作工输入的目标频率,比如35.50Hz,数据到了PLC里是整数3550。然后PLC程序里做乘法:把3550乘以100,变成355000,再按要求写进寄存器。但注意,Modbus的寄存器是16位,最大65535,355000明显超了,所以必须用32位数据中转或分段处理,不能直接拿16位传送。
一个可靠的写法是:先用32位运算得到实际数据,比如目标频率35.50Hz换算成寄存器值就是3550(35.50×100),这个数值未超过65535。然后数据类型上,直接用MOV指令把3550传给D110,MODWR把D110写进8193,这样是没问题的。但如果你从HMI拿到的数值被放大过,比如HMI传的是3550表示35.50Hz,那PLC就直接传送,不需要再乘100。关键是全项目的单位约定要统一,不能有人用0.01Hz为单位,有人用0.1Hz为单位。
多从站轮询我是这样处理的:假设5台变频器,我建了一个“轮询指针”寄存器,存放当前正在访问的站号。用指令依次读取1号站的频率、电流,然后切到2号站,读完5号站回到1号站。这样程序不臃肿,逻辑也清晰。MODRD/MODWR指令执行时,地址(从站号)是可以用数据寄存器间接指定的,这就是轮询的基础。
实际工程中,每台变频器的读数据存储区是独立的,我习惯用变址或者一个基准寄存器加偏移。比如1号站的输出频率放D100,2号站的输出频率放D110,D100到D150规划成一个连续的数据块,每个从站占10个寄存器,这样HMI做趋势记录和配方切换都非常方便。
3.4 关键程序框架示例
下面我贴一个我自己项目里用过的基础框架,基于DVP14ES2的梯形逻辑设计,你们可以直接参考接线和地址逻辑。
初始化段:
LD M1002 ; 首次运行脉冲 MOV H86, D1120 ; COM2设置为9600, 8, N, 2 SET M1120 ; 启用COM2设置 MOV K0, D1121 ; 主站站号0 MOV K10, D1122 ; 通讯超时100ms MOV K200, D1129 ; 通讯异常次数阈值启停控制段,用M0做正转启动按钮,M1做停止按钮:
LD M0 AND M1129 ; 通讯正常 MODWR K1, H06, K8192, K1 ; 1号站正转启动 LD M0 MODWR K1, H06, K8193, D110 ; 1号站写入频率这里要注意,启停指令只发一次就够了,不能一直发。我程序里用M0的上升沿触发启动命令,用M1的上升沿触发停止命令,这样变频器收到的命令是清晰的“启动一次”和“停止一次”,而不是一直接着写。
状态读取段:
LD M1013 ; 100ms时钟脉冲 MODRD K1, H03, K8195, K2 ; 读1号站输出频率和电流通讯完成后再做数据转移:
LD M1140 ; MODRD执行完成 MOV D100, D500 ; 存1号站输出频率 MOV D101, D501 ; 存1号站输出电流程序跑起来后,HMI或者上位机直接读D500、D501就可以做显示,不需要再从变频器里一次次读了,这样整个程序的结构很清楚:初始化、控制、读取、数据存放,各干各的活。
4. MS300通讯参数配置对照表
为了方便大家直接照着设置,我把MS300这边要动的参数和PLC侧的参数在下面做个对照,这样调试时两边怎么对应心里有数。这比看手册找零散的参数要直观得多。
| 功能点 | MS300参数 | 设置值 | PLC侧对应关系 |
|---|---|---|---|
| 从站号 | 00-20 | 1~5 | MODRD/MODWR指令里的从站地址 |
| 通讯波特率 | 00-21 | 4(9600) | D1120中波特率位 |
| 数据格式 | 00-22 | 6(8N2) | D1120中数据位、校验位、停止位 |
| 通讯协议 | 00-23 | 1(Modbus RTU) | 无需额外设置 |
| 频率来源 | 01-00 | 5(通讯) | 写8193寄存器 |
| 运行指令来源 | 01-01 | 3(通讯) | 写8192寄存器 |
| 加减速时间 | 01-12/01-13 | 按现场需要 | 不适于通讯,在变频器侧设 |
| 故障复位 | 8192寄存器写8 | 通讯写8 | PLC侧程序故障复位逻辑 |
这个表我建议直接打印一份,放在调试现场的工具箱里。实际调试的时候你会发现,大多数通讯不成功的原因就是这些参数和PLC设置不一致,而不是程序逻辑的问题。对照表一拿出来,十几分钟基本能排查完一大半故障。
5. 通讯调试经历与问题排查
5.1 变频器不动作的几个常见原因
这个项目调试到一半,有一个很典型的故障:2号变频器其他参数都和1号一模一样,地址也改了,但主站发启动指令,它就是不动。排查步骤是从物理层开始的。我先用万用表量了2号变频器通讯端子上的D+/D-,发现电压明显偏低,正常RS485空闲时AB之间的电压应该在2V以上,这里只有0.5V左右。怀疑是接线不良,但检查了一遍,接线端子拧得很紧。后来把2号变频器的通讯线拔掉,再量总线电压,恢复正常,判断问题出在2号变频器本身。单独给2号站发通讯指令,用串口调试助手看回码,结果2号变频器根本没有回码。查了它的通讯协议参数00-23,发现被误设成了其他协议,改回1,再试,通讯恢复正常。
另一个常见原因是地址没对上。台达MS300地址拨码和参数00-20都影响最终站号,有些型号面板上有个“通讯地址”的小旋钮,如果拨到了非零位置,会与参数00-20冲突。我遇到过现场地址旋钮被操作工无意拨过,导致通讯时好时坏。这种情况在调试记录里一定要注明:站号统一走参数00-20,旋钮归零。
还有一次,启动指令发出后变频器有反应但立即报OC(过电流)。查了半天发现是频率给定没来得及写入,变频器以上次记忆的50Hz瞬间启动,带动皮带机憋死了。加了“先写频率,再写启动”的顺序之后,问题消失。这个顺序问题上面讲过一次,这里再强调也不为过。
5.2 通讯超时与PLC报错故障码
DVP ES系列通讯发生故障时,M1129会置ON,D1129里累计异常次数。刚开始调试那几天,故障率挺高,主要体现在读取频率时,D100偶尔读到异常大值。这种问题我定位到两个方向:一是主站和变频器之间的接地电位差,二是通讯线干扰。
接地电位差这个,需要把变频器和PLC的接地点都汇到同一个接地铜排上,不要让它们各拉一根线到不同位置的地。当时我量了PLC的SG端和变频器的SG端,之间居然有1.2V的电位差,处理完接地后,电位差降到0.1V以下,通讯错误率大幅下降。
还有一种“软故障”让人头疼:通讯写频率时,如果HMI上输入的是百分数或者实际频率,转换不对,就会写入错误值,变频器不是飞车就是不动。我专门在程序里加了限幅:目标频率只能在0到50Hz范围内,如果换算后的寄存器值大于5000,就按5000处理,并且报警提示。这样给操作工误输入留了保护。
5.3 在线监控与串口调试辅助手段
调试阶段我习惯用USB转RS485模块接在总线上,配合串口调试助手直接监视总线报文。很多人觉得接上调试工具会影响通讯,实际上只要调试工具本身接收电平符合RS485标准,挂在总线上监听不影响正常通讯。这就相当于在工业总线上放了一个“摄像头”,主站发什么、从站回什么,一目了然。
监听时要特别注意报文格式。Modbus RTU报文的特点是帧间隔大于3.5个字符时间,如果看到报文黏在一起,说明波特率或者校验位设置不对。还有,如果主站发了请求,总线上没有任何回码,那就是从站没有识别到这个地址或者参数配置有问题。用调试助手监听比PLC程序里查状态要快得多,因为你能看到通讯到底进行到哪一步。
我举一个例子:当时发现5号站读不到输出电流,其他站都正常。用调试助手监听后,发现5号站的回码异常,明确指示寄存器地址越界。对照手册查了查,5号变频器是新一代版本,寄存器定义和老版本略有差异,输出电流寄存器的起始地址变了。用新版手册的地址重新改程序,问题解决。这类差异不通过总线监听,靠猜会浪费很多时间。
5.4 常见问题速查表
把这次项目里遇到的通讯问题整理成一张速查表,方便大家对照排查。
| 现象 | 可能原因 | 排查方向 |
|---|---|---|
| 所有从站都不响应 | 通讯线AB接反 | 检查D+/D-接线,调换测试 |
| 通讯格式不一致 | 比对变频器00-21/00-22与PLC D1120设置 | 统一为9600,8N2 |
| 单个从站不响应 | 站号冲突或旋钮地址非零 | 核对参数00-20与地址旋钮 |
| 通讯时好时坏 | 线路干扰或接地不良 | 检查屏蔽层单端接地,SG电位差 |
| 回码数据异常 | 寄存器地址换算错误 | 对照16进制与10进制地址表 |
| 启动即报过流 | 先启动后写频率 | 调整为先写频率再启动 |
| 通讯超时频繁 | 终端电阻缺失或超时时间过短 | 总线两端接120Ω电阻,放大D1122 |
6. 多从站轮询与工程化扩展方案
如果你只控制一台变频器,上面讲的够用了。但实际产线很少只配一台变频器,我这个项目是5台,后面还接过8台伺服,轮询逻辑就得好好设计。这里分享几个工程化处理的思路。
轮询的核心是保证主站在同一时刻只对一台从站发起通讯,并且按地址从小到大循环。我常用的结构是:先用MODRD读取当前站号的输出频率和状态,读取完成后再判断如果通讯成功,就累加轮询指针;如果通讯失败,也累加指针,但把故障次数加1。这样即使某台变频器掉线,也不会卡死整个轮询流程。
DVP ES系列的轮询指令块,我建议单独做成一个子程序,用“CALL”指令调用,程序主循环看起来会很干净。子程序入口判断当前轮询指针指向哪个站,然后跳转到对应的读写逻辑段。写完后对轮询指针做加1处理,超过最大站号就回1。
轮询周期也要控制好。9600波特率下一个读请求加回码大概30到50ms,5台从站轮询一圈大概200到300ms,完全能满足显示刷新和状态监控的要求。如果还要频繁写频率指令,建议把读写分开:高频写的只有当前操作的那台,其他台只读不写,这样既保证响应速度,又减少总线负载。
工程化扩展方面,我后来在这个项目上还加了故障自动复位逻辑:当检测到某台变频器M1129异常次数超过设定值,自动给这台变频器发故障复位命令,然后再启动。这在无人值守的小产线上很实用,可以减少停机报警的无效触发。但要注意复位不能无限循环,否则会掩盖真实故障,一般设定复位两次后仍然异常,就保持报警状态,等人工处理。
7. 一些个人经验总结
通讯这个东西,看着是程序问题,实际上大半是物理层和参数配置问题。这台达DVP ES系列和MS300搭配的方案,本身非常稳定,但前提是接线规范、格式统一、地址分配清晰。我这几次项目下来有两个体会尤其深。
第一个是通讯格式必须“一刀切”。不论是PLC还是变频器,所有设备的通讯参数必须归到一个标准里,比如全项目统一“9600,8N2”。调试中不要今天改这个波特率,明天改那个校验位,排查时很容易混乱。参数定下来之后就锁死,写在项目文档里,任何改动都要走确认。
第二个是地址表要及时更新。台达的变频器不同批次、不同固件,可能寄存器定义有细微差异。我的习惯是拿到新设备,先复印一份通讯手册,把项目中实际用到的寄存器地址圈出来,在上面直接标好十进制值和读写权限,防止过段时间再看手册把自己绕进去。这个动作看着琐碎,但能省下后面很多猜谜的时间。
如果你手头正好在调这类项目,先把物理接线跑通,再逐台对参数,最后写轮询程序,这个顺序千万别反过来。程序写得再好,线不对一切等于零。
最后再分享一个小技巧,调试时记得给每台从站贴一个站号标签,顺手把手册里的对应表也贴到控制柜门内侧。因为这个项目我吃过亏:设备换过一台,新机器站号是出厂默认的1,结果现场有三台设备都响应站号1,总线上一片混乱。从此之后,我每调试完一台设备,就立刻在铭牌位置贴上编号贴纸,这习惯帮后续维护省了不少事。