用PLC高速计数器和电压/频率传感器测量模拟电压信号的方法

用plc高速计数器和电压/频率传感器测量模拟电压信号的方法 摘要:介绍了用plc高速计数器和电压/频率传感器累计测量脉冲的原理,阐明了应用中需注意的事项,通过程序实例详实介绍了测量模拟电压信号的方法。 关键词:可编程控制器;高速计数器;电压/频率传感器 method of measuring simulated voltage signal by plc high speed counter and voltage/frequency sensor wang yu-tian, cheng yao-zhong abstract:the principle of measuring pulse accumulatively by plc high speed counter and voltage/frequency sensor is introduced.the matters needing attention in practice is expounded,the method of measuring voltage signal is introduced through program examples. keywords:plc; high speed counter; voltage/frequency sensor 中图分类号:tm933 文献标识码:b 文章编号:0219-2713(2003)04-0137-03   1 引言 由plc控制的某些系统,经常要测量各类模拟电压信号,以往通常用电压传感器进行采样,由plc的模拟量扩展模块进行运算处理。电压传感器输出是模拟量,在电磁骚扰较强的环境中,容易出现较大的测量误差;同时,由于占用模拟量扩展模块宝贵的输入点(模拟量扩展模块价格接近中、小型plc的价格,且输入点极少),使系统的性价比降低。当用电压/频率传感器进行采样,进而用plc高速计数器计数,能较好地解决上述问题,v/f传感器输出是脉冲信号,该信号在电磁骚扰下变化极小;另外,该信号是数字量,可直接接入plc高速计数器的输入点。下面以西门子simatcs7-00、cpu224和v/f传感器为例介绍测量模拟电压信号的方法。 2 高速计数器和v/f传感测量模拟电压信号的原理 cpu224有hsc0-hsc5共6个高速计数器,每个高速计数器都有多种工作模式以完成不同的功能,在使用一个高速计数器时,根据系统的控制需要,首先要给计数器选定一种工作模式,可用高速计数器定义指令hdef来进行设置。只有定义了计数器和计数器模式,才能对计数器的动态参数进行编程。编程时,每个高速计数器只能使用一条hdef指令。每个高速计数器都有一个控制字节,包括允许或禁止计数,计数方向的控制,要装入的计数器当前值和要装入的预置值。 v/f传感器把测量的模拟电压信号按着固定的比率转换成矩形脉冲信号,本例采用的电压/频率传感器,它的比率为20hz/v。 下面以一台35kv级中、小容量变电所用直流电源为例,说明如何利用cpu224的高速计数器hsc1和v/f传感器(输入:dc0~500v电压,输出:0~10khz脉冲)来测量控制母线电压。首先,v/f传感器将输入电压(控制母线电压)转换为矩形脉冲信号,再将此信号送入高速计数器hsc1的输入端,并累计脉冲数。通过设置定时中断0的间隔时间,来控制高速计数器累计脉冲的时间,当预置的间隔时间到后,根据累计脉冲数,计算出被测控制母线电压值,测量原 理 图 如 图1所 示 。 图1 高速计数器测量v/f传感器脉冲电路 3 测量模拟电压信号的方法 3.1 硬件要求 需要使用设备 cpu224 1台 电压/频率传感器 1台 技术参数 供电电压 dc 24v 输 入 dc 0~500v 输出 方波,gnd~24v 测量范围 0~500v→0~10khz 比 率 20hz/v 3.2 程序结构 主程序在第一个扫描周期调用子程序sbr0 sbr0高速计数器和定时中断的初始化 int0对高速计数器求值的定时中断程序 3.3 程序和注释 主程序在第一个扫描周期调用初始化子程序sbr0,仅在第一个扫描周期标志位sm0.1=1。由子程序sbr0实现初始化。 首先,把高速计数器hsc1的控制字节mb47置为16进制数fc,其含义是:正方向计数,可更新预置值(pv),可更新当前值(cv),激活hsc1。 然后,用定义指令hdef把高速计数器hsc1设置成工作模式0,即没有复位或启动输入,也没有外部的方向选择。当前值smd48复位为0,预置值smd52置为ffff(16进制)。定时中断0间隔时间smb34置为100ms,中断程序0分配给定时中断0,并允许中断,用指令hsc1启动高速计数器。 每100ms调用一次中断程序0,读出高速计数器的数值后,将其置零。通过hsc1计数值及变换关系来求被测的控制母线电压值。本例中,采用参数为输入0~500v、输出0~10khz的v/f传动器,100ms时间累计脉冲最多为1khz,在中断程序中用乘法指令mul将该计数值乘5,则100ms内最多脉冲累计数为1k×5=5khz,从而实现显示值与10倍的真实电压值相对应,假设经乘法指令运算后计数值为2200hz,则实际电压值相应为220v。然后将经程序处理的计数值置入输出字节qbo,以便通过led来显示被测的模拟电压值。高速计数器和v/f传感器测量模拟电压信号的主程序、子程序和中断程序如下所述。 主程序 ld sm0.1 //用初次扫描存储器位(sm0.1)调用执行初始化操作的子程序。由于采用这样的子程序调用,后续扫描不会再调用这个子程序,从而减少了扫描时间,也提供了一个结构优化的程序。 call sbr_0 //调用初始化子程序sbr_0 子程序 sbr0 sm0.0 //启动子程序0 ld sm0.0 //sm0.0总是1 movb 16#fc,smb47 //设置高速计数器hsc1控制字节:上升沿复位,上升沿启动,1x计数速率,正向计数,可改变方向,可更新pv(预置值),可cv(当前值),激活hsc1。 hdef 1,0 //定义高速计数器,选用hsc1工作于模式0 movo 0,sm048 //hsc1当前值清0 movd 16#ffff,smd52 //将预置值装入smd52 movb 100,smb34 //设置定时中断0间隔时间为100ms atch 0,10 //中断连接指令,中断程序为int_0,事件号为10 en 1 //允许所有中断 hsc 1 //编程计数器shc1,使设置生效
中断程序0 int 0 //启动中断程序 ld sm0.0 //sm0?0总是1 movd hsc1,ac0 //把hsc1的计数值存入累加器ac0 movd ac0,vd100 //把计数值存入vd100 movd 0,sm048 //hsc1当前值清0 movb 16#c0,smb47 //重新设置hsc1控制字节:上升沿复位,上升沿启动,4x计数速率;反向计数,不改变计数方向,不更新pv,可更新cv,激活hsc1。 hsc 1 //启动高速计数器hsc1 mul 5,vd100 //把hsc1的计数值乘以5 movb vb103,qb0 //在输出端q0?0至q0.7显示10倍被测控母电压值 4 结语 以上方法已用于gzs2智能型高频开关直流电源等控制系统(变电站、发电厂用直流电源),实践证明,该方法进行模拟电压信号测量,具有精度高(最高可达5/1000v),抗骚扰性强,运行可靠等优点,具有较大的实用价值和广泛的应用前景。 参考文献 [1] 台方.可编程控制器应用教程[m].中国水利水电出版社,2001. 作者简介 王玉田(1957-),男,硕士,主要从事发电机励磁技术研究。 程耀忠(1948-),男,高级工程师,主要从事晶闸管等离子电源、高频谐振变压器电源和智能直流电源的研究。
收稿日期:2003-01-08

