F152_RMRD

从从站读取数据

此指令从MEWNET-F从站的指定智能单元读取数据。

参数

输入

s1_Control (DWORD)

存储主/从配置的控制数据

s2_Start (WORD, INT, UINT)

要读取的内存区的起始地址

n_Number (INT)

要读取的字数(最多32字)

d_Start (WORD, INT, UINT)

在其中存储读取的起始16位区域(请参见F153)

变量s2_Startd_Start必须为相同的数据类型。

标注

  • 无法同时执行多个F152_RMRD指令和F153_RMWT指令。应设置程序,以便在F152_RMRD/F153_RMWT指令执行启用标志sys_bIsMewnetFNotActiveTRUE时执行这些指令。

    sys_bIsMewnetFNotActive

    0:禁止执行(正在执行的F152_RMRD/F153_RMWT指令)

    1:已启用执行

  • F152_RMRD指令仅启用要接受的请求。在扫描结束时执行实际处理。F152_RMRD/F153_RMWT指令完成标志(R9036)可用于确认指令是否已执行。

    sys_bIsMewnetFError

    0:正常完成

    1:已完成,存在错误(错误代码存储在sys_wMewnetFErrorCode中)

    sys_wMewnetFErrorCode

    如果传输已完成,存在错误(sys_bIsMewnetFError(变为TRUE并保持为TRUE) ),将存储错误内容(错误代码)。

    错误代码(HEX)

    描述

    16#5B

    超时错误(未在指定位置找到智能单元)

    16#68

    无内存错误(指定地址不存在内存)

    16#71

    发送应答超时错误

    16#72

    发送缓冲区满超时错误

    16#73

    响应超时错误

  • 如果错误代码为16#71–16#73,则已发生通信超时错误。使用系统寄存器32的设置,可以在10.0ms至81.9s(以10ms为单位)的范围内更改超时时间。默认值设置为2秒。

  • s1存储网络中主从单元配置的控制数据。从s2_Start指定智能单元中的共享存储器地址编号开始读取n字。结果存储在d中。

    s1_Control的指定:

    1.  (1) s1较高字
    2.  (2) 位
    3.  (3) s1较高字
    4.  (4) 库号(如果存在要指定的库,则为16#0016#FF,否则为16#00
    5.  (5) 插槽编号(16#0016#1F,FP3:16#0016#17
    6.  (6) s1较低字
    7.  (7) s1较低字
    8.  (8) 主站编号(16#0116#04)
    9.  (9) 从站编号(16#0116#20)
提示

带有库的智能单元: FP3扩展数据存储单元

序号:AFP32091 AFP32092

错误标志

sys_bIsOperationErrorHold
  • 如果控制数据s1_Control超出指定范围的限制

  • 如果未找到MEWNET-F主站单元

  • 如果读取的数据超出s2_Start的区域

sys_bIsOperationErrorNonHold(对于一次扫描变为TRUE)
  • 如果控制数据s1_Control超出指定范围的限制

  • 如果未找到MEWNET-F主站单元

  • 如果读取的数据超出s2_Start的区域

示例

POU头

所有用于编程此函数的输入和输出变量已在POU头中声明。所有编程语言使用相同的POU头。

  1.  (1) 主站1
  2.  (2) 控制数据 = 16#A0105
  3.  (3) 智能单元(共享内存)
	VAR
		Start: BOOL:=FALSE;
		ControlData: DWORD:=16#000A0105;
			(*No bank, 
slot no. 10, 
Master station 1, 
Slave station 5*)
		StartingAddress: WORD:=0;
		NoWordsWrite: INT:=5;
		WordsWritten: ARRAY [0..4] OF WORD:=[5(0)];
	END_VAR

LD本体

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 8 ;
        NETWORK_BODY
B(B_F,F152_RMRD,,11,1,20,8,,?DEN?D@'s1'?Ds2?Dn?Dd?AENO);
B(B_CONTACT,,Start,5,1,7,3,);
B(B_VARIN,,ControlData,9,3,11,5,);
B(B_VARIN,,StartingAddSlave,9,4,11,6,);
B(B_VARIN,,NumberWordsRead,9,5,11,7,);
B(B_VARIN,,WordsRead[0],9,6,11,8,);
L(1,0,1,8);
L(1,2,5,2);
L(7,2,11,2);
L(11,2,11,3);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST本体

If (Start) Then
    F152_RMRD(s1_Control := ControlData,
              s2_Start := StartingAddress,
              n_Number := NoWordsWrite,
              d_Start := WordsRead[0]);
End_if;

最后更新日期: 2024-03-07此页面上的反馈松下热线