『7x24小时有问必答』
在以下示例中,将通过 RDREC 读取数字量输入模块的参数数据记录,并通过 WRREC 重新写入该数据记录。为此,需要更改输入延时。
创建以下变量,在全局数据块中进行数据存储:
2 个通用变量和 7 个用于 WRREC 的变量:
WRREC 中数据记录的结构:
8 个用于 RDREC 变量:
RDREC 中数据记录的结构:
在函数块“SLI_FB_WRREC_Para”中,创建以下局部变量。
互连参数:“SLI_itemisePara_WRREC_Para”函数
要传递位序列 (0..7) 的值,可创建函数“SLI_itemisePara_WRREC_Para”。
在该函数中创建以下局部变量。
程序段 1:根据程序段 1 的示例,为所有位 (0..7) 创建互连。
互连参数:“SLI_FB_WRREC_Para”函数块
在函数块“SLI_FB_WRREC_Para”中创建以下互连。
程序段 1:互连“RDREC”指令的参数,如下所示:
程序段 2:互连结构“readBYTE”和结构“readParaRecord”的所有变量,如下所示:该程序段的第 1 部分:
该程序段第 2 部分:根据以下示例,互连变量“ClearanceDiagnosis”和“InputDelay_ProcessEvent”。
程序段 3:之后,互连 RDREC 的错误状态变量。
程序段 4:之后,互连变量结束 RDREC 的运行。
程序段 5:互连结构“writeParaRecord”和结构“writeBYTE”的所有变量,如下所示:该程序段的第 1   部分:
该程序段第 2 部分:
程序段 6:互连“WRREC”指令的参数,如下所示:
程序段 7:之后,互连 WRREC 的错误状态变量。
程序段 8:之后,互连变量结束 WRREC 的运行,并再次调用 RDREC。
程序段 1 的结果:
创建一个输入模块并读取该输入模块属性中的硬件 ID。并通过输入参数 ID(“id”)存储该硬件标识符。通过输入参数   INDEX(“dataRecNbr”),系统将调用该模块中编号为“3”的数据记录。该数据记录对应同名的通道。
输入参数 REQ(“startRead”)返回信号状态“TRUE”时,启动指令“RDREC”。“RDREC”指令将通过输入参数   ID(“id”),调用该输入模块。
多次调用后,“RDREC”指令将读取该数据记录,并通过参数 RECORD(“readBYTE”)进行保存。通过输出参数   LEN(“readLength”),可存储所读取数据记录的长度。根据输入参数 MLEN(“maxReadLength”)的值,待读取的数据记录信息将限制为 4   个字节。
在执行过程中,输出参数 BUSY(“readBusy”)将置位为“TRUE”;VALID(“readCheck”)将置位为“FALSE”。
执行完成时,将输出成功读取的结果,如下所示:
输出参数 VALID(“readCheck”)将置位为“TRUE”,变量“readCheckedValid”将永久性地置位为“TRUE”。
并在输出参数 STATUS(“readStatus”)处,显示该块的状态。该过程成功执行且无任何错误。
程序段 2 的结果:
通过指令 MOVE 和函数   SLI_itemisePara_WRREC_Para,结构“readBYTE”将变量值传送到同名结构“readParaRecord”的变量中。为了便于理解,可使用具体的描述性名称表示“readParaRecord”结构的变量。有关该结构的详细信息,请参见该模块的设备手册。例如,“InputDelay_ProcessEvent”表示   3.2 ms 的输入延时。对于该通道的状态(“ClearanceDiagnosis”),不会输出任何中断(位 0 到 8 为“FALSE”)。
程序段 3 的结果:
“readError”的信号状态为“TRUE”时,将变量“readStatus”的值保存在变量“reMemErrStat”中。
程序段 4 的结果:
如果指令“RDREC”已执行,则“readStatus”的值为“160070_0200”。此后,重置程序将变量“startRead”置位为“FALSE”
程序段 5 的结果:
通过指令 MOVE 和函数   SLI_itemisePara_WRREC_Para,结构“writeParaRecord”将变量值传送到同名结构“writeBYTE”的变量中。为了便于理解,可使用具体的描述性名称表示“writeParaRecord”结构的变量。
程序段 6 的结果:
输入参数 REQ(“startWrite”)返回信号状态“TRUE”时,启动指令“WRREC”。
该数据记录的新数据将存储在 RECORD(“writeBYTE”)参数中。通过多次调用,指令“WRREC”将新数据写入数据记录“3”中。根据输入参数   LEN(“maxWriteLength”)的值,待写入的数据记录信息将限制为 4 个字节。
在执行过程中,输出参数 BUSY(“writeBusy”)将置位为“TRUE”;DONE(“writeCheck”)将置位为“FALSE”。
执行完成时,将输出成功写入的结果,如下所示:
输出参数 DONE(“writeCheck”)将置位为“TRUE”。
当“writeCheck”的信号状态为“TRUE”时,变量“writeCheckedValid”将永久性地置位为“TRUE”。
并在输出参数 STATUS(“writeStatus”)处,显示该块的状态。该过程成功执行且无任何错误。
程序段 7 的结果:
“writeError”的信号状态为“TRUE”时,将变量“writeStatus”的值保存在变量“wrMemErrStat”中。
程序段 8 的结果:
如果指令“WRREC”已执行,则“writeStatus”的值为“160070_0200”。此后,重置程序将变量“startWrite”置位为“FALSE”。并随后执行指令“RDREC”后,将变量“startRead”置位为“TRUE”。结构“readParaRecord”中,将显示该数据记录新写入的值。由于位   0中“InputDelay_ProcessEvent”的信号状态为“TRUE”,因而通道 3 当地的输入延时将为 0.1 ms。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码