首页 > 其他分享 >IO的数据集使用案例

IO的数据集使用案例

时间:2024-04-30 16:36:36浏览次数:25  
标签:IO WRREC AQ2ST RDREC 案例 params AI4ST 数据 recorddata

  1. 用AQ2ST和AI4ST做回环测试,主要是验证AQ2和AI4手册上的DS数据集

  2. DS参数写入

REGION params input
    IF NOT #In_SelectedChannel THEN
        #params_AQ2ST.RDREC.index := 64;
        #params_AQ2ST.WRREC.index := 64;
        #params_AI4ST.RDREC.index := 0;
        #params_AI4ST.WRREC.index := 0;
        
    ELSE
        #params_AQ2ST.RDREC.index := 65;
        #params_AQ2ST.WRREC.index := 65;
        #params_AI4ST.RDREC.index := 1;
        #params_AI4ST.WRREC.index := 1;
    END_IF;
    #params_AQ2ST.RDREC.id := #In_AQhwio;
    #params_AI4ST.RDREC.id := #In_AIhwio;
    #params_AQ2ST.WRREC.id := #In_AQhwio;
    #params_AI4ST.WRREC.id := #In_AIhwio;
    
END_REGION
  1. 通道类型切换选择
REGION type choice
    CASE #In_TypeChoic OF
        11:
            #params_AQ2ST.recorddata[2] := 2#00000001;//voltage
            #params_AQ2ST.recorddata[3] := 2#00000000;//-10.0v-10.0v
            #params_AQ2ST.recorddata[4] := 2#11000101;//voltage diagnotic
            #params_AI4ST.recorddata[2] := 2#00000001;//voltage
            #params_AI4ST.recorddata[3] := 2#00001001;//-10.0v-10.0v
        12:
            #params_AQ2ST.recorddata[2] := 2#00000001;//voltage
            #params_AQ2ST.recorddata[3] := 2#00000010;//0.0v-10.0v
            #params_AQ2ST.recorddata[4] := 2#11000101;//voltage diagnotic
            #params_AI4ST.recorddata[2] := 2#00000001;//voltage
            #params_AI4ST.recorddata[3] := 2#00001001;//-10.0v-10.0v(no 0.0to10.0v)
        13:
            #params_AQ2ST.recorddata[2] := 2#00000001;//voltage
            #params_AQ2ST.recorddata[3] := 2#00000011;//1.0v-5.0v
            #params_AQ2ST.recorddata[4] := 2#11000101;//voltage diagnotic
            #params_AI4ST.recorddata[2] := 2#00000001;//voltage
            #params_AI4ST.recorddata[3] := 2#00001010;//1.0v-5.0v
        21:
            #params_AQ2ST.recorddata[2] := 2#00000010;//current
            #params_AQ2ST.recorddata[3] := 2#00000000;//-20.0mato20.0ma
            #params_AQ2ST.recorddata[4] := 2#11010001;//current diagnotic
            #params_AI4ST.recorddata[2] := 2#00000010;//current(4-wire)
            #params_AI4ST.recorddata[3] := 2#00000100;//-20.0mato20.0ma
        22:
            #params_AQ2ST.recorddata[2] := 2#00000010;//current
            #params_AQ2ST.recorddata[3] := 2#00000001;//0.0mato20.0ma
            #params_AQ2ST.recorddata[4] := 2#11010001;//current diagnotic
            #params_AI4ST.recorddata[2] := 2#00000010;//current(4-wire)
            #params_AI4ST.recorddata[3] := 2#00000010;//0.0mato20.0ma
        23:
            #params_AQ2ST.recorddata[2] := 2#00000010;//current
            #params_AQ2ST.recorddata[3] := 2#00000010;//4.0mato20.0ma
            #params_AQ2ST.recorddata[4] := 2#11010001;//current diagnotic
            #params_AI4ST.recorddata[2] := 2#00000010;//current(4-wire)
            #params_AI4ST.recorddata[3] := 2#00000011;//4.0mato20.0ma
        ELSE
            //default voltage
            #params_AQ2ST.recorddata[2] := 2#00000001;//voltage
            #params_AQ2ST.recorddata[3] := 2#00000000;//-10.0v-10.0v
            #params_AQ2ST.recorddata[4] := 2#00000000;//no diagnostic
            #params_AI4ST.recorddata[2] := 2#00000001;//voltage
            #params_AI4ST.recorddata[3] := 2#00001001;//-10.0v-10.0v
    END_CASE;
    
