搞工控的老铁对安川MP7系列肯定不陌生,这货在产线上跑得比双十一快递还勤快。今天咱们扒开它的源码裤衩,看看那些藏在十六进制背后的骚操作
安川7源码 文档 具体见图片先瞅一段运动轨迹规划的C代码片段void SCurve_Generator(int32_t target_pos) { volatile uint16_t *reg (uint16_t*)0xFFFF8000; //特殊寄存器地址 if(*reg 0x0001) { jerk_ctrl (*reg 8) 0xFF; //从寄存器抠出加加速度参数 } //...后面跟着一坨多项式计算 }这段代码最骚的是直接操作内存地址0xFFFF8000懂行的都知道这是直接怼硬件寄存器。那个volatile关键字可不是装饰品产线上电磁干扰分分钟教你做人不加这个编译器优化能把实时数据整成玄学。文档里藏着个魔鬼细节通讯协议里0x02功能码处理函数有个隐藏分支。看这个报文解析代码case 0x02: if(rx_buf[4] 0xA5) { //暗门指令 memcpy(system_key, rx_buf5, 8); //拷贝密钥 enter_debug_mode(); } else { standard_processing(); }这骚操作估计是留给现场调试的后门但要是被不怀好意的人摸到协议格式产线设备怕是要跳社会摇。所以看到不明觉厉的0xA5字节赶紧检查防火墙配置。安川7源码 文档 具体见图片运动控制算法里有行神仙注释// 注意修改此阈值会导致机械臂表演太空步 #define DYNAMIC_FRICTION_COMP 0.67f这个0.67的摩擦补偿系数据说是工程师拿三斤二锅头灌出来的经验值。有铁头娃不信邪改成0.66结果机械手抓件时抖得比抖音小姐姐还带劲。最后给个实用技巧遇到伺服报0xE321错误别急着重启先翻源码里的error_handler函数if(error_code 0xE321) { clear_encoder_cache(); //这才是治本操作 delay(200); //等编码器冷静会儿 }文档里可没写要清缓存直接断电重启只会让问题原地TP。所以说看源码就像看女朋友脸色得注意那些没说出口的潜台词。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2412560.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!