案例丨S7-1200PLC的HSC应用实例
高速计数器寻址
CPU 将每个高速计数器的测量值,存储在输入过程映像区内,数据类型为 32 位双整型有符号数,用户可以在设备组态中修改这些存储地址,在程序中可直接访问这些地址,但由于过程映像区受扫描周期影响,读取到的值并不是当前时刻的实际值,在一个扫描周期内,此数值不会发生变化,但计数器中的实际值有可能会在一个周期内变化,用户无法读到此变化。
用户可通过读取外设地址的方式,读取到当前时刻的实际值。以 ID1000 为例,其外设地址为 “ID1000:P”。表1. 所示为高速计数器寻址列表。
表1.高速计数器寻址
中断功能
S7-1200 在高速计数器中提供了中断功能,用以处理某些特定条件下触发的程序共有 3 种中断事件:1、当前值等于预置值2、使用外部信号复位3、带有外部方向控制时,计数方向发生改变
频率测量
S7-1200 除了提供计数功能外,还提供了频率测量功能,有 3 种不同的频率测量周期:1.0 秒,0.1 秒和0.01 秒。
频率测量周期是这样定义的:计算并返回新的频率值的时间间隔。返回的频率值为上一个测量周期中所有测量值的平均,无论测量周期如何选择,测量出的频率值总是以 Hz (每秒脉冲数)为单位。
高速计数器指令块
高速计数器指令块,需要使用指定背景数据块用于存储参数,如图1所示。
图1.高速计数器指令块
表2.高速计数器参数说明
表3.STATUS 错误代码
应用举例
假设在旋转机械上有单相增量编码器作为反馈,接入到S7-1200 CPU,要求在计数25个脉冲时,计数器复位,置位 M0.5,并设定新预置值为50个脉冲,当计满50个脉冲后复位M0.5,并将预置值再设为25,周而复始执行此功能。
针对此应用,选择CPU 1214C,高速计数器为:HSC1。模式为:单相计数,内部方向控制,无外部复位。据此,脉冲输入应接入I0.0,使用HSC1的预置值中断(CV=RV)功能实现此应用。
组态步骤 先在设备与组态中,选择CPU,单击属性,激活高速计数器,并设置相关参数。此步骤必须事先执行,1200的高速计数器功能必须要先在硬件组态中激活,才能进行下面的步骤。添加硬件中断块,关联相对应的高速计数器所产生的预置值中断,在中断块中添加高速计数器指令块,编写修改预置值程序,设置复位计数器等参数。将程序下载,执行功能。
硬件组态
选中CPU如图1.所示。
图1.选中CPU
图2.选择属性打开组态界面
激活高速计数功能如图3
图3.激活高速计数功能
计数类型,计数方向组态如图4所示
图4.计数类型,计数方向
1、此处计数类型分为3种,Axis of motion(运动轴),Frequency(频率测量),Counting(计数)。这里选择Counting2、模式分为4种:Single phase(单相), Two phase(双相), AB Quadrature 1X(A/B相正交1倍速), ABQuadrature 4X(A/B相正交4倍速)。这里择Single phase3、输入源,这里使用的为CPU集成输入点。4、计数方向选择,这里选用User program (internal direction control)(内部方向控制)5、初始计数方向。这里选择Count up(向上计数)
初始值及复位组态如图5.
图5.初始值及复位组态
预置值中断组态如图6
图6. 预置值中断组态
图7.添加硬件中断
组态添加的硬件中断,如图8
图8.组态添加的硬件中断
图9.地址分配与硬件识别号
至此硬件组态部分已经完成,下面进行程序编写
程序编写
将高速计数指令块添加到硬件中断中
图10. 打开硬件中断块
图11.添加高速计数器
图12. 定义高速计数器背景数据块
程序视图如图13
图13. 程序视图
1、这里就是图9中系统指定的高速计数器硬件识别号,这里填1
注意:应根据CPU属性里的硬件标识符设置该值, 如硬件标识符为257,应将指令输入的 HSC 值从 1 改为 257,如下图 14 所示:
图 14. 硬件标识符
2、1为使能更新初值;3、1为使能更新预置值;4、新的初始值;5、新的预置值。
至此程序编制部分完成,将完成的组态与程序下载到CPU后即可执行,当前的计数值可在ID1000中读出 ,关于高速计数器指令块,若不需要修改硬件组态中的参数,可不需要调用,系统仍然可以计数。
↓↓↓领取100GB自动化资料包
西门子 200PLC编码器测速方案
可以用到高速计数器hsc,中断及运算,最大脉冲数为32767。
速度测量方法
用定时中断测前一次计数和本次计数差值,乘以定时中断的频率,再除以编码器分辨率就是转速了。
假如本次中断计数器计数值是vd4,上次计数值是vd0
,定时中断时间为0.1秒,编码器分辨率是2000p/r
那么转速就是(vd4-vd0)/10/2000
计数方法参见如下资料
1、建一个初始化程序,用SM0.1控制;
2、在初始化程序中,初始化高速计数器
2.1 设置控制寄存器(HSC0为SMB37),不同的计数器对应不同的DI点,HSC0为I0.0,HSC3为I0.1,HSC4为I0.2,HSC5为I0.3(222不支持HSC1和HSC2)
2.2 执行HDEF指令,你可以用模式0
2.3 置计数器初始值(HSC0为SMD38),如果从零启动就置零
2.4 置预置值(HSC0为SMD42),计数器计到这个值可以产生一个中断,一般利用这个中断调用相应的中断程序把当前值(SMD38)复零,否则计数器到头就不再计数了,当然你也可以置一个大点的值,在其他程序中清除当前值(SMD38),确保永远到不了头就可以了。
2.5 指定中断程序(ATCH),中断事件是12,程序号看你程序了
2.6 打开中断(ENI),这条指令没有的话,2.5是不起作用的
2.7 启动高速计数器(HSC),按前面的初始化,你就要启动HSC0,即N为0
3、程序中读取高速计数器的值,对于HSC0,HC0单元中的内容就是当前的计数值,这个单元只读不能写,你可以通过修改SMD38的内容改变当前的计数值。
相关问答
plc中hsc是什么指令?
HSC指令HSC:高速计数器指令。使能输入有效时,根据高速计数器特殊存储器位的状态,并按照HDEF指令指定的工作模式,设置高速计数器并控制其工作。梯形图指令盒...
怎样在西门子plc程序中显示伺服移动的正负距离?
利用PTO/PWM这个向导生成的指令利用hsc0这个高速脉冲计数器就能看到正负正向加反向减利用PTO/PWM这个向导生成的指令利用hsc0这个高速脉冲计数器就能...
如何在S7-200PLC中判断AB相正交计数器的方向?
根据编码器接到哪个HSC通道,监控相应的HC计数值,(HC0对应HSC0,用I的是I0.0(A),I0.1(B))(HC1对应HSC1,用I的是I0.6(A),I0.7(B)),(HC2...
如何利用光电传感器和调节议自动控制电机转速?_汽配人问答
[回答]据实际工况的需要,该控制系统必须有较强的实时性、可靠性,并且可以采集开关量和模拟量信号。经比较,本文中选择SIMENS公司的S7-200型PLC作为主要控...
麻烦哪位盆友你能回答!成都专利申请的费用是多少钱?
[回答]专利申请需获取的资料1.申请人身份证明公司名义申请人:营业执照、的组织机构代码证复印件砖墙公章;设计人身份证复印件个人名义申请人:身份证复印件...
麻烦诸位盆友!有谁清楚!贵阳专业半挂车培训学校,半挂车培...
[回答]学成后无论走到哪里,都可以达到操作任何半挂车技术水平。为您的梦想和人生价值实现扬帆远行。【顺盈半挂车培训学校】湖南长沙,湖北武汉,广州番禺,...
扫一扫微信交流