END_REGION
  1. 切换使能
REGION Operate enable
    IF #In_OperateEnable AND NOT #paluse_bool THEN
        #stepInt := 10;
    END_IF;
    #paluse_bool := #In_OperateEnable;
    
    CASE #stepInt OF
        10:
            //read AQ2
            #params_AQ2ST.RDREC.req := true;
            IF #params_AQ2ST.RDREC.valid THEN
                #stepInt := 20;
            ELSIF #params_AQ2ST.RDREC.error THEN
                #Status_Error := true;
            END_IF;
        20:
            //read AI4
            #params_AQ2ST.RDREC.req := FALSE;
            #params_AI4ST.RDREC.req := true;
            IF #params_AI4ST.RDREC.valid THEN
                #stepInt := 30;
            ELSIF #params_AI4ST.RDREC.error THEN
                #Status_Error := true;
            END_IF;
        30:
            //write AQ2
            #params_AI4ST.RDREC.req := FALSE;
            #params_AQ2ST.WRREC.req := TRUE;
            IF #params_AQ2ST.WRREC.done THEN
                #stepInt := 40;
            ELSIF #params_AQ2ST.WRREC.error THEN
                #Status_Error := true;
            END_IF;
        40:
            //write ai4
            #params_AQ2ST.WRREC.req := FALSE;
            #params_AI4ST.WRREC.req := TRUE;
            IF #params_AI4ST.WRREC.done THEN
                #stepInt := 50;
            ELSIF #params_AI4ST.WRREC.error THEN
                #Status_Error := true;
            END_IF;
        50:
            //write finish
            #Status_Done := true;
            #params_AQ2ST.RDREC.req := false;
            #params_AQ2ST.WRREC.req := false;
            #params_AI4ST.RDREC.req := false;
            #params_AI4ST.WRREC.req := false;
            #stepInt := 0;
    END_CASE;
    
    IF NOT #In_OperateEnable THEN
        #Status_Done := false;
        #Status_Error := false;
        #params_AQ2ST.RDREC.req := false;
        #params_AQ2ST.WRREC.req := false;
        #params_AI4ST.RDREC.req := false;
        #params_AI4ST.WRREC.req := false;
        #stepInt := 0;
    END_IF;
    
END_REGION
  1. 执行
REGION execute 
    //AQ2ST
    #RdrecControl_AQ2ST(REQ := #params_AQ2ST.RDREC.req,
                        ID := #params_AQ2ST.RDREC.id,
                        INDEX := #params_AQ2ST.RDREC.index,
                        VALID => #params_AQ2ST.RDREC.valid,
                        ERROR => #params_AQ2ST.RDREC.error,
                        LEN => #params_AQ2ST.RDREC.len,
                        RECORD := #params_AQ2ST.recorddata);
    
    #WrrecControl_AQ2ST(REQ := #params_AQ2ST.WRREC.req,
                        ID := #params_AQ2ST.WRREC.id,
                        INDEX := #params_AQ2ST.WRREC.index,
                        LEN := 8,
                        DONE => #params_AQ2ST.WRREC.done,
                        ERROR => #params_AQ2ST.WRREC.error,
                        RECORD := #params_AQ2ST.recorddata);
    //AI4ST
    #RdrecControl_AI4ST(REQ := #params_AI4ST.RDREC.req,
                        ID := #params_AI4ST.RDREC.id,
                        INDEX := #params_AI4ST.RDREC.index,
                        VALID => #params_AI4ST.RDREC.valid,
                        ERROR => #params_AI4ST.RDREC.error,
                        LEN => #params_AI4ST.RDREC.len,
                        RECORD := #params_AI4ST.recorddata);
    
    #WrrecControl_AI4ST(REQ := #params_AI4ST.WRREC.req,
                        ID := #params_AI4ST.WRREC.id,
                        INDEX := #params_AI4ST.WRREC.index,
                        LEN := 28,
                        DONE => #params_AI4ST.WRREC.done,
                        ERROR => #params_AI4ST.WRREC.error,
                        RECORD := #params_AI4ST.recorddata);
