理论教育 如何使用通用指令录入数据?

如何使用通用指令录入数据?

时间:2023-07-01 理论教育 版权反馈
【摘要】:用通用指令录入数据,是以数位为单位,逐个数位键入。注意,这里的指令为微分执行是必要的。它主要用位左移指令实现。图5-39所示为用编码指令向目标地址录入数据的3种PLC的梯形图程序。接着,执行DMOV指令,再把K32M100的内容传送给目标字,从而实现了录入数位1的目的。节3也是根据比较结果调用自编函数“ENCO”,以及把“wNum”录入“ww”中。否则,跳转到标号“for_start”,即节2,继续执行节2指令。

如何使用通用指令录入数据?

通用指令录入数据,是以数位为单位,逐个数位键入。每个数位(对十进制数为0~9数字符号,对十六进制数为0~F数字符号)用一个输入点。每键入一个数位时,原有各数位左(向高位)移,新键入数位处最右(最低)位。图5-38所示,为4种PLC有关程序。

978-7-111-39745-8-Chapter06-51.jpg

图5-38 键入数位1

图5-38a为欧姆龙PLC程序。它用数位移位(SLD)及数位传送(MOVD)指令实现。该图只画出“键0”及“键1”的情况。当任一键按下(对应的输入点ON),先是使DM0、DM1(可看成双字长的数,即8位数)中的各数位的数从低到高移位。然后,把此键值,如“键0”、“键1”、“键2”……的相应数字符号送入最低位。注意,这里的指令为微分执行是必要的。

图5-38b为西门子PLC程序。它用双字左移位(SHL-DW)及字节逻辑或(WOR-B)指令实现。该图只画出“键0”及“键1”的情况。当任一键按下(对应的输入点ON),先是使VD0的内容左移4位,即VB0的低4位移给VB0高4位,VB0高4位丢失;VB1的高4位移给VB0低4位,VB1的低4位移给VB1高4位;VB2的高4位移给VB1低4位,VB2的低4位移给VB2高4位;VB3的高4位移给VB2低4位,VB3的低4位移给VB3高4位,VB3低4位被0填充。然后,把此键值,如“键0”、“键1”、“键2”……的相应数字符号与VB3做逻辑或运算,把与“键0”等对应的值将送入最低位(VB3的低4位)。注意,这里在指令执行前,先对执行条件进行微分处理是必要的,因为西门子PLC没有微分执行一说,故只好先做此处理。

图5-38c为三菱PLC程序。它主要用位左移(SFTL)指令实现。其格式为

978-7-111-39745-8-Chapter06-52.jpg

执行这个指令,把这里D指定的M0开始的,n1指定的位数16(K16)位,左移由n2指定4(K4)位。同时,在移位后,还把S指定X000开始的4(n2指定的K4)个位送入D的被移出位。图5-38c只画出“键0”及“键1”的情况。从图知,如“键1”ON,则把常数1传送给K4M0,然后微分执行“SFTL”指令。它把M100~M131的各位依次左移4位,同时,把K4M0的低4位传送给M100~M131的低4位。接着,执行DMOV指令,再把K32M100的内容传送给D0、D1,从而实现了录入数位1的目的。

图5-38d所示为和利时LM机有关程序。图中节1、2及4、5为生成脉冲信号。节3、6为数字输入。当“0键”、“1键”按下,即与其对应的输入点“J0”、“J1”ON时,对应的“pJ0”、“pJ1”将ON一个扫描周期。进而,使被输入字“ww”的内容,先向左移4个位(左移一个数位),接着再与“0”或“1”进行“或”逻辑运算,运算的结果又存入“ww”字。显然,每次做这样操作,都将使“ww”原有数的高数位移出,同时把“0”或“1”补充在它的低数位。起到了输入录入这个“0”、“1”数据的作用。

只是这里程序仅列出按“键(J)0”、“键(J)1”。其实,还可加上“键(J)2”、“键(J)3”等按键。这样,也就可以录入像“2”、“3”等这样的数据了。本程序可以实现双字、8数位的录入。自然,要录入8位完整的数据,必须键入8次。当然,如高位为0,在录入前,把有关数据区清零,可以减少键入次数。

图5-39所示为用编码指令向目标地址(目标低字到目标高字间)录入数据的3种PLC的梯形图程序。

978-7-111-39745-8-Chapter06-53.jpg

图5-39 键入数位2

图5-39a为欧姆龙PLC程序。如图所示,当任一键(这里只定义10个键0~9,对应输入点输入通道的第0~9位,也可增多)按下,则200通道大于0,这将使目标低字到目标高字移位,然后,把此键的值(见DMPX指令的含义),如“0”、“1”、“2”……送入最低位。注意,这里的指令也应为微分执行。

图5-39b为西门子PLC程序。如图所示,当任一键(这里只定义10个键0~9,对应输入点输入通道的第0~9位,也可增多)按下,则VW10大于0,这将使目标双字VD0移位(4个bit),然后,把此键的值(见DMPX指令的含义),如“0”、“1”、“2”……送入VB3,即VD0的最低位。注意,这里的指令也应为微分执行,为此,用了指令P。

图5-39c为三菱PLC程序。如图所示,当任一键(这里只定义10个键0~9,对应输入点输入通道的第0~9位,也可增多)按下,则D1等于1,这将此键对应的值传送给K4M0,然后微分执行“SFTL”指令。它把M100~M131的各位依次左移4位,同时,把K4M0的低4位传送给M100~M131的低4位。接着,执行DMOV指令,再把K32M100的内容传送给目标字,从而实现了录入数位1的目的。注意,这里的指令也应为微分执行。

