回复:[求助]S7 1511C输出PTO或PWM/频率的问题

westcowboy

  • 帖子

    833
  • 精华

    46
  • 被关注

    143

论坛等级:奇侠

注册时间:2012-09-29

普通 普通 如何晋级?

发布于 2017-10-09 16:33:17

1楼

展开查看
以下是引用conanson在2017-10-08 23:07:49的发言 >楼主

大家好,我有几个关于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中进行以下操作:

  1. 配置1511的1号PWM通道,配置成频率输出获得输出控制IO字节是78-89,频率输出口是Q4.0

  2. 1500中的优化模块是little-endlian,所以我理解上图中字节0对应PLC中字节89,图中字节11对应PLC中字节78(不知道这样理解是否正确)

  3. 假定要输出100kHz的频率,十进制1000000转化为0x000186A0,再交换顺序得到0xA0860100

  4. 使用MOVE指令,把16#A0860100直接赋给MD86(MB86、87、88、89)

  5. 使用MOVE指令,把16#0直接赋给MD86(MB82、83、84、85),令SLOT置零

  6. 使用MOVE指令,把16#0直接赋给MB81,令MODE_SLOT置零

  7. 使用MOVE指令,2#000010010直接赋给MB80,令SET_DQA=1,TM_CTRL_DQ=0,SW_ENABLE=1

  8. 使用MOVE指令,2#1直接赋给MB79,令RES_SERROR=0

  9. 使用MOVE指令,2#0直接赋给MB78

经过上述操作后,Q4.0上什么反应都没有,我又按big-endian的方式做了一遍,还是没有效果。


请问大家,上述步骤是哪里出错了呢?另外,我觉得我的上面一个个MOVE的办法是笨办法,有没有一种操作控制接口的通用操作方式呢?


吐个槽,手册上只给了这个图,也没个例程,实际操作起来也无法对照到底是哪里出问题。


最后,非常感谢大家的时间,期待得到大家的围观解答,谢谢!

楼主手册理解错了吧,直接通过控制接口操作的话,应该直接操作Q地址区。而不是DB数据区。


Let's build the automation future!
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1500系列

共有10590条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。