『7x24小时有问必答』
必须使用相同的块访问来创建源和目标块。即,这两个块必须使用“优化的块访问”(Optimized block access)   或必须同时为这两个块禁用优化的访问。
如果源数据块和目标数据块的访问类型均为优化访问,则不支持 STRUCT 数据类型。
如果写入一个由指令创建的 DB 时,“WRIT_DBL”指令则不能更改用户程序的校验和。但是,在写入已装载的 DB 时,此 DB   中的第一个条目会更改用户程序的校验和。
说明
“WRIT_DBL”不适用于频繁地(或循环)将变量写入装载存储器中。这是因为,存储卡的工艺限制了对此卡的写访问次数。

功能描述
“WRIT_DBL”为异步执行指令,可以跨多个调用执行。通过调用“WRIT_DBL”,且 REQ = 1,可启动该作业。
输出参数 RET_VAL 和 BUSY 用于指示作业状态。
参数
下表列出了“WRIT_DBL”指令的参数:

参数
声明
数据类型
存储区
说明
REQ
Input
BOOL
I、Q、M、D、L 或常量
REQ = 1:写入请求
SRCBLK
Input
VARIANT
D
指向工作存储器中的 DB   的指针,需要从该工作存储器读取数据
RET_VAL
Return
INT
I、Q、M、D、L
错误信息
BUSY
Output
BOOL
I、Q、M、D、L
BUSY = 1:写入过程尚未完成。
DSTBLK
Output
VARIANT
D
指向装载存储器中待写入数据块的指针

错误代码*
(W16#...)
说明
0000
无错误
0081
目标区域大于源区域。
源区域将全部写入目标区域;目标区域的其余字节将保持不变。
7000
首次调用时,REQ = 0:未激活数据传送;BUSY   的值为“0”。
7001
首次调用时,REQ = 1:已触发数据传送;BUSY   的值为“1”。
7002
中间调用(与 REQ 
无关):已激活数据传送;BUSY   的值为“1”。
8051
注:该错误代码仅适用于 S7-1200 CPU。
类型错误数据块。
8251
注:该错误代码仅适用于 S7-1200 CPU。
源数据块中的数据类型错误
8551
注:该错误代码仅适用于 S7-1200 CPU。
目标数据块中的数据类型错误
8081
源区域大于目标区域。
将写满整个目标区域,并忽略源区域中剩余的字节。
8082
注:该错误代码仅适用于 S7-1500 CPU。
目标 DB 类型与源 DB 类型不同(优化/非优化访问)。
目标和源数据块均创建为优化访问。但由于目标数据块和源数据块所用的结构,将到导致编译后数据排列不一致。(注:请改用   UDT。)
8093
注:该错误代码仅适用于 S7-1500 CPU。
没有为参数 SRCBLK   指定数据块,或指定的数据块不在工作存储器中。
80B1
注:该错误代码仅适用于 S7-1500 CPU。
在参数 DSTBLK   中,仅允许使用装载存储器中的数据块。
82B1
注:该错误代码仅适用于 S7-1200 CPU。
SRCBLK 参数未指定数据块。
85B1
注:该错误代码仅适用于 S7-1200 CPU。
没有为 DSTBLK   参数指定数据块,或在此指定的数据块不在装载存储器中。
80B4
存储卡受到写保护。
不允许读取具有 F 属性的 DB。
80BB
可用装载存储器空间不足。
82C0
注:该错误代码仅适用于 S7-1200 CPU。
当前其它指令或通信指令正在处理源 DB。
85C0
注:该错误代码仅适用于 S7-1200 CPU。
当前其它指令或通信指令正在处理目标 DB。
80C3
已达到“WRIT_DBL”指令可同时激活的最大数目。
常见错误代码
另请参见“GET_ERR_ID:获取本地错误   ID”
*   在程序编辑器中,错误代码将显示为整数或十六进制值。有关切换显示格式的信息,请参见“另请参见”。

示例
在以下示例中,将工作存储器中的数据块内容传送到装载存储器的一个数据块中。要验证传输是否成功,则可数据工作存储器中另一个数据块中的内容。
要存储互连数据,需在全局数据块中创建 5 个变量。
要存待传送的数据,需创建 3 个全局数据块并分别带有一个“myData”变量(数据类型 Array of INT):
一个数据块用于发送工作存储器中的数据 (SLI_srcDB_WRIT_DBL)。
一个数据块用于接收装载存储器中的数据 (SLI_dstDB_WRIT_DBL)。
一个数据块用于接收工作存储器中的数据 (SLI_finDB_WRIT_DBL)。

程序段 1:
互连“WRIT_DBL”指令的参数,如下所示:
程序段 2:
互连“READ_DBL”指令的参数,如下所示:
程序段 3:
复位“execute”变量,如下所示:
指令“WRIT_DBL”:
如果常开触点(“execute”)的信号状态为“TRUE”,则执行“WRIT_DBL”指令。该数据块通过输入参数   SRCBLK(“SLI_srcDB_WRIT_DBL.myData”)存储在装载存储器中。该数据块将通过输出参数   DSTBLK(“SLI_dstDB_WRIT_DBL.myData”)存储在装载存储器中。
指令“WRIT_DBL”将调用工作存储器中待传送的数据 (SRCBLK),并将这些数据写入装载存储器的指定位置 (DSTBLK)。输出参数   RET_VAL(“returnValue”)用于指示处理无错误。
指令“READ_DBL”:
如果 WRIT_DBL 的执行无错误且常开触点(“execute”)的信号状态为“TRUE”,则执行“READ_DBL”指令。通过输入参数   SRCBLK(“SLI_dstDB_WRIT_DBL.myData”),将该数据块存储在装载存储器中。该数据块用于接收数据,并通过输出参数   DSTBLK(“SLI_finDB_WRIT_DBL.myData”)进行存储。
指令“READ_DBL”将调用装载存储器中待传送的数据 (SRCBLK),并读取工作存储器中指定位置处的的数据 (DSTBLK)。输出参数   RET_VAL(“readRetVal”)用于指示处理无错误。
该数据块用于接收工作存储器 (SLI_finDB_WRIT_DBL) 中的数据,并显示已发送的数据。
READ_DBL 成功执行后,复位变量“execute”(参见程序段 3)。停止 READ_DBL 和 WRIT_DBL 的执行。

总结:读取数据才能把信息保存出来,是一些临时的东西,以后再再看看有啥更好的应用。

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

本帖子中包含更多资源

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

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

本版积分规则

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

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

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


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