使用SCL语言实现Any指针多次读取数据块中的内容

已锁定

Monsanto

  • 帖子

    141
  • 精华

    0
  • 被关注

    13

论坛等级:侠士

注册时间:2013-09-19

普通 普通 如何晋级?

使用SCL语言实现Any指针多次读取数据块中的内容

4205

3

2013-09-20 00:12:11

Dear All:
我想通过在OB1中调用FB5的背景数据块DB5、DB6,分别把DB2中夹有UDT3数据传到DB5、DB6,即:pot[0]的内容传给DB5;pot[1]的内容传给DB6。但是只能实现传给DB5,而不能实现传给DB6.。求助......

TYPE UDT3
STRUCT
data_type :STRUCT
Val_bool : BOOL ;
Val_byte : BYTE ;//1
Val_int : INT ;//2
Val_real : REAL ;//4
END_STRUCT ;
PIC_Struct_press : STRUCT
nY : INT ;
fTXWa : REAL ;
e_i : REAL ;
END_STRUCT ;
END_STRUCT
END_TYPE

DATA_BLOCK DB2
STRUCT
pot : ARRAY[0..1] OF UDT3 ;
END_STRUCT
BEGIN
pot[0].data_type.Val_bool := true ;
pot[0].data_type.Val_byte := b#16#10 ;
pot[0].data_type.Val_int := 50 ;
pot[0].data_type.Val_real := 100.00 ;

pot[1].data_type.Val_bool := false ;
pot[1].data_type.Val_byte := b#16#20 ;
pot[1].data_type.Val_int := 50 ;
pot[1].data_type.Val_real := 200.00 ;
END_DATA_BLOCK

FUNCTION_BLOCK FB5

VAR_INPUT
Any_DB : ANY ;
Anypointer AT Any_DB : STRUCT
SyntaxID : BYTE ;
DataType : BYTE ;
DataCount : WORD ;
DB_Number : WORD ;
BytePointer : DWORD ;
END_STRUCT ;
TmpAnyPointer AT Any_DB : ARRAY[0..9] OF BYTE ;
END_VAR

VAR_OUTPUT
Q_DB : INT ;
Q_Bool : BOOL ;
Q_byte : BYTE ;
Q_int : INT ;
Q_real : REAL ;
Q_division : REAL ;
END_VAR

VAR_TEMP
offset : INT ;
END_VAR

//Anypointer.SyntaxID := 16#10 ;
//Anypointer.DataType := 16#2 ;
//Anypointer.DataCount := 16#04 ;
//Anypointer.DB_Number := 16#06 ;
Anypointer.BytePointer := dw#16#8400_0000 ;

offset := DWORD_TO_INT(SHR(IN:= AnyPointer.BytePointer, N:= 3)) ;
Q_DB := WORD_TO_INT(AnyPointer.DB_Number) ;
Q_bool := WORD_TO_BLOCK_DB(AnyPointer.DB_Number).Dx[offset, 0] ;
Q_byte := WORD_TO_BLOCK_DB(AnyPointer.DB_Number).DB[offset + 1] ;
Q_int := WORD_TO_INT(WORD_TO_BLOCK_DB(AnyPointer.DB_Number).DW[offset + 2]) ;
Q_real := DWORD_TO_REAL(WORD_TO_BLOCK_DB(AnyPointer.DB_Number).DD[offset + 4]) ;
Q_division := Q_real / DINT_TO_REAL(INT_TO_DINT(Q_int)) ;
END_FUNCTION_BLOCK

DATA_BLOCK DB5 FB5
BEGIN
END_DATA_BLOCK

DATA_BLOCK DB6 FB5
BEGIN
END_DATA_BLOCK

Tanks !
使用SCL语言实现Any指针多次读取数据块中的内容 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54620条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。