容请点击上方 ABB机器人实战技巧 关注
也可点击公众号下方 往期经典 浏览更多内容
转载请先后台留言,大家一起支持原创,推动机器人使用和发展
本公众号对各类ABB机器人应用,仿真,毕业设计提供技术支持,详细后台留言
本公众号诚挚希望与各机器人培训机构,机器人使用单元合作,提供技术支持,详细后台留言
1. ABB机器人原生没有提供Modbus Master功能,需要客户根据modbusTCP定义,自行编写数据收发,见ABB机器人Modbus/TCP 通讯
2. modbusTCP通常读写的寄存器为word(2个字节)。机器人作为master,如果希望读写从站的寄存器,并传入浮点数,可以参考以下代码,即讲float打包成4个字节,并且按照定义发动modbus从站的连续2个寄存器上。从站根据定义解析即可。
注意:modbusTCP默认采用大端编码,即高字节在前,低字节在后。例如使用以下代码:writeFloat2Reg 0,-0.98; 向modbus从站寄存器0和1发送浮点数 -0.98时,寄存器0的显示需要修改为如下图的Float AB CD
如向西门子modbus从站寄存器0和1发送浮点数 -0.98时,寄存器0的显示需要修改为如下图的Float BA DC,使用使用以下代码:writeFloat2Reg 0,-0.98\bSiemens;
注:西门子modbus的每个寄存器内的字节需要颠倒
MODULEmodbusTCP_Master !!!!!!! support holding register !!!!!!! support holding coil !!!!!!! support 0x03 0x06 0x10 0x01 0x05 0x0F function
VARsocketdev sock_mod;VARrawbytes recv_raw; VAR rawbytes send_raw;
!!!!!! data need to be modifiedPERSbool bBigEndian:=TRUE;PERSstring slave_ip:="127.0.0.1"; PERS num slave_ID:=1; PERSnum regAdd:=1;VARnum outValue{50};
PROCmain()writeFloat2Reg0,-0.98; ! 向寄存器地址0开始两个寄存器写入浮点数-0.98reg1:=readFloatFromReg(0); ! 从寄存器地址0开始两个寄存器读取数据,并转化为浮点数stop;
writeFloat2Reg0,-0.98\bSiemens; ! 向西门子寄存器地址0开始两个寄存器写入浮点数-0.98 ! 西门子modbus,高word在前,每个word内高低字节颠倒reg1:=readFloatFromReg(0\bSiemens);stop;ENDPROC
PROCcheckSocket()ifSocketGetStatus(sock_mod)<>SOCKET_CONNECTED THENSocketClosesock_mod;SocketCreatesock_mod;SocketConnectsock_mod,slave_ip,502\Time:=10;endifENDPROC
funcnum readFloatFromReg(num regAdd\switch bSiemens) ! read float(4bytes) from 2 register, add1 with high word, add2 with low word ! funNo: 0x03: read multi holding register ! device send: 0000 0000 0006 01 03 0001 0001 ! ttl data len slaveID funNo add data_num ! robot feedback: 0000 0000 0005 01 03 02 0001 ! ttl data len slaveID funNo rest_data_len dataVARnum b{100};VARnum dataByteLen;VARnum w_high;VARnum w_low;VARnum outValue;checkSocket;b{1}:=0x00;b{2}:=0x00;b{3}:=0x00;b{4}:=0x00;b{5}:=0x00;b{6}:=0x06;b{7}:=slave_ID;b{8}:=0x03;
ClearRawBytessend_raw;FORi FROM 1 TO 8 DOPackRawBytesb{i},send_raw,i\IntX:=1;ENDFORPackRawBytesregAdd,send_raw\Network,9\IntX:=2;PackRawBytes2,send_raw\Network,11\IntX:=2;sendAndReceive;
UnPackRawBytesrecv_raw\Network,9,dataByteLen\IntX:=UsINT;
IFpresent(bSiemens) THENUnPackRawBytesrecv_raw\Network,10,w_high\IntX:=UINT;UnPackRawBytesrecv_raw\Network,12,w_low\IntX:=UINT;PackRawBytesw_high,recv_raw,10\IntX:=2;PackRawBytesw_low,recv_raw,12\IntX:=2;ENDIFUnPackRawBytesrecv_raw\Network,10,outValue\Float4;RETURNoutValue;ENDFUNC
PROCwriteFloat2Reg(num regAdd,num data\Switch bSiemens) ! write float(4bytes) to 2 register, ! funNo: 0x10: write multi holding register ! device send: 0000 0000 000B FF 10 0002 0002 04 0021 002A ! ttl_data_len id funNo add data_num rest_data_len data1 data2 ! robot feedback: 0000 0000 0006 FF 10 0002 00 02 ! ttl_data_len id funNo add data_num
VARnum b{100};VARnum v1;VARnum v2;VARrawbytes out_raw;VARnum dataByteLen;checkSocket;b{1}:=0x00;b{2}:=0x00;b{3}:=0x00;b{4}:=0x00; ! b{5}:=0x00; ! b{6}:=0x06;b{7}:=slave_ID;b{8}:=0x10;
ClearRawBytessend_raw;FORi FROM 1 TO 8 DOPackRawBytesb{i},send_raw,i\IntX:=1;ENDFORPackRawBytesregAdd,send_raw\Network,9\IntX:=2;PackRawBytes2,send_raw\Network,11\IntX:=2;PackRawBytes2*2,send_raw\Network,13\IntX:=1;
PackRawBytes data,out_raw\Network,1\Float4;IFPresent(bSiemens) THENUnpackRawBytesout_raw\Network,1,v1\IntX:=2;UnpackRawBytesout_raw\Network,3,v2\IntX:=2;
PackRawBytesv1,out_raw,1\IntX:=2;PackRawBytesv2,out_raw,3\IntX:=2;ENDIFCopyRawBytesout_raw,1,send_raw,14;PackRawBytes7+2*2,send_raw\Network,5\IntX:=2;sendAndReceive; ENDPROCENDMODULE
********************************
如何获取更多经典文章?
关注公众号 ABB机器人实战技巧,点击页面底部的往期经典和配置,查看更多经典内容
点击阅读原文,学习robotstudio仿真,获取完整教学视频
更多内容
★ 如何搜索历史文章
★基于pcsdk传输文件到HOME及加载
通过总线发送实数及负整数
★使用定时中断向PLC发送机器人位置
★信号的准确提早触发
★变位机校准
★ABB机器人零位校准的那些秘密
★创建UDP通讯
★旋转姿态的左乘与右乘
★通过socket控制机器人启停
上位机仪表盘实时显示机器人速度
★机器人画哆啦A梦
上位机实时控制机器人运动之EGM
Python控制ABB机器人运动
通过Excel批量修改EIO文件
带连杆的机器人正运动学计算
制作四连杆机构
机器人PROFINET同时做CONTROLLER和DEVICE
★语音控制ABB机器人
★手机访问web控制机器人
★自定义伺服焊枪
★制作输送链抓取搬运码垛工作站
★随机物料产生与抓取
★四轴机器人定义TCP
★自定义外部轴-变位机
★示教四点完成码垛
★multimove之双机器人与变位机
Robotware6.08碰撞预测启用与关闭
SMB板针脚解释
四六关节耦合限制
求两点间距离
新I/O DSQC1030配置
ABB机器人配置伺服焊枪
转角路径故障不提示设置
外部PLC选择机器人程序
一键回HOME程序
机器人各轴上下限位修改
Wobjdata数据解释
输送链跟踪与视觉的联系
急停与自动停止接线
更多大牛讲解视频,可以微信搜索ABB机器人实战技巧,或者扫描以下二维码关注
|