分享

西门子1200PLC与汇川伺服电机的MODBUS

 微信用户18w7s3 2023-05-14 发布于江苏
 一、硬件准备
 
以下以 CPU1215C DC/DC/DC和CM1241 RS485 模块为例,介绍S7-1200 Modbus RTU 主站通信控制汇川IS620P系列伺服驱动器的组态及编程步骤。
 
二、伺服驱动器通信参数设置
 
功能码名称设定值出厂值备注
H00-00电机编号1410114000  
H03-10DI5端子功能选择01取消输入端子DI5的默认伺服使能功
能,以便使用通信VDI控制伺服使能
H05-00主位置指令来源20修改成多段位置指令
H05-02电机每旋转1圈的位置指令数100000  
H0C-00驱动器轴地址91  
H0C-02串口波特率设置25  
H0C-09通信VDI10  
H0C-26MODBUS通信数据高低位顺序01  
H11-04位移指令类型选择10绝对位移指令
H17-00VDI1端子功能选择10伺服使能
H17-02VDI2端子功能选择280多段位置指令使能

参数修改完成后,需要重现上电,修改H02-01为1,重启伺服驱动器,否则驱动器上电后需要进行原点复归确认机械原点,断电后无位置记忆。若报警731,则将H0D-20设置为1,然后重新上电重启,若报警ER994,则表示通讯地址冲突。
 
三、S7-1200PLC的程序编写
 
