技术论坛

S7-SCL把一个结构体中的32位一次读出来?

作者 主题
新手

经验值: 13
发帖数: 2
精华帖: 0
主题:【求助】S7-SCL把一个结构体中的32位一次读出来?


只看楼主 楼主 2020-10-16 22:56:33

大家好,小弟刚上手SCL,项目有个SCL生成的STL程序,其中有一段是把一个结构体中的32位信号读取到一个双字中:

结构体中Err的定义如下:

如果是SCL的话应该怎么写啊?请各位高手不吝指教



 
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1646668&b_id=4&s_id=0&num=6

至圣

经验值: 43587
发帖数: 15780
精华帖: 61
回复:S7-SCL把一个结构体中的32位一次读出来?


只看楼主 1楼 2020-10-17 09:52:55

block_mov指令。


活到老,学到老!为了生活学习吧!
以下网友喜欢您的帖子:

  
奇侠

经验值: 8097
发帖数: 1308
精华帖: 6
回复:S7-SCL把一个结构体中的32位一次读出来?


只看楼主 2楼 2020-10-18 08:43:52

只是提供一下思路吧,,for循环总共循环32次,,数组中的高位置位 接收双字的0位,然后向左移位接收的双字。。。。


养活一团春意思,撑起两根穷骨头
以下网友喜欢您的帖子:

  
新手

经验值: 13
发帖数: 2
精华帖: 0
回复:S7-SCL把一个结构体中的32位一次读出来?


只看楼主 楼主 3楼 2020-10-18 09:27:09
以下是引用zhangli0在2020-10-17 09:52:55的发言 >1楼

block_mov指令。

block_mov可以,但是需要构建ANY指针,比较麻烦;我是写了个函数,但是感觉没有原来程序那么简洁


 
以下网友喜欢您的帖子:

  
侠圣

经验值: 2790
发帖数: 390
精华帖: 5
回复:S7-SCL把一个结构体中的32位一次读出来?


只看楼主 4楼 2020-10-22 13:26:59

FUNCTION_BLOCK FB21

TITLE = 'BOOL_TO_DWORD'

//

// Block Comment...

//

VERSION: '1.0'

AUTHOR: baikai

NAME: B_DW

FAMILY: baikai

know_how_protect

(* 将BOOL量转换为双字*)


VAR_INPUT

X0    :    BOOL;

X1    :    BOOL;

X2    :    BOOL;

X3    :    BOOL;

X4    :    BOOL;

X5    :    BOOL;

X6    :    BOOL;

X7    :    BOOL;

X8    :    BOOL;

X9    :    BOOL;

X10    :    BOOL;

X11    :    BOOL;

X12    :    BOOL;

X13    :    BOOL;

X14    :    BOOL;

X15    :    BOOL;

X16    :    BOOL;

X17    :    BOOL;

X18    :    BOOL;

X19    :    BOOL;

X20    :    BOOL;

X21    :    BOOL;

X22    :    BOOL;

X23    :    BOOL;

X24    :    BOOL;

X25    :    BOOL;

X26    :    BOOL;

X27    :    BOOL;

X28    :    BOOL;

X29    :    BOOL;

X30    :    BOOL;

X31    :    BOOL;

END_VAR

VAR_OUTPUT

    // Output Parameters

OUT:DWORD;    

END_VAR


VAR

NO:INT;

S1: ARRAY[0..31] OF BOOL; 

S2 AT S1: DWORD;

END_VAR


    FOR NO:= 0 TO 31 BY 1 DO

       S1[0]    :=    X0;

S1[1]    :=    X1;

S1[2]    :=    X2;

S1[3]    :=    X3;

S1[4]    :=    X4;

S1[5]    :=    X5;

S1[6]    :=    X6;

S1[7]    :=    X7;

S1[8]    :=    X8;

S1[9]    :=    X9;

S1[10]    :=    X10;

S1[11]    :=    X11;

S1[12]    :=    X12;

S1[13]    :=    X13;

S1[14]    :=    X14;

S1[15]    :=    X15;

S1[16]    :=    X16;

S1[17]    :=    X17;

S1[18]    :=    X18;

S1[19]    :=    X19;

S1[20]    :=    X20;

S1[21]    :=    X21;

S1[22]    :=    X22;

S1[23]    :=    X23;

S1[24]    :=    X24;

S1[25]    :=    X25;

S1[26]    :=    X26;

S1[27]    :=    X27;

S1[28]    :=    X28;

S1[29]    :=    X29;

S1[30]    :=    X30;

S1[31]    :=    X31;     

 END_FOR;

OUT:= S2;

END_FUNCTION_BLOCK



大家同行,you ok ? me !
以下网友喜欢您的帖子:

  
侠客

经验值: 814
发帖数: 328
精华帖: 0
回复:S7-SCL把一个结构体中的32位一次读出来?


只看楼主 5楼 2020-10-30 11:34:05

AT 指令了解下



熊猫的两个愿望: 1、要好好的睡一觉; 2、拍一张彩色照片。
以下网友喜欢您的帖子:

  
侠圣

经验值: 3777
发帖数: 211
精华帖: 4
回复:S7-SCL把一个结构体中的32位一次读出来?


只看楼主 6楼 2021-07-02 13:11:29

对于非优化的块,用PEEK_WORD可以


人是未来佛
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
S7-SCL把一个结构体中的32位一次读出来?
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。