S7-200SMART V90 Modbus Library介绍

v90 modbus library 简介
s7-200 smart v90 modbus library 可以支持速度及内部位置控制,如图1。所有的功能块都编写成了子程序,使用时只需将相应的子程序拷贝到项目中即可, 但要注意避免使用与子程序中重复的地址。
图1. v90 modbus library
优势
1. 在 plc 侧不必编写任何位控程序,只需调用 s7-200 smart v90 modbus library 即可。
2. 不必查询v90 中的参数号,只需通过库的接口参数输入相应的速度,位置以及控制参数
3. 库例程中已经做好轮询程序,用户只需稍做修改就可用在自己的项目中
注意:由于modbus rtu 是串口通信,实时响应与直接脉冲控制相比要慢,特别是控制多轴时
软硬件要求
序号
软硬件要求
1
s7-200 smart cpu v2.1
2
step7-micro/win smart v2.1 update 2
3
v90 驱动器 v1.05 以上
4
sinamics v-assistant v1.03
sinamics v-assistant 设置v90
使用s7-200 smart v90 modbus library 之前要先用sinamics v-assistant 软件对 v90 进行设置(或是直接在v90上进行参数设置)
1. 使用usb电缆连接v90与装有sinamics v-assistant 的软件, 如图2。
图2. usb 电缆连接 v-assistant 与 v90
2. 打开sinamics v-assistant 软件,并点击“在线”,软件会自动检测出所使用的v90 的型号以及电机的型号,如此时可设置控制模式,如图3。
图3. 在线检测读出 v90 及电机型号
3. 定义io输入输出分配,有些输入信号如果没有实际接入,可以通过软件中的强制实现,如图4。
图4. 输入输出分配
4. 仿真及测试电机,使用plc 控制前可先进行 io 及 电机测试,以便检测v90 侧没有任何问题,如图5。
图5. io 仿真及电机测试
速度控制
1. 在 v-assistant中设置 v90 基本参数,如图6。
图6. v-assistant 中设置 v90 参数
2. 如果不使用 v-assistant, 则在 v90 上直接设置参数,如图7。
图7. v90 面板直接设置伺服驱动器参数
3. modbus 初始化,设置的通信速率要与v90中的设置一致, 如图8。
图8. modbus 初始化
4. 控制速度轴,如图9。
图9. 控制速度轴
参数定义如表1.
表1. 速度轴参数定义
en
:bool 子程序使能信号;
com_en
:bool mbus通讯触发信号, 上升沿有效,触发一次com_en信号,子程序中通讯操作轮询一次;
slave_addr
:byte v90 驱动mbus通讯地址(p29004);
ctw
:word v90 驱动mbus通讯控制字(40100),第0位son_off1必须需要0-->1才能伺服使能;输入:16#41e-16#41f与v90中的40100一致,如果需要单独控制其它位,需要参照控制字每一位的含义,如图10;
speedset
:real 速度给定(40101),范围 0.0 % --100.0%额定转速;例:如果额定速度为3000,输入20,则速度为3000*20%=600;
com_buf
:dword mbus读写操作缓冲区,指针变量 格式必须为 &vb,建议每个周间隔50 bytes,例如axis_1----&vb6000; axis_2----&vb6050; axis_3----&vb6100......;
done
:bool 当前子程序扫描完成信号,可以用于下一个子程序的com_en触发信号,但是必须在下一个子程序扫描完成之后进行复位操作;
active
:bool 当前子程序激活,正在处理;
图10. 控制速度 40100 参数定义
内部位置控制
内部位置控制可以实现相对位移和绝对位移的控制,可根据实际应用选择使用,如图11。
图11.位置控制程序块
相对定位控制
1. 在 v-assistant 中设置 v90 基本参数,如图12。
图12. v-assistant 中设置 v90 参数
2. 如果不使用 v-assistant, 则在 v90 上直接设置参数,如图13。
图13. v90 面板直接设置伺服驱动器参数
3. modbus 初始化,设置的通信速率要与 v90 中的设置一致, 如图14。
图14. modbus 初始化
4. 控制相对定位(通过40100参数中的 “pos_typ 参数来选择相对位定位), 如图15。
图15. 控制相对定位
参数定义如表2.
表2. 相对定位接口参数定义
en
:bool 子程序使能信号;
com_en
:bool mbus通讯触发信号, 上升沿有效,触发一次com_en信号,子程序中通讯操作轮询一次;
slave_addr
:byte v90 驱动mbus通讯地址(p29004);
ctw
:word v90 驱动mbus通讯控制字(40100),位置模式给出 16#40e 到 16#40f,驱动使能,第0位son_off1必须需要0-->1才能伺服使能;然后再给出16#41f,使得step_acc有一个触发上升沿;如果需要单独控制其它位,需要参照v90位置模式ipos下的控制字每一位的含义,如图16;
positionset
:dint 位置给定,对应于 lu;
speedset
:dint 速度给定,对应于 speedset * 1000 lu/min;
com_buf
:dword mbus读写操作缓冲区,指针变量 格式必须为 &vb,建议每个间隔100 bytes,例如axis_1----&vb7000;  axis_2----&vb7100;  axis_3----&vb7200......;
done
:bool 当前子程序扫描完成信号,可以用于下一个子程序的com_en触发信号,但是必须在下一个子程序扫描完成之后进行复位操作;
active
:bool 当前子程序激活,正在处理;
图16. 相对定位 40100 参数定义
绝对定位控制
绝对定位控制,v90 的基本参数设置与相对定位基本相同,如图12。除此之外,还需要对参考点进行参数设置。
1. 使用 v-assistant 选择参考点类型,如图17。
图17. 选择绝对定位参考点类型
2. 分配参考点输入地址,如图18。
图18. 分配参考点输入地址
3. 分配参考点ok 输出地址,当执行寻找参考点指令并寻参成功后, “refok” 输出置位为1,如图19。可使用该输出判断寻参成功后,执行绝对定位指令。
图19. 分配参考点ok 输出地址
4. 控制绝对定位(通过40100参数中的“ pos_typ 参数来选择绝对定位),图20。
图20. 控制绝对定位
注意:一定要在寻参成功后,即“refok”为1后,才可执行绝对定位。
表3. 绝对定位接口参数定义
en
:bool 子程序使能信号;
com_en
:bool mbus通讯触发信号, 上升沿有效,触发一次com_en信号,子程序中通讯操作轮询一次;
slave_addr
:byte v90 驱动mbus通讯地址(p29004);
ctw
:word v90 驱动mbus通讯控制字(40100),位绝对置模式给出 16#40e 到 16#40f,驱动使能,第0位son_off1必须需要0-->1才能伺服使能;然后再给出16#240f,寻找参考点;用refok来判断寻参成功后,再给出16#46f,执行绝对定位操作。以后只要位置或速度变化就会立即执行,不需要再改变cwt的参数。如果需要单独控制其它位,需要参照v90位置模式ipos下的控制字每一位的含义,如图21;
positionset
:dint 位置给定,对应于 lu;
speedset
:dint 速度给定,对应于 speedset * 1000 lu/min;
com_buf
:dword mbus读写操作缓冲区,指针变量 格式必须为 &vb,建议每个间隔100 bytes,例如axis_1----&vb7000;  axis_2----&vb7100;  axis_3----&vb7200......;
done
:bool 当前子程序扫描完成信号,可以用于下一个子程序的com_en触发信号,但是必须在下一个子程序扫描完成之后进行复位操作;
active
:bool 当前子程序激活,正在处理;
图21. 绝对定位 40100 参数定义
库程序及例程
所有的功能块都编写成了子程序,使用时只需将相应的子程序拷贝到项目中即可, 但要注意避免使用与子程序中重复的地址。程序里面不能多个轴使用一个子程序,如要增加新的轴可通过拷贝增加新的子程序,每一个轴对应一个子程序;具体应用程序包里面有一个3轴速度模式程序和2轴位置模式程序,可以按照这种方式进行修改;
注意:此程序的作者和拥有者对于该程序的功能性和兼容性不负任何责任。使用该程序的风险完全由用户自行承担。由于它是免费的,所以不提供任何担保,错误纠正和热线支持,用户不必为此联系西门子技术支持与服务部门。
modbusv20sample
常见问题
为什么修改了v90中的一些参数(如rs485 地址) 却不生效?
答:很多参数需要重新启动才会生效,注意参数后面的生效方式,图如22。
图22. 参数生效方式