移动字符串的规则

blkmov:存储区移动(sfc20)
使用“块移动”指令,可将存储区(源区域)的内容移动到其它存储区(目标区域)。移动操作沿地址升序方向执行。可使用 any 指针定义源区域和目标区域。
移动操作的通用规则
源区域和目标区域不得重叠。如果源和目标区域长度不同,则只能移动较小长度的区域。
如果源区域小于目标区域,则将整个源区域的数据都写入到目标区域中。而目标区域的其余字节则保持不变。
如果目标区域小于源区域,将写满整个目标区域。而忽略源区域的剩余字节。
如果复制 bool 数据类型的区域,则此区域的指定长度必须是 8 的整数倍,否则将无法执行指令。
移动字符串的规则
还可以使用“块移动”指令移动 string 数据类型的源区域和目标区域。如果只有源区域为 string 数据类型,则移动字符串中实际包含的字符。有关实际和最大长度的信息,将写入目标区域。如果源和目标区域都是 string 数据类型,则将目标区域中字符串的当前长度设置为实际移动的字符数。
如果要移动字符串实际长度和最大长度的信息,则需要以字节为单位将相关区域指定给 srcblk 和dstblk 参数。
函数值 (ret_val) int 错误信息
0000 无错误
8092 源或目标区域只能在装载存储器中。
8xyy 有关错误的更多信息,
使用复杂参数类型any:
step 7以10个字节存储参数类型any。当构造类型为any的参数时,必须确保所有10个字节都被占用,因为调用块估计参数整个内容的值。例如,如果以字节4指定db编号,也必须以字节6明确地指定存储器区。
参数类型的any格式
对于参数类型,step 7存储数据类型和参数的地址。重复因子始终是1。字节4、5和7始终是0。字节8和9指示定时器、计数器或块的编号。
重复因子识别由参数类型any传送的指示数据类型的数量。这意味着可以指定数据区,也可以和参数类型any结合使用数组和结构。step 7将数组和结构识别为数据类型的编号(借助重复因数)。例如,如果要传送10个字,必须为重复因子输入数值10,并且必须为数据类型输入数值04。
地址以格式byte.bit存储,此处字节寻址存储在字节7的位0 - 2,节字8的位0 - 7,节字9的位3 - 7。位地址存储在字节9的位0 - 2。
建立一个存储机器人信号的功能块fb5
function_block fb5
var_input
  rob_a: pointer;  机器人的地址
  proba at rob_a: struct 拆分地址
            dbnr  :word;  
            bz    :dword; 
        end_struct;
end_var
var_output
   st_rob :    st_rob;
end_var
var_temp
    adr_rob_a      : int ;
    anyrob_a       : any;
        prob_a at anyrob_a: struct
            syntaxid :byte;  // byte 0
            datatype :byte;  // byte 1       
            datacount:word;  // byte 2+3     
            dbnr     :word;  // byte 4+5     
            bz       :dword; // byte 6
        end_struct; 
    anyst_rob       :any;
        pst_rob at anyst_rob: struct
            syntaxid : byte;  // byte 0
            datatype : byte;  // byte 1       
            datacount: word;  // byte 2+3     
            dbnr     : word;  // byte 4+5     
            bz       : dword; // byte 6
        end_struct;
    anyst_rob_a_rob :any;
        pst_rob_a_rob at anyst_rob_a_rob: struct
            syntaxid : byte;  // byte 0
            datatype : byte;  // byte 1       
            datacount: word;  // byte 2+3     
            dbnr     : word;  // byte 4+5     
            bz       : dword; // byte 6
        end_struct;
    erg_sfc20   :int; 用于sfc20的变量反馈点
end_var
var
end_var
adr_rob_a := word_to_int(dword_to_word(shr(in:=proba.bz,n:=3)));  提取io点地址
prob_a.syntaxid    := b#16#10;     
prob_a.datatype    := 02;          
prob_a.datacount   := w#16#22;     
prob_a.dbnr        := proba.dbnr;  
prob_a.bz          := proba.bz;    
anyst_rob := st_rob.a1_8_folgespiegelung;db块首位
pst_rob.syntaxid    := b#16#10;    
pst_rob.datatype    := 02;         
pst_rob.datacount   := w#16#22;    
anyst_rob_a_rob  := st_rob.a_rob;
pst_rob_a_rob.syntaxid    := b#16#10; 
pst_rob_a_rob.datatype    := 02;      
pst_rob_a_rob.datacount   := w#16#22; 
erg_sfc20 := blkmov(srcblk :=  anyrob_a      
                   ,dstblk :=  anyst_rob      
                    ); 传输机器人的输出状态
erg_sfc20 := blkmov(srcblk :=  anyst_rob       
                   ,dstblk :=  anyst_rob_a_rob 
                    ); 
end_function_block


堆核心提升性能:英特尔第八代酷睿初露头角
热量表检定装置的工作原理及设计
智能电能表自动封印装置及方法
步进电机控制之控制精度讨论
Web项目的最佳平台选择
移动字符串的规则
HMD发布两款经典的诺基亚功能机
浪涌抑制器简化了MIL-STD-1275D合规性
简谈基于fpga设计9/7小波变换原理
港行Lumia920价格曝光 11月份上市
CSS渐变知识的详细讲解
DLT645和modbus rtu无线通信协议介绍对比
高通发布全球首款5G毫米波智能手机天线模块,智能手机能够顺利连接5G网络
SJ5200系列螺纹综合测量机助力全国螺纹单一中径量值比对
三星Galaxy A6s拥有2400万像素并支持自然光等7种光效
PS5和XSX的光追技术有无限的可能
迈步机器人宣布已完成数千万元A轮融资
FPGA市场现状怎样 FPGA未来发展趋势
植保无人机如何实现IP67级防水
星恒开辟出动力锂电池的“第4条技术路线”