END_REGION
  1. 输出
REGION output
    #Out_Status_Error := #Status_Error;
    #Out_Status_Done := #Status_Done;
    
END_REGION

标签:IO,WRREC,AQ2ST,RDREC,案例,params,AI4ST,数据,recorddata
From: https://www.cnblogs.com/xiacuncun/p/18168260

相关文章

  • centos7数据盘挂载/硬盘挂载/磁盘挂载
    挂载命令:1、数据盘挂载命令:用“lsblk”命令看数据盘信息,确定设备文件名如:dev目录下的vdb。2、执行fdisk/dev/vdb,按界面提示依次输入“n”(新建分区)、“p”(新建扩展分区)、“1”(使用第1个主分区),两次回车,输入“w”(保存分区表),完成后分区vdb1创建完成。3、使用命令对新分区......
  • 【智应数】High Dimensional Geometry
    HighdimensiongeometryissurprisinglydifferentfromlowdimensionalgeometryExample1:Volumeconcentratesonshell.Example2:As\(d\rightarrow\infty\),theareaandthevolumnof\(d\)-dimensionalunitball\(\rightarrow\infty\).......
  • CyberRT_数据解析和处理
    CyberRT01.数据传输Apollo项目CyberRT主要包括下面三个方面:通信性能优化去中心化网络拓扑数据兼容性扩展ROS系统中,使用msg描述文件定义模块间的消息接口Apollo选择了Google的ProtocolBuffers格式数据 数据进行传输的时候,是一个......
  • Web Audio API 第6章 高级主题
    高级主题这一章涵盖了非常重要的主题,但比本书的其他部分稍微复杂一些。我们会深入对声音添加音效,完全不通过任何音频缓冲来计算合成音效,模拟不同声音环境的效果,还有关于空3D空间音频。重要理论:双二阶滤波器一个滤波可以增强或减弱声音频谱的某些部分。直观地,在频域上它可......
  • PHP mysql 大量批量insert或update数据出错问题
    UPDATEusersSETage=30WHEREname='Alice';UPDATEusersSETage=25WHEREname='Bob';UPDATEusersSETage=35WHEREname='Charlie';以上代码会导致并发性问题,因为多个更新语句可能会同时执行,导致数据错乱。解决办法:1、使用锁定LOCKTABLESusersWRIT......
  • Vue3中Mock数据的简单方案
    因为Vue3项目开发中需要用到Mock数据,所以这里记录一种快速Mock数据的方法。一、安装首先,你需要安装axios和axios-mock-adapter。npminstallaxiosaxios-mock-adapter--save二、编写mock数据为了保证项目的整洁,我们在项目根目录下的src目录下新建一个名为mock的文件夹......
  • Barcode Detection API
    BarcodeDetectionAPI:用于检测图像中的条形码和二维码//创建新检测器constbarcodeDetector=newBarcodeDetector({formats:["qr_code"],});//检查支持的类型BarcodeDetector?.getSupportedFormats().then((supportedFormats)=>{supportedFormats.forEach(......
  • 16_ioctl接口
    ioctl接口structfile_operations{ ...... long(*unlocked_ioctl)(structfile*,unsignedint,unsignedlong); ......};1.什么是unlocked_ioctl接口?​unlocked_ioctl就是ioctl接口,但是功能和对应的系统调用均没有发生变化。2.unlocked_ioctl和read/write函......
  • 2020-2021 ICPC NERC (NEERC), North-Western Russia Regional Contest (Northern Sub
    E-EasyCompare-and-Set题意给定n个条件,如果存在一个合法序列使得这n个判断条件成立,则输出Yes和这个合法序列,否则输出No。分析首先可以发现对于\(w_i=0\)的操作我们可以在处理完\(w_i=1\)的操作之后讨论一下即可。发现\(a_i\)和\(b_i\)很大需要对其进行离散化操作。离......
  • WPF MVVM Datagrid Selected Multiple items via behavior interaction.trigger,event
    1.Install Microsoft.Xaml.Behaviors.WpffromNuget;2.Addbehaviorreferenceinxamlxmlns:behavior="http://schemas.microsoft.com/xaml/behaviors"3.Passmethodtomvvmviabehavior,interaction,trigger,eventname,TargetObject,MethodNameinxaml......