首页 理论教育 模拟量采集与数据跟踪程序设计

模拟量采集与数据跟踪程序设计

时间:2023-06-16 理论教育 版权反馈
【摘要】:所以,当模拟量输入通道有了新的数时,也就完成了模拟量采集。图6-6b程序用于S7-200EM231模块单极性使用时的转换程序。本例指定的为IW0,即模拟量输入模块的输入字。程序所用变量声明如下:图6-8e中节1为启动模拟量输入功能块。模拟量输入数据。变化采集即跟踪被采集量,视其变化情况,若被采集量的变化超过某个范围,则存储,并同时记下这时的时间。

模拟量采集与数据跟踪程序设计

PLC的模拟量是从模拟量输入单元读取的。而且,这个读取时间的延迟是很短的。一般为PLC扫描周期级的。个别的,如C200H-TS001之类温度检测单元要做一些平均数计算,为秒级。所以,当模拟量输入通道有了新的数时,也就完成了模拟量采集。图6-6所示的梯形图即为这样一个转换程序。

图6-6a程序为用于CPM1A_MA002单元的数据读入。因该模入单元读入的是8位二进制数,故一个模入通道读入的是两路数据,需把它分开。该图程序所做的就是这个工作。它把模入通道1读入的数据分成“第1路二进制码输入值”及“第2路二进制码输入值”。

图6-6b程序用于S7-200EM231模块单极性使用时的转换程序。它的原始数据格式如图6-7所示。

所以,使用应左移3位。图6-6b程序中VW0就是左移3位后的数据。

图6-6c程序用于FX0N3A模块的数据读入程序。这里的用了RD3A指令采集数据。指令中K0为模块号0,K1、K2为模拟量模块上的输入通道1、2。执行本程序的功能是,不停地读取模拟量模块输入通道1、2的数据,并分别存储在D0及D1中。

提示:模拟量采集程序所用的指令及地址不仅与PLC的类型有关,还与模块的类型及其安装情况有关。设计这个程序,应参照所使用模块的有关说明书进行。此外,在模块使用前,还要做些硬件设定,或执行一些初始化程序,以确定使用的模拟量种类、变化范围、初值及比例系数等。

978-7-111-56641-0-Chapter07-6.jpg

图6-6 转换程序

978-7-111-56641-0-Chapter07-7.jpg

图6-7 原始数据格式

有时还须把采集的数据与采集时间关联,以看出被采集量随时间的变化,即所谓变化趋势监视。这个工作一般由上位机去做。但PLC本身也可完成。而且,由PLC做此工作,实时性更强。

为此,可在PLC的某存储区设定一组(如10个字)工作区。用这个工作区动态记录被采集数据与采集时间有关的信息。

对此,有两种方法:一是定时采集;二是变化采集。

(1)定时采集

可按一定的时间间隔采集数据,并按固定的地址记录。因采定时采集的时间是固定的,可不必记下采集时间。如每隔5min采集一次,那最近5min采集的数据存储在数据区的最低的地址,次近的存储高一个字的地址,其余依次存储。所以,它的算法应是:每有新数据采集,先把低字的内容依次移向高字(原最高地址字的内容丢失),然后,再把采集的新值存入最低字。图6-8所示即为这种梯形图程序。

图6-8a为欧姆龙PLC程序。这里先是把“当前时分”(存储当前几时几分的字)被常数5(也可为别的常数)整除,其商数存于HR0,余数存于HR1字中。然后再对HR1与常数5作比较。

如这时的时间为5min,或10min……,则比较相等(P-EQON),进而先把DM100~DM1009中的数按字移位,DM108的数移存给DM109,DM107的数移存给DM108等。然后把最新的“第1路BCD码输入值”存入DM100。

978-7-111-56641-0-Chapter07-8.jpg

图6-8 定时采集

可知,这里DM100~DM109中存的数分别为记录当时及前5min、前10min……的被采集的数据。并每5min作一次更新。

图6-8b为三菱PLC程序。它先用RD3A指令读取数据,并存放在K4M0,即M0到M15中。然后计算时间,把PLC的实时分值除以常数5,余数存于D21中,再判断D21是否为0,若为0,即,如这时的时间为5min,或10min……,则比较相等标志M101ON,将微分执行指令WSFL。此为字左(高)移指令。其格式如图6-9所示。

978-7-111-56641-0-Chapter07-9.jpg(www.xing528.com)

图6-9 WSFL指令

它的含义是,把D指定的D10开始到D25,即n1指定的K16(16个字),每次做n2指定K4(4个字)左移,同时,把S指定的D0~D3的内容分别填入D10~D13中。结合本例,是从D10~D9作字左移,并把D0的内容填入D10中。

图6-8d为西门子PLC程序。它先读PLC的实时时钟,按READ_RTC指令使用的操作数VB10知,当前分值存于VB14字节中,而且是BCD码。所以,要转换为字,并译成十六进制码,然后进行带余数的除5运算。本例余数存于VW40中,商存于VW42中。接着,判断VW40等于0否?等,则微分调用带参数的子程序SBR_0。为什么这里用带参数的子程序?因为S7-200没有字移位指令,只好用它代用。

