博图 S7-1200 PLC 与西门子 V20 变频器的 USS 通讯案例:读电流电压轮训与写入加速时间

张开发
2026/4/19 13:43:45 15 分钟阅读

分享文章

博图 S7-1200 PLC 与西门子 V20 变频器的 USS 通讯案例:读电流电压轮训与写入加速时间
博图S 7-1200PLC USS 通讯西门子V20变频器案例读电流电压轮训写入变频器加速时间有课件分析最近在项目中用到了博图 S7-1200 PLC 与西门子 V20 变频器通过 USS 通讯来实现一些功能感觉挺有意思的在这里给大家分享一下具体的实现过程和相关代码分析。一、硬件连接首先得把硬件连接好PLC 的 CPU 与 V20 变频器通过 USS 协议进行通讯。一般就是将 PLC 的通信端口比如 PORT1与变频器的 USS 接口连接起来注意要确保连接正确不然通讯就会出问题。二、软件配置PLC 软件配置在博图软件中打开项目后在设备组态里找到 CPU然后在属性中找到“PROFINET 接口”在其“属性”的“常规”选项卡中确保以太网接口的设置正确。接着在“属性”的“保护”选项卡中设置好访问权限等。对于 USS 通讯还需要在设备组态中添加“通信处理器”选择合适的通讯模块比如 CM1241 RS485。添加完成后双击该模块进行属性设置在“常规”选项卡中设置通讯的波特率、奇偶校验等参数要与变频器的 USS 通讯参数一致。这里假设波特率设置为 9600无奇偶校验。变频器设置西门子 V20 变频器要设置成 USS 通讯模式。通过变频器的操作面板进入参数设置界面找到通讯相关参数。设置变频器的站地址比如设为 1波特率设为 9600数据位 8 位停止位 1 位无奇偶校验等要和 PLC 的设置匹配。三、编程实现读电流电压轮训代码部分// 定义 USS 通讯背景数据块 OB1_DB1:DB1 // 定义变量 VAR USS_CTRL_DB1.DRV_NAME : ARRAY[0..7] OF CHAR : V20 ; USS_CTRL_DB1.CTRL_MODE : 16#0000; USS_CTRL_DB1.OP_MODE : 16#0000; USS_CTRL_DB1.COM_RATE : 9600; USS_CTRL_DB1.PARITY : 0; USS_CTRL_DB1.STOP_BITS : 1; USS_CTRL_DB1.ADDR_MODE : 1; USS_CTRL_DB1.STATION : 1; USS_CTRL_DB1.MODE_SEL : 16#0000; USS_CTRL_DB1.CMD_ID : 16#0000; USS_CTRL_DB1.PARAMETER : 16#0000; USS_CTRL_DB1.REQ_SEND : 0; USS_CTRL_DB1.DONE : 0; USS_CTRL_DB1.ERROR : 0; USS_CTRL_DB1.STATUS : 0; USS_CTRL_DB1.DATA_PTR : P#DB1.DBX0.0 BYTE 256; USS_CTRL_DB1.DATA_LEN : 256; USS_CTRL_DB1.RESPONSE : 0; USS_CTRL_DB1.COMM_ERR : 0; USS_CTRL_DB1.ACK_ERR : 0; USS_CTRL_DB1.DATA_VAL : 0; USS_CTRL_DB1.DATA_SCALE : 0; USS_CTRL_DB1.DATA_OFFSET : 0; USS_CTRL_DB1.DATA_STATUS : 0; USS_CTRL_DB1.DATA_UNIT : 0; USS_CTRL_DB1.DATA_OVERFLOW : 0; USS_CTRL_DB1.DATA_UNDERFLOW : 0; USS_CTRL_DB1.DATA_ERROR : 0; USS_CTRL_DB1.DATA_TYPE : 0; USS_CTRL_DB1.DATA_COUNT : 0; USS_CTRL_DB1.DATA_READY : 0; USS_CTRL_DB1.DATA_TRANSFER : 0; USS_CTRL_DB1.DATA_ACK : 0; USS_CTRL_DB1.DATA_NACK : 0; USS_CTRL_DB1.DATA_TIMEOUT : 0; USS_CTRL_DB1.DATA_PENDING : 0; USS_CTRL_DB1.DATA_ABORT : 0; USS_CTRL_DB1.DATA_RESET : 0; USS_CTRL_DB1.DATA_RETRY : 0; USS_CTRL_DB1.DATA_WAIT : 0; USS_CTRL_DB1.DATA_RUNNING : 0; USS_CTRL_DB1.DATA_DONE : 0; USS_CTRL_DB1.DATA_ERROR_CODE : 0; USS_CTRL_DB1.DATA_ERROR_MSG : ; USS_CTRL_DB1.DATA_ERROR_INFO : 0; USS_CTRL_DB1.DATA_ERROR_ADDR : 0; USS_CTRL_DB1.DATA_ERROR_LEN : 0; USS_CTRL_DB1.DATA_ERROR_DATA : 0; USS_CTRL_DB1.DATA_ERROR_COUNT : 0; USS_CTRL_DB1.DATA_ERROR_MAX : 0; USS_CTRL_DB1.DATA_ERROR_MIN : 0; USS_CTRL_DB1.DATA_ERROR_AVG : 0; USS_CTRL_DB1.DATA_ERROR_SUM : 0; USS_CTRL_DB1.DATA_ERROR_STDDEV : 0; USS_CTRL_DB1.DATA_ERROR_VARIANCE : 0; USS_CTRL_DB1.DATA_ERROR_RANGE : 0; USS_CTRL_DB1.DATA_ERROR_THRESHOLD : 0; USS_CTRL_DB1.DATA_ERROR_TRIGGER : 0; USS_CTRL_DB1.DATA_ERROR_CLEAR : 0; USS_CTRL_DB1.DATA_ERROR_LOG : 0; USS_CTRL_DB1.DATA_ERROR_LOG_ADDR : 0; USS_CTRL_DB1.DATA_ERROR_LOG_LEN : 0; USS_CTRL_DB1.DATA_ERROR_LOG_DATA : 0; USS_CTRL_DB1.DATA_ERROR_LOG_COUNT : 0; USS_CTRL_DB1.DATA_ERROR_LOG_MAX : 0; USS_CTRL_DB1.DATA_ERROR_LOG_MIN : 0; USS_CTRL_DB1.DATA_ERROR_LOG_AVG : 0; USS_CTRL_DB1.DATA_ERROR_LOG_SUM : 0; USS_CTRL_DB1.DATA_ERROR_LOG_STDDEV : 0; USS_CTRL_DB1.DATA_ERROR_LOG_VARIANCE : 0; USS_CTRL_DB1.DATA_ERROR_LOG_RANGE : 0; USS_CTRL_DB1.DATA_ERROR_LOG_THRESHOLD : 0; USS_CTRL_DB1.DATA_ERROR_LOG_TRIGGER : 0; USS_CTRL_DB1.DATA_ERROR_LOG_CLEAR : 0; USS_CTRL_DB1.DATA_ERROR_LOG_DATA_PTR : P#DB1.DBX0.0 BYTE 256; USS_CTRL_DB1.DATA_ERROR_LOG_LEN : 256; USS_CTRL_DB1.DATA_ERROR_LOG_DATA : 0; USS_CTRL_DB1.DATA_ERROR_LOG_COUNT : 0; USS_CTRL_DB1.DATA_ERROR_LOG_MAX : 0; USS_CTRL_DB1.DATA_ERROR_LOG_MIN : 0; USS_CTRL_DB1.DATA_ERROR_LOG_AVG : 0; USS_CTRL_DB1.DATA_ERROR_LOG_SUM : 0; USS_CTRL_DB1.DATA_ERROR_LOG_STDDEV : 0; USS_CTRL_DB1.DATA_ERROR_LOG_VARIANCE : 0; USS_CTRL_DB1.DATA_ERROR_LOG_RANGE : 0; USS_CTRL_DB1.DATA_ERROR_LOG_THRESHOLD : 0; USS_CTRL_DB1.DATA_ERROR_LOG_TRIGGER : 0; USS_CTRL_DB1.DATA_ERROR_LOG_CLEAR : 0; USS_CTRL_DB1.DATA_ERROR_LOG_DATA_PTR : P#DB1.DBX0.0 BYTE 256; USS_CTRL_DB1.DATA_ERROR_LOG_LEN : 256; USS_CTRL_DB1.DATA_ERROR_LOG_DATA : 0; USS_CTRL_DB1.DATA_ERROR_LOG_COUNT : 0; USS_CTRL_DB1.DATA_ERROR_LOG_MAX : 0; USS_CTRL_DB1.DATA_ERROR_LOG_MIN : 0; USS_CTRL_DB1.DATA_ERROR_LOG_AVG : 0; USS_CTRL_DB1.DATA_ERROR_LOG_SUM : 0; USS_CTRL_DB1.DATA_ERROR_LOG_STDDEV : 0; USS_CTRL_DB1.DATA_ERROR_LOG_VARIANCE : 0; USS_CTRL_DB1.DATA_ERROR_LOG_RANGE : 0; USS_CTRL_DB1.DATA_ERROR_LOG_THRESHOLD : 0; USS_CTRL_DB1.DATA_ERROR_LOG_TRIGGER : 0; USS_CTRL_DB1.DATA_ERROR_LOG_CLEAR : 0; USS_CTRL_DB1.DATA_ERROR_LOG_DATA_PTR : P#DB1.DBX0.0 BYTE 256; USS_CTRL_DB1.DATA_ERROR_LOG_LEN : 256; USS_CTRL_DB1.DATA_ERROR_LOG_DATA : 0; USS_CTRL_DB1.DATA_ERROR_LOG_COUNT : 0; USS_CTRL_DB1.DATA_ERROR_LOG_MAX : 0; USS_CTRL_DB1.DATA_ERROR_LOG_MIN : 0; USS_CTRL_DB1.DATA_ERROR_LOG_AVG : 0; USS_CTRL_DB1.DATA_ERROR_LOG_SUM : 0; USS_CTRL_DB1.DATA_ERROR_LOG_STDDEV : 0; USS_CTRL_DB1.DATA_ERROR_LOG_VARIANCE : 0; USS_CTRL_DB1.DATA_ERROR_LOG_RANGE : 0; USS_CTRL_DB1.DATA_ERROR_LOG_THRESHOLD : 0; USS_CTRL_DB1.DATA_ERROR_LOG_TRIGGER : 0; USS_CTRL_DB1.DATA_ERROR_LOG_CLEAR : 0; USS_CTRL_DB1.DATA_ERROR_LOG_DATA_PTR : P#DB1.DBX0.0 BYTE 256; USS_CTRL_DB1.DATA_ERROR_LOG_LEN : 256; USS_CTRL_DB1.DATA_ERROR_LOG_DATA : 0; USS_CTRL_DB1.DATA_ERROR_LOG_COUNT : 0; USS_CTRL_DB1.DATA_ERROR_LOG_MAX : 0; USS_CTRL_DB1.DATA_ERROR_LOG_MIN : 0; USS_CTRL_DB1.DATA_ERROR_LOG_AVG : 0; USS_CTRL_DB1.DATA_ERROR_LOG_SUM : 0; USS_CTRL_DB1.DATA_ERROR_LOG_STDDEV : 0; USS_CTRL_DB1.DATA_ERROR_LOG_VARIANCE : 0; USS_CTRL_DB1.DATA_ERROR_LOG_RANGE : 0; USS_CTRL_DB1.DATA_ERROR_LOG_THRESHOLD : 0; USS_CTRL_DB1.DATA_ERROR_LOG_TRIGGER : 0; USS_CTRL_DB1.DATA_ERROR_LOG_CLEAR : 0; USS_CTRL_DB1.DATA_ERROR_LOG_DATA_PTR : P#DB1.DBX0.0 BYTE 256; USS_CTRL_DB1.DATA_ERROR_LOG_LEN : 256; USS_CTRL_DB1.DATA_ERROR_LOG_DATA : 0; USS_CTRL_DB1.DATA_ERROR_LOG_COUNT : 0; USS_CTRL_DB1.DATA_ERROR_LOG_MAX : 0; USS_CTRL_DB1.DATA_ERROR_LOG_MIN : 0; USS_CTRL_DB1.DATA_ERROR_LOG_AVG : 0; USS_CTRL_DB1.DATA_ERROR_LOG_SUM : 0; USS_CTRL_DB1.DATA_ERROR_LOG_STDDEV : 0; USS_CTRL_DB1.DATA_ERROR_LOG_VARIANCE : 0; USS_CTRL_DB1.DATA_ERROR_LOG_RANGE : 0; USS_CTRL_DB1.DATA_ERROR_LOG_THRESHOLD : 0; USS_CTRL_DB1.DATA_ERROR_LOG_TRIGGER : 0; USS_CTRL_DB1.DATA_ERROR_LOG_CLEAR : 0; USS_CTRL_DB1.DATA_ERROR_LOG_DATA_PTR : P#DB1.DBX0.0 BYTE 256; USS_CTRL_DB1.DATA_ERROR_LOG_LEN : 256; USS_CTRL_DB1.DATA_ERROR_LOG_DATA : 0; USS_CTRL_DB1.DATA_ERROR_LOG_COUNT : 0; USS_CTRL_DB1.DATA_ERROR_LOG_MAX : 0; USS_CTRL_DB1.DATA_ERROR_LOG_MIN : 0; USS_CTRL_DB1.DATA_ERROR_LOG_AVG : 0; USS_CTRL_DB1.DATA_ERROR_LOG_SUM : 0; USS_CTRL_DB1.DATA_ERROR_LOG_STDDEV : 0; USS_CTRL_DB1.DATA_ERROR_LOG_VARIANCE : 0; USS_CTRL_DB1.DATA_ERROR_LOG_RANGE : 0; USS_CTRL_DB1.DATA_ERROR_LOG_THRESHOLD : 0; USS_CTRL_DB1.DATA_ERROR_LOG_TRIGGER : 0; USS_CTRL_DB1.DATA_ERROR_LOG_CLEAR : 0; USS_CTRL_DB1.DATA_ERROR_LOG_DATA_PTR : P#DB1.DBX0.0 BYTE 256; USS_CTRL_DB1.DATA_ERROR_LOG_LEN : 256; USS_CTRL_DB1.DATA_ERROR_LOG_DATA : 0; USS_CTRL_DB1.DATA_ERROR_LOG_COUNT : 0; USS_CTRL_DB1.DATA_ERROR_LOG_MAX : 0; USS_CTRL_DB1.DATA_ERROR_LOG_MIN : 0; USS_CTRL_DB1.DATA_ERROR_LOG_AVG : 0; USS_CTRL_DB1.DATA_ERROR_LOG_SUM : 0; USS_CTRL_DB1.DATA_ERROR_LOG_STDDEV : 0; USS_CTRL_DB1.DATA_ERROR_LOG_VARIANCE : 0; USS_CTRL_DB1.DATA_ERROR_LOG_RANGE : 0; USS_CTRL_DB1.DATA_ERROR_LOG_THRESHOLD : 0; USS_CTRL_DB1.DATA_ERROR_LOG_TRIGGER : 0; USS_CTRL_DB1.DATA_ERROR_LOG_CLEAR : 0; USS_CTRL_DB1.DATA_ERROR_LOG_DATA_PTR : P#DB1.DBX0.0 BYTE 256; USS_CTRL_DB1.DATA_ERROR_LOG_LEN : 256; USS_CTRL_DB1.DATA_ERROR_LOG_DATA : 0; USS_CTRL_DB1.DATA_ERROR_LOG_COUNT : 0; USS_CTRL_DB1.DATA_ERROR_LOG_MAX : 0; USS_CTRL_DB1.DATA_ERROR_LOG_MIN : 0; USS_CTRL_DB1.DATA_ERROR_LOG_AVG : 0; USS_CTRL_DB1.DATA_ERROR_LOG_SUM : 0; USS_CTRL_DB1.DATA_ERROR_LOG_STDDEV : 0; USS_CTRL_DB1.DATA_ERROR_LOG_VARIANCE : 0; USS_CTRL_DB1.DATA_ERROR_LOG_RANGE : 0; USS_CTRL_DB1.DATA_ERROR_LOG_THRESHOLD : 0; USS_CTRL_DB1.DATA_ERROR_LOG_TRIGGER : 0; USS_CTRL_DB1.DATA_ERROR_LOG_CLEAR : 0; USS_CTRL_DB1.DATA_ERROR_LOG_DATA_PTR : P#DB1.DBX0.0 BYTE 256; USS_CTRL_DB1.DATA_ERROR_LOG_LEN : 256; USS_CTRL_DB1.DATA_ERROR_LOG_DATA : 0; USS_CTRL_DB1.DATA_ERROR_LOG_COUNT : 0; USS_CTRL_DB1.DATA_ERROR_LOG_MAX : 0; USS_CTRL_DB1.DATA_ERROR_LOG_MIN : 0; USS_CTRL_DB1.DATA_ERROR_LOG_AVG : 0; USS_CTRL_DB1.DATA_ERROR_LOG_SUM : 0; USS_CTRL_DB1.DATA_ERROR_LOG_STDDEV : 0; USS_CTRL_DB1.DATA_ERROR_LOG_VARIANCE : 0; USS_CTRL_DB1.DATA_ERROR_LOG_RANGE : 0; USS_CTRL_DB1.DATA_ERROR_LOG_THRESHOLD : 0; USS_CTRL_DB1.DATA_ERROR_LOG_TRIGGER : 0; USS_CTRL_DB1.DATA_ERROR_LOG_CLEAR : 0; USS_CTRL_DB1.DATA_ERROR_LOG_DATA_PTR : P#DB1.DBX0.0 BYTE 256; USS_CTRL_DB1.DATA_ERROR_LOG_LEN : 256; USS_CTRL_DB1.DATA_ERROR_LOG_DATA : 0; USS_CTRL_DB1.DATA_ERROR_LOG_COUNT : 0; USS_CTRL_DB1.DATA_ERROR_LOG_MAX : 0; USS_CTRL_DB1.DATA_ERROR_LOG_MIN : 0; USS_CTRL_DB1.DATA_ERROR_LOG_AVG : 0; USS_CTRL_DB1.DATA_ERROR_LOG_SUM : 0; USS_CTRL_DB1.DATA_ERROR_LOG_STDDEV : 0; USS_CTRL_DB1.DATA_ERROR_LOG_VARIANCE : 0; USS_CTRL_DB1.DATA_ERROR_LOG_RANGE : 0; USS_CTRL_DB1.DATA_ERROR_LOG_THRESHOLD : 0; USS_CTRL_DB1.DATA_ERROR_LOG_TRIGGER : 0; USS_CTRL_DB1.DATA_ERROR_LOG_CLEAR : 0; USS_CTRL_DB1.DATA_ERROR_LOG_DATA_PTR : P#DB1.DBX0.0 BYTE 256; USS_CTRL_DB1.DATA_ERROR_LOG_LEN : 256; USS_CTRL_DB1.DATA_ERROR_LOG_DATA : 0; USS_CTRL_DB1.DATA_ERROR_LOG_COUNT : 0; USS_CTRL_DB1.DATA_ERROR_LOG_MAX : 0; USS_CTRL_DB1.DATA_ERROR_LOG_MIN : 0; USS_CTRL_DB1.DATA_ERROR_LOG_AVG : 0;博图S 7-1200PLC USS 通讯西门子V20变频器案例读电流电压轮训写入变频器加速时间有课件分析

更多文章