ReactOS开源系统最新进展公布,支持64位Win应用
一站式解决方案促进无人机产业高质量可持续发展
FPC片状处理是怎样的
MySQL字符集不一致导致索引失效的案例分析
如何使用MAX96705/MAX96706 GMSL设置SerDes反向控制通道
用PLC高速计数器和电压/频率传感器测量模拟电压信号的方法
智能扫地机器人哪个牌子好?懂行人给你建议,不是科沃斯也不是石头
MAX9217/MAX9218 视频链路中的音频数据传输
中国庞大的数字医疗市场 寻找收入模式才是关键
怎样使用MysqlIO将Arduino连接到具有USB的MySQl数据库
阳光照明拟建LED照明新项目
用于汽车LED的升压-降压LED驱动器拓扑结构以低输入和输出纹波工作
医用隔离电源系统在医院中的应用
配电箱的用途、应用及功能
小米6发布会前瞻:小米6倒计时3小时发布,最新最全米粉期待功能汇总
蓝牙耳机什么牌子好,口碑最好的蓝牙耳机
模拟矩阵在智能物流规划中的应用
GPT-4是这样搞电机的
智慧能源系统解决方案提供商正泰电器发布2022第一季度报告
RAM SSO功能重磅发布 —— 满足客户使用企业本地账号登录阿里云