和利时PLC没有ENCO之类指令。但可自编此函数。用它也可编写上述3家PLC类似程序。图5-40所示的即为此程序。

978-7-111-39745-8-Chapter06-54.jpg

图5-40 键入数位2

图5-40a中节1为做两个的比较。这里“shuru”(输入字)为16个PLC输入点组成的字。16点分别对应“0”、“1”…“A”…“F”等16个输入键。节2做比较结果处理。节3也是根据比较结果调用自编函数“ENCO”,以及把“wNum”录入“ww”中。(www.daowen.com)

图5-40b为“ENCO”自编的函数程序。其节1为把“shuru”赋值给工作字“Ru”。节2先是判断工作字“Ru”的最低位是否为1,是则置位“pJ”。接着循环右移位一个位。再就是使“count”加1,最后为判断“count”是否等于16。节3为执行上述判断结果。如“pJ”置位,或“count”等于16,则转入节4。否则,跳转到标号“for_start”,即节2,继续执行节2指令。节4使“count”减1,然后赋值给“ENCO”,即函数输出。

可知,这个自编函数的功能是根据“shuru”字的返回那个位为“ON”。如第3位ON,则“wNum”为2。

还可以知道,这两个程序结合,当任一键(这里只定义10个键0~9,对应输入点输入通道的第0~9位,也可以增多)按下,则“p0”ON,“pNE”ON(由于“shuru”与“Ru0”不等)。进而,在节2把“shru”赋值给“Ru0”。再通过节3调用函数“ENCO”及移位或运算,即可以把“ENCO”的返回值,录入“ww”中。

提示:这里用了“Ru0”字是必要的。保证了只有当键入数据有变化时,才能录入。

图5-41所示为3种PLC目标地址可选的录入程序。它的目标地址不是固定的,可按需要选择。所以,它的算法是先选定(录入)目标地址,确定后,再向选定的目标地址录入数据。

978-7-111-39745-8-Chapter06-55.jpg

图5-41 目标地址可选的录入

图5-41a为欧姆龙PLC程序。该图用的指令与图5-39相同。只是先选定目标地址(对指针赋值),后录入数据(向指针指向地址送数)。具体过程是,先使“选目标地址”ON,“指针”清0。开始录入数据,但这时录入的为目标地址,即向指针赋值。地址送入后,再使“录入数据”ON(这时,“选目标地址”应已OFF),则201.00 OFF,201.01ON。这时,录入数据将送“暂存器”。最后,使“确认录入”ON(其他的均已OFF),则使201.01 OFF,停止录入,同时把“暂存器”的内容送指针指向的地址。

图5-41b为西门子PLC程序。该图用的指令与图5-39相同。只是先选定目标地址(对VD2044赋值),后录入数据(向指针指向地址送数)。具体过程是,先使“选目标地址”ON,M5.0 ON,使VB0的绝对地址送给“基准地址”。开始录入数据,但这时录入的为目标地址,即向VD2044赋值。地址送入后,再使“录入数据”ON,M5.1 ON(这时,“选目标地址”应已OFF)。这时,录入数据将送MW0。最后,使“确认录入”ON(其他的均已OFF),则使M5.1OFF,停止录入。同时,计算VD2044指向的目标地址,再把MW0的值送VD2044指向的地址。

图5-41c为三菱PLC程序。该图用的指令与图5-39相同。也只是先选定目标地址(对指针赋值),后录入数据(向指针指向地址送数)。具体过程是,先使“选目标地址”ON,M50 ON,

978-7-111-39745-8-Chapter06-56.jpg

图5-42 目标地址可选的录入

变址器V0及K4M100清0。开始录入数据,但这时录入的为目标地址,即向变址器V0赋值。地址送入后,再使“录入数据”ON,M51 ON(这时,“选目标地址”应已OFF),这时,录入数据将存于K4M100。最后,使“确认录入”ON(其他的均已OFF),则使M51 OFF,停止录入。同时,把K4M100的内容送D0V0的,即变址器指向的D区地址。

图5-42所示为和利时LM机可以选择的录入程序。其录入目标用一个数组,要先声明如下:

mmm AT%MW100:ARRAY[100. .4045]OF WORD;

此数组可涵盖了全部可使用的PLC的M(中间存储区)存储区,也即可以向M区的任何字录入数据。

图5-42中节1为选择目标地址操作启动。节2、3为“aW”启动后,生成脉冲信号“paW”。节4为初始化,对地址字、数据字复位为0。节5启动输入数据。并通过节1,使地址输入停止。节6、7、8为地址录入。它们的功能与图5-40的节1、2、3相同。当“aW”ON时,可把地址录入给“ww”。节9、10、11为数据录入。它们的功能也与图5-2的节1、2、3相同。当“aD”ON时,可把数据录入给“ww1”。节12是当“qRen”ON时,把录入“ww1”的数据赋值给下标为“ww”的数组单元,即“mmm[ww]”。而当“qREn”ON时,在节5,使“aD”OFF。

提示:这里输入的地址是十六进制数。数组单元为字。%MW地址只能偶数,应按偶数递增。所以,如果向%MW100赋值,地址应是16#0064。如果向%MW102赋值,地址应是16#0065。如果向%MW302赋值,地址应是16#00C9。如果向%MW8144赋值,地址应是16#1030等。

用普通指令录入,大多数PLC都可实现。但它使用的输入点多,PLC的硬件资源将得不到有效利用。当然,也可作切换选择,加上硬件接线时,在公用点上做适当隔离,也可做到输入点多用,以充分利用PLC的硬件资源。

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

我要反馈