拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

西门子G120变频器报文配置详解:标准报文1与报文20结构拆解及博途调试实战

西门子G120变频器报文配置详解:标准报文1与报文20结构拆解及博途调试实战 1. 搞懂G120报文之前先弄明白它到底在解决什么问题但凡用过西门子G120变频器的朋友大概率都经历过这样一个阶段变频器已经接线完毕参数也照着手册设了一通但PLC就是控制不了它要么频率给不过去要么状态读不回来折腾半天发现卡在“报文”这个环节上。这不是个别现象而是几乎所有初次接触G120的人都绕不开的一道坎。G120变频器和PLC之间的通讯本质上就是两个设备在“对话”。报文就是它们约定的“语言格式”——PLC发什么、变频器回什么每个字代表什么意思都必须严格按照约定的规则来。你选错了报文类型就像跟一个只会说中文的人讲英文双方都听不懂对方在说什么。所以搞懂报文是G120调试过程中最核心的一环没有之一。这篇文章主要面向三类人一是刚接触G120变频器的电气工程师或调试人员二是正在做PLC与变频器通讯项目的技术人员三是想系统梳理G120报文知识的老手。我会从报文的基本概念讲起把标准报文1、报文20、自由报文999等常用类型的结构拆开揉碎再结合博途TIA Portal的实际组态步骤把参数设置、地址映射、调试排查这些环节全部串起来。看完之后你应该能独立完成一台G120变频器的报文配置和通讯调试遇到问题也知道从哪里下手排查。2. G120报文的核心逻辑与选型思路2.1 报文到底是什么为什么不能绕过它很多人觉得报文是个很玄的东西其实用生活化的类比就很好理解。你可以把PLC和变频器想象成两个人在写信报文就是他们约定的信件格式。比如双方约定第一行写“我要你跑多快”第二行写“你往哪个方向跑”第三行写“你现在实际跑多快”第四行写“你有没有出故障”。这个格式一旦约定好双方每次写信都按这个来就不会出现“我写了三行你只读了两行”的尴尬。在G120里这个“信件格式”是通过参数P0922PROFIBUS/PROFINET报文选择来设定的。你选了哪个报文号变频器就按照那个报文号对应的格式来收发数据。比如选P09221就是标准报文1选P092220就是标准报文20选P0922999就是自由报文可以自己定义每个字的功能。这里有一个非常关键的认知报文决定了PLC和变频器之间交换数据的“字数”和“每个字的含义”。标准报文1是2个字PZD标准报文20是6个字自由报文最多可以到16个字。你选的标准报文如果只有2个字那你就只能控制启停和给频率读不到电流、转矩这些信息。反过来如果你选了6个字的报文但PLC那边只组态了2个字的地址那就会通讯异常。2.2 标准报文、自由报文、厂商报文到底选哪个G120支持的报文类型非常多常见的有以下几类报文类型报文号P0922PZD字数典型用途标准报文112最基础的启停频率给定标准报文224增加实际频率和电流反馈标准报文332类似报文1用于特定场景标准报文20206速度控制转矩多状态字标准报文3523522西门子专用配合安全功能自由报文999自定义灵活配置互联厂商报文如350等固定特定应用场景选型的基本逻辑是这样的如果你的应用只是简单的启停和调速标准报文1就够了简单直接不容易出错。如果你需要读取变频器的实际电流、实际转矩、实际频率等运行数据那至少要选标准报文2或报文20。如果你有特殊需求比如要把变频器的某个特定参数映射到PLC的某个地址上那就用自由报文999通过BICO互联自己搭。我个人的经验是能用标准报文就别用自由报文。标准报文的PZD含义是固定的调试的时候不用查互联参数直接看手册就知道每个字是什么。自由报文虽然灵活但一旦互联设错排查起来非常痛苦尤其是项目交接给别人维护的时候别人根本看不懂你当初为什么这么设。2.3 报文和通讯协议的关系这里要澄清一个容易混淆的概念报文和通讯协议是两回事。PROFINET、PROFIBUS、Modbus这些是通讯协议决定了数据怎么在物理层和链路层传输。而报文是在协议之上的一层约定决定了传输的数据内容怎么解读。举个例子你用PROFINET通讯G120作为IO设备挂在PLC下面这时候报文就是PROFINET IO数据中的PZD部分。你用PROFIBUS通讯报文就是PROFIBUS DP数据交换中的PZD部分。如果你用Modbus RTU通讯通过G120的RS485接口那就不走P0922这套报文体系了而是用Modbus的寄存器映射方式来读写参数。所以选报文之前先确认你用的是哪种通讯方式。本文主要讲的是PROFINET/PROFIBUS场景下的报文配置这也是G120最主流的通讯方式。3. 标准报文1和报文20的详细结构拆解3.1 标准报文1最简配置2个字走天下标准报文1P09221的结构非常简单只有2个PZD字PLC发给变频器输出方向PZD1STW1控制字116位每一位都有特定含义PZD2HSW主设定值16位通常用来给频率变频器回给PLC输入方向PZD1ZSW1状态字116位反映变频器当前状态PZD2HIW实际值16位通常反映实际频率控制字1STW1的位定义是必须记住的这是调试的基础位名称含义常用值0ON/OFF10停车1运行启动时置11OFF20自由停车正常运行时置12OFF30快速停车正常运行时置13脉冲使能1使能脉冲启动时置14斜坡函数发生器使能1使能启动时置15斜坡函数发生器继续1继续启动时置16设定值使能1使能启动时置17故障复位0→1上升沿复位需要时置18-9保留--10由PLC控制1PLC控制启动时置111-15保留--启动变频器的典型控制字是16#047F二进制0000 0100 0111 1111停车是16#047E。这个值我建议你直接背下来调试的时候直接用。状态字1ZSW1的位定义同样重要位名称含义0准备接通1变频器准备好1准备运行1可以运行2运行使能1运行使能中3故障1有故障4OFF2状态1OFF2未激活5OFF3状态1OFF3未激活6接通禁止1禁止接通7报警1有报警8设定值-实际值偏差1在容差内9PZD控制1PLC控制10达到最大频率1达到11报警1有报警12电机运行1电机在转13电机过载1过载14电机正转1正转15电机反转1反转实际调试时最常关注的是位0准备接通、位1准备运行、位3故障、位12电机运行。如果位0和位1都是1位3是0说明变频器状态正常可以启动。3.2 标准报文206个字信息量翻倍标准报文20P092220是G120里用得非常多的一种报文它有6个PZD字PLC发给变频器PZD1STW1控制字1PZD2HSW主设定值频率PZD3STW2控制字2PZD4HIW附加设定值PZD5STW3控制字3PZD6HSW2附加设定值2变频器回给PLCPZD1ZSW1状态字1PZD2HIW实际值实际频率PZD3ZSW2状态字2PZD4HIW2附加实际值PZD5ZSW3状态字3PZD6HIW3附加实际值2报文20比报文1多出来的4个字通常用来传递转矩、电流、功率等运行数据。具体每个字映射什么参数取决于变频器内部的BICO互联设置。默认情况下PZD4通常映射实际转矩PZD6映射实际电流。这里有一个实操中很容易踩的坑报文20的PZD3-PZD6默认互联不一定符合你的需求。比如你想读实际电流但默认映射的是转矩你就需要通过参数r5520、r5521等来查看实际互联必要时用自由报文重新定义。3.3 自由报文999灵活但需要自己搭自由报文P0922999允许你完全自定义每个PZD字的含义。你需要通过参数P2051PROFIBUS/PROFINET PZD发送和P2061PZD接收来配置每个字的互联。比如你想让PZD1发送状态字1PZD2发送实际频率PZD3发送实际电流就在P2051[0]r0899状态字1P2051[1]r0063实际频率P2051[2]r0068实际电流。接收方向同理用P2061来配置。自由报文的好处是灵活坏处是配置复杂、容易出错、维护困难。我的建议是除非标准报文确实满足不了需求否则不要轻易用自由报文。如果非要用一定要在项目文档里把每个字的互联关系写清楚否则过两个月你自己都忘了。4. 博途组态G120报文的完整实操流程4.1 硬件组态与GSD文件安装在博途里组态G120第一步是安装GSD文件。G120的GSD文件可以从西门子官网下载文件名通常类似“GSDML-V2.XX-Siemens-G120-XXXXXXXX.xml”。安装路径是选项 → 管理通用站描述文件GSD→ 从文件系统安装。安装完成后在硬件目录里就能找到G120的设备树。根据你的G120具体型号CU240E-2 PN、CU250S-2 PN等选择对应的设备版本。这里要注意GSD文件的版本要和变频器固件版本匹配否则可能出现组态不成功或者通讯异常的情况。组态时把G120拖到PROFINET IO网络上然后设置设备名称和IP地址。设备名称必须和变频器实际设置的名称一致否则通讯建立不起来。变频器侧的设备名称可以通过BOP-2面板或者Startdrive软件来设置。4.2 报文选择与地址分配在博途的设备概览里找到G120的插槽列表你会看到“标准报文”或“自由报文”的选项。点击下拉菜单选择你需要的报文类型。比如选“标准报文1”博途会自动分配输入和输出的地址范围。以标准报文1为例博途通常会自动分配输出地址比如QB256-QB2594个字节对应2个PZD字输入地址比如IB256-IB2594个字节对应2个PZD字这里要注意地址分配取决于你的PLC型号和已有的地址占用情况博途会自动找空闲地址你也可以手动修改。建议在项目初期就规划好地址分配避免后期地址冲突。如果你选的是标准报文20地址范围会变成12个字节6个PZD字×2字节。地址分配的逻辑是一样的只是范围更大。4.3 PLC程序中的报文处理组态完成后在PLC程序里就可以通过分配的地址来读写变频器了。以标准报文1为例假设输出地址是QB256-QB259输入地址是IB256-IB259// 启动变频器 // 控制字1 16#047F频率设定值 16#0FA0对应50Hz具体换算见下文 // 将控制字和频率写入输出地址 L W#16#047F T QW256 // PZD1控制字1 L W#16#0FA0 T QW258 // PZD2频率设定值 // 读取变频器状态 L IW256 // PZD1状态字1 T MW100 // 存到MW100 L IW258 // PZD2实际频率 T MW102 // 存到MW102频率设定值的换算关系是1638416#4000对应100%也就是对应参数P2000设定的基准频率。如果P200050Hz那么16384对应50Hz50Hz对应的设定值就是16384。如果要给30Hz设定值 30/50 × 16384 983016#2666。这个换算关系是调试时最容易搞错的地方。很多人给了16384发现变频器跑到了50Hz以为是满频率其实16384只是100%的基准值实际频率取决于P2000的设置。如果P2000设的是50Hz那16384就是50Hz如果P2000设的是60Hz那16384就是60Hz。4.4 变频器侧参数设置博途组态完成后还需要在变频器侧设置一些关键参数P0922报文选择必须和博途组态一致P2000基准频率决定频率设定值的换算关系P1080最小频率P1082最大频率P1120加速时间P1121减速时间P0840ON/OFF1命令源通常设为r2090.0通过PROFINET控制P1070主设定值源通常设为r2090.1这些参数设置完成后变频器就可以接受PLC的控制了。如果用的是Startdrive软件这些参数可以在软件里直接设置比用BOP-2面板方便很多。5. 调试过程中最常见的6个问题与排查方法5.1 通讯建立不起来变频器报F08501F08501是PROFINET通讯故障最常见的原因是设备名称不匹配。排查步骤检查博途里组态的设备名称和变频器实际设置的名称是否一致检查IP地址是否在同一网段检查网线连接是否正常检查GSD文件版本是否匹配如果设备名称没问题IP地址也没问题那可能是GSD文件版本和固件版本不匹配。这时候需要下载对应版本的GSD文件重新安装。5.2 控制字发出去了变频器不启动这种情况通常是控制字的位没有全部置对。标准报文1的启动控制字是16#047F但如果你只置了位0ON/OFF1没有置位1OFF2、位2OFF3、位3脉冲使能、位4斜坡函数发生器使能、位5斜坡函数发生器继续、位6设定值使能、位10由PLC控制变频器是不会启动的。排查方法用博途的监控表监控输出地址的值确认是不是16#047F。如果不是检查程序里是不是有其他地方改写了这个地址。5.3 频率给过去了但变频器实际频率不对最常见的原因是P2000的基准频率和你的预期不一致。比如你给16384以为对应50Hz但P2000设的是60Hz那实际频率就是60Hz。解决方法检查P2000的值根据实际需求调整。另一个可能的原因是P1082最大频率限制了实际输出。如果你给的设定值对应55Hz但P108250Hz那变频器最多只能跑到50Hz。5.4 状态字读回来全是0如果状态字读回来全是0说明通讯可能没有真正建立或者输入地址映射错了。排查步骤检查博途里组态的输入地址和程序里读取的地址是否一致检查变频器的状态字是否真的在变化可以用Startdrive软件在线监控检查PROFINET通讯是否正常看变频器的LED指示灯5.5 报文20的附加PZD字读不到有用数据报文20的PZD3-PZD6默认互联可能不符合你的需求。比如你想读实际电流但PZD4默认映射的是实际转矩。解决方法查看r5520发送PZD互联和r5521接收PZD互联确认每个字的实际映射关系。如果不符合需求要么改用自由报文重新定义要么通过BICO互联修改映射。5.6 变频器频繁报F08502F08502是PROFINET看门狗超时故障通常是因为PLC和变频器之间的通讯中断时间超过了设定的看门狗时间。可能的原因网络负载过高数据帧丢失网线质量差信号衰减严重PLC扫描周期过长导致响应不及时解决方法检查网络拓扑确保G120和PLC之间的网络路径最短、干扰最小。如果网络负载确实很高可以考虑增大看门狗时间P2047但这不是根本解决办法还是要把网络问题解决好。6. 几个实操中总结出来的经验技巧6.1 调试前先做通讯测试别急着写程序很多人一上来就写PLC程序结果通讯都没建立起来程序写得再好也没用。我的习惯是组态完成后先用博途的在线监控功能看看能不能读到变频器的状态字。如果能读到说明通讯正常再写程序。如果读不到先解决通讯问题别浪费时间写程序。6.2 控制字和状态字用十六进制监控别用十进制控制字和状态字是位操作用十六进制看最直观。比如16#047F你一眼就能看出哪些位是1。用十进制看就是1151完全看不出位的关系。博途的监控表可以设置显示格式为十六进制这个一定要设。6.3 频率设定值用百分比思维别用绝对频率思维给频率设定值的时候不要想“我要给50Hz”而要想“我要给100%”。因为16384对应的是100%具体是多少Hz取决于P2000。这样思维的好处是不管P2000怎么变你的程序都不用改。如果P2000从50Hz改成60Hz你给16384还是100%只是实际频率从50Hz变成了60Hz。6.4 报文20的PZD3-PZD6用不到就别选如果你只需要启停和频率给定标准报文1就够了别选报文20。报文20虽然信息量大但配置复杂出问题的概率也高。多出来的4个字如果你用不到就是白白增加调试工作量。6.5 项目文档里一定要写清楚报文配置这一点非常重要。很多项目交接的时候接手的人根本不知道当初为什么选这个报文每个PZD字是什么含义。如果用的是自由报文那就更麻烦了。所以项目文档里一定要写清楚报文类型、每个PZD字的含义、关键参数设置、地址分配。这不仅是方便别人也是方便你自己以后维护。6.6 用Startdrive比用BOP-2面板效率高十倍BOP-2面板虽然能设参数但操作繁琐而且看不到参数之间的关联。Startdrive软件可以直接在电脑上设置所有参数还能在线监控、批量修改、导出参数文件。如果条件允许强烈建议用Startdrive调试G120。7. 报文配置的进阶思路从单台到多台当你掌握了单台G120的报文配置之后很自然会遇到多台变频器的场景。比如一条产线上有十几台G120都要通过PROFINET和同一台PLC通讯。这时候报文配置的思路是一样的但需要注意几个额外的问题。首先是地址分配。每台G120都需要独立的输入输出地址范围不能重叠。在博途里组态的时候博途会自动分配不冲突的地址但你需要记录下来方便程序里引用。我的习惯是用一个数据结构比如UDT来管理每台变频器的控制字和状态字这样程序里看起来清晰也不容易搞混。其次是设备名称。每台G120的设备名称必须唯一通常用“G120_01”、“G120_02”这样的命名规则。设备名称在博途里组态在变频器侧用Startdrive或BOP-2设置。如果设备名称不匹配对应的变频器就通讯不上。最后是通讯负载。十几台G120同时通讯PROFINET网络的负载会明显增加。如果发现通讯不稳定可以考虑调整通讯周期比如从1ms改成2ms或4ms降低网络负载。另外确保网络拓扑合理避免级联太多交换机导致延迟过大。对于32台变频器这种大规模场景通常不会全部用PROFINET而是用Modbus RTU轮询的方式。Modbus轮询虽然速度慢但成本低、布线简单适合对实时性要求不高的场景。如果混合使用PROFINET和Modbus需要注意两种通讯方式的报文体系是完全不同的不能混为一谈。8. 关于报文我踩过的那些坑说几个我自己在实际项目中踩过的坑希望能帮你少走弯路。第一个坑是报文号选错了。有一次做项目博途里组态的是标准报文1但变频器侧P0922设的是标准报文20。结果PLC发过去的控制字变频器能收到但状态字读回来全是0。排查了半天才发现是报文号不匹配。这个教训告诉我博途组态和变频器参数必须一一对应组态完成后一定要核对P0922的值。第二个坑是频率设定值换算错了。有一次给客户调试客户要求给30Hz我算了一下30/50×163849830给了16#2666。结果变频器跑到了36Hz。后来发现P2000设的是60Hz不是50Hz。30/60×163848192才是正确的值。这个坑让我养成了一个习惯调试前先确认P2000的值再算频率设定值。第三个坑是自由报文的互联搞混了。有一次用自由报文P2051[0]设了r0899状态字1P2051[1]设了r0063实际频率但P2061[0]忘了设结果PLC发过去的控制字变频器收不到。自由报文的发送和接收是分开配置的发送用P2051接收用P2061两个都要设缺一不可。第四个坑是看门狗时间设太短。有一次网络负载比较高变频器频繁报F08502。查了半天发现是看门狗时间设得太短默认是100ms网络稍微有点延迟就触发故障。后来把P2047改成500ms问题就解决了。当然这只是权宜之计根本解决办法还是优化网络。这些坑说起来都是小事但在实际调试中每一个都能让你折腾半天。希望你看完这篇文章之后能直接绕过这些坑把时间花在更有价值的事情上。
返回列表