恭喜,你发布的帖子
发布于 2017-10-09 16:33:17
1楼
大家好,我有几个关于1500系列发脉冲的问题想请教大家。
已有硬件资源:
S7 1511C-1PN
TM PTO4
CM PtP RS422/485 HF
压力传感器3MP量程a
北京欣斯达特公司的MS-3H110M电机控制器,接收200kHz脉冲控制电机转动
欧姆龙的E2E接近传感器×2,用作丝杆前后位移的硬开关
我的最终目的是要得到一个特定的压力值。想法是用PTO4产生一个PTO脉冲→控制电机控制器→驱动电机→涡轮丝杆受电机控制进行传动→推动油缸并产生压力→压力传感器输出当前压力值→485模块采集压力值→PID调整得到压力
但我没有用V90套件,所以没有反馈信息也没有外部编码器,而PTO又只能当上述外部硬件条件满足的情况下,在运动控制中组态使用。
请问大家,我能否在仅有1511或PTO4模块的情况下,不使用运动控制组态,直接通过用户程序输出特定频率的PTO信号?这个用户程序能不能集成到PID中去呢?
发现PTO方法暂时走不通,我就想到可以用1511上自带的PWM和频率输出功能,输出一个占空比50%的波形,也能控制电机驱动器。
根据1511手册(下图),TM_CTRL_DQ设为0,就能由用户控制输出PWM或频率:
我想先试试直接输出频率,于是在portal V14 sp1中进行以下操作:
配置1511的1号PWM通道,配置成频率输出获得输出控制IO字节是78-89,频率输出口是Q4.0
1500中的优化模块是little-endlian,所以我理解上图中字节0对应PLC中字节89,图中字节11对应PLC中字节78(不知道这样理解是否正确)
假定要输出100kHz的频率,十进制1000000转化为0x000186A0,再交换顺序得到0xA0860100
使用MOVE指令,把16#A0860100直接赋给MD86(MB86、87、88、89)
使用MOVE指令,把16#0直接赋给MD86(MB82、83、84、85),令SLOT置零
使用MOVE指令,把16#0直接赋给MB81,令MODE_SLOT置零
使用MOVE指令,2#000010010直接赋给MB80,令SET_DQA=1,TM_CTRL_DQ=0,SW_ENABLE=1
使用MOVE指令,2#1直接赋给MB79,令RES_SERROR=0
使用MOVE指令,2#0直接赋给MB78
经过上述操作后,Q4.0上什么反应都没有,我又按big-endian的方式做了一遍,还是没有效果。
请问大家,上述步骤是哪里出错了呢?另外,我觉得我的上面一个个MOVE的办法是笨办法,有没有一种操作控制接口的通用操作方式呢?
吐个槽,手册上只给了这个图,也没个例程,实际操作起来也无法对照到底是哪里出问题。
最后,非常感谢大家的时间,期待得到大家的围观解答,谢谢!
楼主手册理解错了吧,直接通过控制接口操作的话,应该直接操作Q地址区。而不是DB数据区。
请填写推广理由:
分享
只看
楼主