(1)单路脉冲输入的内部方向控制加/减计数。即只有一个脉冲输入端,通过高速计数器的控制字节的第3位来控制作加计数或者减计数。该位=1,加计数;该位=0,减计数。如图6-6所示内部方向控制的单路加/减计数 。
(2)单路脉冲输入的外部方向控制加/减计数。即有一个脉冲输入端,有一个方向控制端,方向输入信号等于1时,加计数;方向输入信号等于0时,减计数。如图6-7所示外部方向控制的单路加/减计数。
(3)两路脉冲输入的单相加/减计数。即有两个脉冲输入端,一个是加计数脉冲,一个是减计数脉冲,计数值为两个输入端脉冲的代数和。如图6-8所示。
(4)两路脉冲输入的双相正交计数。即有两个脉冲输入端,输入的两路脉冲A 相、B相,相位互差90°(正交),A 相超前B相90°时,加计数;A 相滞后B相90°时,减计数。在这种计数方式下,可选择1x 模式(单倍频,一个时钟脉冲计一个数)和4x 模式(四倍频,一个时钟脉冲计四个数)。如图6-9,图6-10所示。
2. 高速计数器的工作模式
高速计数器有12种工作模式,模式0~模式2采用单路脉冲输入的内部方向控制加/减计数;模式3~模式5采用单路脉冲输入的外部方向控制加/减计数;模式6~模式8采用两路脉冲输入的加/减计数;模式9~模式11采用两路脉冲输入的双相正交计数。
S7-200 CPU224有 HSC0-HSC5六个高速计数器,每个高速计数器有多种不同的工作模式。HSC0和HSC4有模式0、1、3、4、6、7、8、9、10;HSC1和HSC2有模式0~模式11;HSC3和HSC5有模式只有模式0。每种高速计数器所拥有的工作模式和其占有的输入端子的数目有关。如表6-6所示。
表6-6 高速计数器的工作模式和输入端子的关系及说明 HSC编号及其对应 的输入 端子 HSC模式 功能及说明 HSC0 HSC4 HSC1 HSC2 HSC3 I0.0 I0.3 I0.6 I1.2 I0.1 占用的输入端子及其功能 I0.1 I0.4 I0.7 I1.3 × I0.2 I0.5 I1.0 I1.4 × × × I1.1 I1.5 × HSC5 0 1 2 3 4 5 6 7 8 9 10 11 单路脉冲输入的内部方向控制加/减计数。控制字SM37.3=0,减计数; SM37.3=1,加计数。 单路脉冲输入的外部方向控制加/减计数。方向控制端=0,减计数; 方向控制端=1,加计数。 两路脉冲输入的单相加/减计数。 加计数有脉冲输入,加计数; 减计数端脉冲输入,减计数。 两路脉冲输入的双相正交计数。 A相脉冲超前B相脉冲,加计数; A相脉冲滞后B相脉冲,减计数。 I0.4 脉冲输入端 × × × × 方向控制端 × × 复位端 复位端 × 复位端 复位端 × 复位端 复位端 × 复位端 复位端 × × × 起动 × × 起动 × × 起动 × × 起动 脉冲输入端 加计数脉冲输入端 减计数脉冲输入端 A相脉冲输入端 B相脉冲输入端 说明:表中×表示没有
选用某个高速计数器在某种工作方式下工作后,高速计数器所使用的输入不是任意选择的,必须按系统指定的输入点输入信号。如HSC1在模式11下工作,就必须用I0.6为A相脉冲输入端,I0.7为 B相脉冲输入端,I1.0为复位端,I1.1为起动端。
6.3.3 高速计数器的控制字和状态字
1. 控制字节
定义了计数器和工作模式之后,还要设置高速计数器的有关控制字节。每个高速计数器均有一个控制字节,它决定了计数器的计数允许或禁用,方向控制(仅限模式0、1和2)或对所有其他模式的初始化计数方向,装入当前值和预置值。控制字节每个控制位的说明如表6-7所示。
2. 状态字节
每个高速计数器都有一个状态字节,状态位表示当前计数方向以及当前值是否大于或等于预置值。每个高速计数器状态字节的状态位如表6-8所示。状态字节的0-4位不用。监控高速计数器状态的目的是使外部事件产生中断,以完成重要的操作。
表6-7 HSC的控制字节
HSC0 SM37.0 HSC1 SM47.0 SM47.1 SM47.2 SM47.3 SM47.4 SM47.5 HSC2 SM57.0 SM57.1 SM57.2 SM57.3 SM57.4 SM57.5 HSC3 HSC4 SM147.0 HSC5 说明 复位有效电平控制: 0=复位信号高电平有效;1=低电平有效 起动有效电平控制: 0=起动信号高电平有效;1=低电平有效 正交计数器计数速率选择: 0=4×计数速率;1=1×计数速率 计数方向控制位: 0 = 减计数1 = 加计数 向HSC写入计数方向: 0 = 无更新1 = 更新计数方向 向HSC写入新预置值: 0 = 无更新1 = 更新预置值 SM37.2. SM37.3 SM37.4 SM37.5 SM147.2 SM137.3 SM147.3 SM157.3 SM137.4 SM147.4 SM157.4 SM137.5 SM147.5 SM157.5 SM37.6 SM47.6 SM57.6 SM137.6 SM147.6 SM157.6 向HSC写入新当前值: 0 = 无更新1 = 更新当前值 HSC允许: 0 = 禁用HSC 1 = 启用HSC SM37.7 SM47.7 SM57.7 SM137.7 SM147.7 SM157.7 表6-8 高速计数器状态字节的状态位
HSC0 HSC1 HSC2 HSC3 HSC4 HSC5 说明 当前计数方向状态位: 0 = 减计数;1 = 加计数 当前值等于预设值状态位: 0 = 不相等;1 = 等于 当前值大于预设值状态位: 0 = 小于或等于;1 = 大于 SM36.5 SM46.5 SM56.5 SM136.5 SM146.5 SM156.5 SM36.6 SM46.6 SM56.6 SM136.6 SM146.6 SM156.6 SM36.7 SM46.7 SM56.7 SM136.7 SM146.7 SM156.7 6.3.4 高速计数器指令及举例
1. 高速计数器指令
高速计数器指令有两条:高速计数器定义指令HDEF、高速计数器指令HSC。指令格式
如表6-9所示。
(1)高速计数器定义指令HDEF。指令指定高速计数器(HSCx)的工作模式。工作模式的选择即选择了高速计数器的输入脉冲、计数方向、复位和起动功能。每个高速计数器只能用一条“高速计数器定义”指令。
(2)高速计数器指令HSC。根据高速计数器控制位的状态和按照HDEF指令指定的工作模式,控制高速计数器。参数N指定高速计数器的号码。
表6-9 高速计数器指令格式
LAD STL 功能说明 HDEF HSC,MODE 高速计数器定义指令HDEF HSC N 高速计数器指令HSC HSC:高速计数器的编号,为常量(0~5)N:高速计数器的编号,为常量(0~5)操作数 数据类型:字节 MODE工作模式,为常量(0~11) 数据类型:字节 SM4.3(运行时间),0003(输入点冲突), SM4.3 (运行时间),0001(HSC在ENO=0的出错条件 0004(中断中的非法指令),000A(HSC重复定义) HDEF之前),0005(HSC/PLS同时操作) 数据类型:字 2. 高速计数器指令的使用