1、plc硬件组态和相关指令的详细介绍请参考(西门子官方技术文档
 
在西门子1200plc中Modbus RTU通信指令有两个版本,在这里使用的是旧版本指令
 

通信参数的设置只需主站和从站一致即可,如果觉得在伺服驱动器处修改比较麻烦,也可以从plc的组态中进行修改,为了参考官方技术文档资料,本例从伺服驱动器修改通信参数
 
2、完成硬件组态之后,按如下方式添加通信数据块
 
 
3、右键数据块图标→点击“属性”→“属性”→去掉“优化的块访问”的“√”
  

 
 
4、双击打开刚添加的伺服控制数据块,在数据块中添加如下变量并编译
  
 
5、添加“MB_COMM_LOAD”指令组态端口使用 Modbus RTU 协议来通信
  
 
注意:要组态 Modbus RTU 的端口,必须调用“MB_COMM_LOAD”一次。完成组态后,“MB_MASTER”和“MB_SLAVE”指令可以使用该端口。如果要修改其中一个通信参数,则只需再次调用“MB_COMM_LOAD”。每次“MB_COMM_LOAD”调用将删除通信缓冲区中的内容。为避免通信期间数据丢失,应避免不必要地调用该指令。
 
6、添加如下指令,当按下i0.0时,读取当前位置并将数值存入DB块中的编码器反馈值,功能码首地址H0B-58(指令首地址计算:16进制0B00改为10进制2816,再加58,再加上400001)
  
 
7、添加如下指令,按下i0.1,将DB块中的位置、速度、加减速时间写入伺服驱动器,功能码首地址H11-12(指令首地址计算:16进制1100改为10进制4352,加上12,再加上400001)
  
 
其中,给定位置(第一段位移) 的数据范围若超出 -65536~+65535,则属于 32 位功能码,占用两个连续的功能码组内偏置号,占用 2个连续的地址,分别为 H11-12 和 H11-13,但通信地址仅由偏置号较低的地址决定。写入功能码时,需要根据 H0C-26 的设置,确定在通信帧中高16位和低16位的先后顺序。H0C-26=0时高 16 位在前,低 16 位在后;H0C-26=1时低 16 位在前,高 16 位在后。默认情况下H0C-26=1,偏置号较低的地址 (H11-12) 存储功能码值的低 16 位,偏置号较高的地址 (H11-13)存储功能码值的高 16 位,与西门子plc的存储方式相反。速度和加减速时间功能码的数据范围在 -65536~+65535 之内,为 16 位功能码,只占用 1 个功能码组内偏置,只占用 1 个地址,分别为H11-14和H11-15。
 
8、添加如下指令,按下i0.2将DB块中的控制字写入伺服驱动器,功能码H31-00(指令首地址计算:16进制3100改为10进制12544,再加上400001)
 

 
四、plc指令中通信存储器地址的计算方法
 
1、伺服参数地址为什么要进行进制转换:
 
伺服驱动器功能码显示形式:HXX-YY
其中:
XX:功能码组号,为十六进制数据;
YY:功能码组内偏置,为十进制数据
 
以功能参数H0B-58为例,功能参数中0B00为功能组参数,为16进制形式,进行通信时需要转换成十进制数字,而后面的58为偏移地址,本身就是十进制形式,通信时不需要转换。
 
2、plc地址为什么要加40001
 
PLC地址一般采用10进制描述,共有5位,其中第一位代表寄存器类型,后面的代表偏移地址。Modbus Master 协议库把标准的Modbus 地址映射为所谓Modbus 功能号,读写从站的数据。Modbus Master 协议库支持如下地址:
 
·00001 - 09999:数字量输出(线圈)
·10001 - 19999:数字量输入(触点)
·30001 - 39999:输入数据寄存器(通常为模拟量输入)
·40001 - 49999:数据保持寄存器
 
支持 Modbus 协议的设备或软件,使用时用户直接设置或看到的应当是 Modbus 数据地址。如果 Modbus 通信的一方提供的所谓 Modbus 协议只有功能码,则需要注意了解此功能号与 Modbus 地址间的对应关系。
 
五、伺服驱动器相关功能码介绍
 
1、H00-00电机编号
 
14000:汇川20位增量编码器电机
14101:汇川23位绝对值编码器电机
电机编号设置错误,将发生ER120(产品匹配故障)
 
2、H02-31 系统参数初始化,用于使参数恢复出厂值或清除故障记录。
 

设定值操作含义  
0无操作  
1恢复出厂设定值除 H00、H01 组参数,其他组参数恢复至驱
动器出厂值
2清除故障记录最近 10 次故障和警告代码被清除
 
3、H03-10 DI5端子功能选择
 
DI/DO基本功能定义

设定值DI 端子功能设定值DI 端子功能
0不分配 DI 功能19JOGCMD-( 反向点动 )
1S-ON ( 伺服使能 )20PosStep( 步进量使能 )
2ALM-RST( 故障与警告复位 )21HX1( 手轮倍率信号 1)
3GAIN-SEL( 增益切换 )22HX2( 手轮倍率信号 2)
4CMD-SEL( 主辅运行指令切换 )23HX_EN( 手轮使能信号 )
5DIR-SEL( 多段运行指令方向选择 )24GEAR_SEL( 电子齿轮选择 )
6CMD1( 多段运行指令切换 1)25ToqDirSel ( 转矩指令方向设定 )
7CMD2( 多段运行指令切换 2)26SpdDirSel ( 速度指令方向设定 )
8CMD3( 多段运行指令切换 3)27PosDirSel ( 位置指令方向设定 )
9CMD4( 多段运行指令切换 4)28PosInSen ( 多段位置指令使能 )
10M1-SEL( 模式切换 1)29XintFree ( 中断定长状态解除 )
11M2-SEL( 模式切换 2)30
12ZCLAMP( 零位固定使能 )31HomeSwitch ( 原点开关 )
13INHIBIT( 位置指令禁止 )32HomingStart ( 原点复归使能 )
14P-OT( 正向超程开关 )33XintInhibit ( 中断定长禁止 )
15N-OT( 反向超程开关 )34EmergencyStop ( 紧急停机 )
16P-CL( 正外部转矩限制 )35ClrPosErr( 清除位置偏差 )
17N-CL( 负外部转矩限制 )36V_LmtSel ( 内部速度限制源 )
18JOGCMD+( 正向点动 )37PulseInhibit( 脉冲指令禁止 )

注意:
①、H03-10 请勿设定为上表以外的值。
②、相同 DI 功能不可重复分配。否则,将发生 Er.130(DI 功能重复分配 )。
③、请勿分配了某一 DI 功能,并将该 DI 逻辑置为有效后,再取消该 DI 功能分配,否则该 DI 功能将保持有效!
 
4、H04-00 DO1端子功能选择
 
DO基本功能定义


设定值DO 功能名称
0不分配 DO 功能
1S-RDY:伺服准备好
2TGON:电机旋转
3ZERO:零速信号
4V-CMP:速度一致
5COIN:定位完成
6NEAR:定位接近
7C-LT:转矩限制
8V-LT:速度受限
9BK:抱闸
10WARN:警告
11ALM:故障
12ALMO1:输出 3 位报警代码
13ALMO2:输出 3 位报警代码
14ALMO3:输出 3 位报警代码
15Xintcoin:中断定长完成
16HomeAttain:原点回零完成
17ElecHomeAttain:电气回零完成
18ToqReach:转矩到达
19V-Arr:速度到达

注意:
①、H04-00 的参数值请勿设定为上表以外的值。
②、相同 DO 功能可分配到不同的 DO 端子,包括硬件 DO 与 VDO 端子。
 
5、H05-00 位置指令来源
位置控制模式时,用于选择位置指令来源。
 

设定值指令来源指令获取方式
0脉冲指令上位机或者其他脉冲发生装置产生位置脉冲指令,通过硬件端子输入至伺服驱动器。硬件端子通过 H05-01 选择。
1步进量由参数 H05-05 设置步进量位移。由 DI 功能 FunIN.20 触发步进量指令。
2多段位置指令由 H11 组参数设定多段位置功能的运行方式。由 DI 功能 FunIN.28 触发多段位置指令。
 
6、H05-02 电机每旋转一圈的位置指令数
 
7、H05-30 原点复归使能控制,设置原点复归模式及触发信号来源。
 

设定值触发信号备注
原点复归模式触发信号
0关闭原点复归禁止原点复归功能
1通过DI 输入 HomingStart 信号,使能原点复归功能原点回零DI 信号 FunIN.32(HomingStart:原点复归使能 )
2通过DI 输入 HomingStart 信号,使能电气回零功能电气回零DI 信号 FunIN.32(HomingStart:原点复归使能 )
3上电后立即启动原点复归原点回零位置模式下,重新上电,第 1 次伺服使能信号
4立即进行原点复归原点回零位置模式下,伺服使能信号
回零成功后,H05-30=0
5启动电气回零命令电气回零位置模式下,伺服使能信号
回零成功后,H05-30=0
6以当前位置为原点原点回零不需要
回零成功后,H05-30=0
 
8、H11-12 多段位置第 1 段移动位移。
 
9、H11-14 多段位置第 1 段最大运行速度。
 
最大运行速度是指电机不处于加减速过程的匀速运行速度,若 H11-12( 第 1 段移动位移 ) 过小,电机实际转速将小于 H11-14。
 
10、H11-15 第一段位移加减速时间
 
多段位置第 1 段电机由 0rpm 匀变速到 1000rpm 的时间。
 
11、H0C-00 驱动器轴地址
 
0:广播地址,上位机可通过广播地址对所有驱动器进行写操作,驱动器收到广播地址的帧进行相应操作,但不做回应。
 
1~247:当多台伺服驱动器进行组网时,每个驱动器只能有唯一的地址,否则会导致通信异常或无法通信。
 
12、H0C-09 通信VDI,设置是否使用虚拟数字信号输入端子 (Virtual Digital Input,简称 VDI)。
 
VDI 类似硬件 DI 端子,可分配 DI 功能。当使能 VDI 时,相当于扩展 DI 的个数,VDI 个数为 16 个。VDI 与 H03 组 DI 端子分配同一非零 DI 功能,驱动器将发生 Er.130 !
 
首次上电,VDI 端子逻辑由 H0C-10( 上电后 VDI 默认虚拟电平值 ) 决定。之后,VDI 端子逻辑由 H31-00(VDI 虚拟电平 ) 决定。
 
H0C-10 在面板上显示为十进制,H31-00 面板不可见,转化成二进制后,H0C-10(H31-00) 的 bit(n)=1 表示VDI(n+1) 端子逻辑为“1”,bit(n)=0 表示 VDI(n+1) 端子逻辑为“0”。
 
13、H0C-11 通信VDO,设置是否使用虚拟数字信号输出端子 (Visual Digital Output,简称 VDO)。
 
VDO 类似硬件 DO 端子,可分配 DO 功能。当使能 VDO 时,相当于扩展 DO 的个数,VDO 个数为 16 个。
 
H0C-12 和 H17-32 在面板上显示为十六进制,转化成二进制后,H0C-12(H17-32) 的 bit(n)=1 表示 VDO(n+1) 端子逻辑为“1”,bit(n)=0 表示 VDO(n+1) 端子逻辑为“0”。建议各 VDO 端子逻辑电平设置与 H0C-12 设置成相反的逻辑。
 
14、H11-04 位移指令类型选择
 
0:相对位移指令
1:绝对位移指令
 
15、H17-00 VDI1 端子功能选择,设置 VDI1( 虚拟输入端子 1) 对应的 DI 功能。
 
16、H17-02 VDI2 端子功能选择,设置 VDI2( 虚拟输入端子 2) 对应的 DI 功能。
 
17、H02-01 绝对值系统选择(选择驱动器绝对位置功能)。
 

设定值绝对值系统选择备注
0增量位置模式驱动器后需要进行原点复归确认机械原点,断电后无位
置记忆功能。
1绝对位置线性模式适用于绝对值编码器电机(电机编号 H0000=14101),
驱动器断电时编码器通过电池备份数据,上电后驱动器
通过编码器绝对位置计算机械绝对位置。
2绝对位置旋转模式

18、H02-02 旋转方向选择
 
19、H0B-58 机械绝对位置(低 32 位)
 
显示使用绝对值功能时,机械对应的位置反馈低 32 位数值 ( 编码器单位 )。
 
20、H0B-60 机械绝对位置(高 32 位)
 
显示使用绝对值功能时,机械对应的位置反馈高 32 位数值 ( 编码器单位 )。
 
21、H0D-20 绝对编码器复位使能
 
通过设置 H0D-20 复位编码器内部故障或复位编码器反馈多圈数据。
◆注:执行复位编码器反馈多圈数据操作后,编码器绝对位置发生突变,需要进行机械原点复归操作。
 
 
设定值功能
0无操作
1复位故障
2复位故障和多圈数据

22、H31-00 通信给定 VDI 虚拟电平
 
使用 VDI 功能时,设定 VDI1~VDI16 对应的 DI 功能电平。
H31-00 为十进制数,在面板上不可见,只能通过通信方式给定。
 
23、H0C-02串口波特率设置(设置驱动器与上位机通信速率),出厂设定值5
  

设定值波特率设置
02400 Kbp/s
14800 Kbp/s
29600 Kbp/s
319200 Kbp/s
438400 Kbp/s
557600 Kbp/s

伺服驱动器的通信速率必须和上位机通信速率一致,否则无法通信。
 
24、H0C-25 MODBUS 指令应答延时,设定范围0-5000,出厂设定值1。
 
25、H0C-26 MODBUS 通信数据高低位顺序,设置使用 MODBUS 通信时,针对 32 位数据的传送格式。出厂设定值1。
 

设定值32 位数据高低位顺序
0高 16 位在前,低 16 位在后
1低 16 位在前,高 16 位在后

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多