子程序SBR_0的功能是实现从VW110~VW138间的字移位。同时,把局部变量“#输入字”字右移3位后,存入VW110中。子程序的局部变量表见图6-8c,仅一个输入字,由调用它的程序指定。本例指定的为IW0,即模拟量输入模块的输入字。

执行上述主、子程序,近期采集的数据,将依次存于VW110~VW128中。其功能与图6-8a、b是完全一样的。

图6-8e为和利时LM梯形图程序。程序所用变量声明如下:

978-7-111-56641-0-Chapter07-10.jpg

图6-8e中节1为启动模拟量输入功能块。节8为启动读取PLC实时时钟功能块。节2为当前时间的“分”对5取模计算,然后与0比较。其含义是每当0min、5min、15min、…min时,采集信号“pCJ”ON。节3、4只要“pCJ”从OFF到ON,则生成脉冲信号“ppCJ”。节5、6为存数的数组“cunshu”低下标单元字的值依次赋值给高下标单元字。节7把模拟量新值赋值给数组下标最低的单元,并使下标变量“indx”返回原始值。

可知,执行了上述程序,只要PLC的实时时钟处于0min、5min、15min、…min时,脉冲信号“ppCJ”将使存数的数组“cunshu”低下标单元字的值依次赋值给高下标单元字。同时,把模拟量当时的值赋值给数组下标最低的单元。这样,数组中10个单元存储的将依次是当时的、前5min的、再前5min的…模拟量输入数据。

(2)变化采集

即跟踪被采集量,视其变化情况,若被采集量的变化超过某个范围,则存储,并同时记下这时的时间。再有新的变化再采集。图6-10所示即为这种梯形图程序。

图6-10a为欧姆龙PLC程序。从图知,这里总是进行“输入值”与“输入暂存值”相减,得其差的绝对值。然后把这个“差”与常数5比较。如比较大过常数5(也可为别的常数),则P-GTON,进而LR10.00ON。接着,先把第2路BCD码输入值传“输入暂存器”,再把DM200~DM209中的数按字移位,DM208的数移给DM209,DM207的数已给DM208等。然后把最新的“第2路BCD码输入值”存入DM200。再接着,又把DM200~DM209中的数按字移位,DM208的数移给DM209、DM207的数已给DM208,等等。然后把“当前时分”存入DM200。

978-7-111-56641-0-Chapter07-11.jpg

图6-10 变化采集

提示:欧姆龙PLCBCD减运算,如被减数小于减数时,进位位置1(借位),“这个差”为10000+“被减数”与“减数”之差。要将其变为“差的绝对值”,必须再清进位位,使“0”被“这个差”减。即:10000-{(10000+“被减数”)-“减数”},即“减数”-“被减数”。但欧姆龙PLCBCD加、减运算时,其进位位也参加运算,这里在未清进位位,故这里使“1”被“这个差”减。

可知,这里DM200~DM209中存的为5组数。分别为记录当时的“时分”及与这个“时分”相应的被采集数据。只要变化绝对值超过常数5,数据就会更新一次。

图6-10b为三菱PLC程序。从图知,这里把采集的模拟量输入存于K4M0中。接着,总是进行K4M0与“暂存值”相减,其差的存于“偏差值”中。然后把这个“偏差值”与常数5及-5比较。如比较大过常数5(也可为别的常数)或小于-5,则先把K4M0传给“暂存值”,再把D10~DM19中的数按字移位,D18的数移给D19,D17的数已给D18,等等。同时,把最新的K4M0值传送给DM10。再接着,又把D10~DM19中的数按字移位,D18的数移给D19,D17的数移给D18等。同时把“当前时分”存入D10。

可知,这里D10~D19中存的为5组数。分别为记录当时的“时分”及与这个“时分”相应的被采集数据。只要变化绝对值超过常数5,数据就会更新一次。

图6-10c西门子PLC程序。它先读PLC的实时时钟,按READ_RTC指令使用的操作数VB10知,当前时分值存于VW13字中。接着,处理“输入值”,并存于VW200中。再就是进行VW200与“暂存值”相减,其差存于“偏差值”中。进而判断“偏差值”是否大于5或小于-5(也可为别的常数),是则微分调用带参数的子程序SBR_0。为什么这里用带参数的子程序?也是因为S7-200没有字移位指令,只好用它代用。

子程序SBR_0的功能是实现从VW110~VW128间的字移位。同时,把局部变量“#输入字”字传送给VW110。子程序的局部变量表见图6-10d,仅1个输入字,由调用它的程序指定。本例指定的为W200及VW13,即处理后的“输入字”及当前时分。

可知,这里VW110到VW128中存的为5组数。分别为记录当时的“时分”及与这个“时分”相应的被采集数据。只要变化绝对值超过常数5,数据就会更新一次。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