什么是“at”指令,如何使用?
at指令是s7-scl中特有的一个指令,初学者可能会忽略此指令,或者对其理解不够深刻。at指令在s7-scl中有着非常重要的地位,很多应用程序都必须使用此指令。下面将对此指令进行详细讲解。
at指令可以使用户能够以不同的数据类型来访问一个已经声明的变量。此指令类似于高级编程语言中的“继承”概念。此指令有如下特点:
· 特点一:定义仅在块内有效,在接口参数中不出现
· 特点二:在块中可以使用其它数据类型的视图
· 特点三:它只是让另外一些变量继承了某个变量的特性,仅仅数据类型是新的,其它特性相同。
下面将通过具体程序对以上三个特点进行说明,首先定义udt100,udt200,大小都为12个字节,但结构不同。
udt100包括一个date_and_time数据类型(8个字节),还包括一个实数(4个字节);udt200包括6个字(12个字节);在fc2定义输入参数buffer, frame1,frame2:
特点一:定义仅在块内有效,在接口参数中不出现。块内定以的输入参数有3个,但仅在块内有效,在接口参数仅出现buffer输入参数
特点三:它只是让frame1继承了buffer的特性,仅仅数据类型是新的,其它特性相同。此处的udt100长度应小于等于所继承的buffer大小,否则编译错误
注意:此处的udt200长度应小于等于所继承的buffer大小,否则编译错误
注意:udt100,udt200继承了buffer特性
在ob1中调用fc2,并将一个数组赋值给buffer输入参数
特点一:块内定以的输入参数有3个,但仅在块内有效,在接口参数仅出现buffer输入参数
特点二:对于输入参数buffer得到的数据,可以按照frame1,或frame2的格式来寻址。例如可以将 buffer 的前8 个字节认为是data_and_time,送至临时变量test_dt中
at指令应用例子1:在stl中,用户如果希望取得mb0的某一位的数值是非常容易的,例如第3位,直接寻址m0.2就可以了。
而在s7-scl中,由于其具备高级语言的特点,所以定义的变量的绝对地址一般是不显现的。
因此在stl中简单的操作,在s7-scl中却复杂起来。但是通过使用at指令即可解决这个问题。
下图中的例子中,当输入的某个字节,其输出依次为此字节的8个位。
at指令应用例子2:在s7-scl中,any数据类型的使用,经常会伴随着at指令的使用,下面的例子演示了如何拆分改写any数据类型中的内容。程序执行结果相当于:
at指令在使用当中,还有如下注意事项:
· at指令用于对某个变量进行其它数据类型的声明时,必须放在此变量的声明语句后面
· at指令生成的变量不可以初始化
· at指令用于对某个变量其它数据类型的声明时,占用内存大小要小于等于此变量的长度
· at指令用于对某个变量其它数据类型的声明时,如下的组合是允许的:
(1)at指令用于any类型在var_out中是不允许的
elementary (基本数据类型包括) :bool, byte, word, dword, int, dint, date, time,
s5time, char complex (复杂数据类型包括) :array, struct, date_and_time, string
在vass标准中的应用实例:
pmeldfeld at temppointermsys: struct 变量格式是结构
byte0 :byte; // byte 0
typ :byte; // byte 1 daten/parametertyp
anz :word; // byte 2+3 laenge der variablen
dbnr :word; // byte 4+5 db-nummer
bz :dword; // byte 6 故障信息号
end_struct;
程序中
temppointermsys := msys; 故障信息号给入变量
故障报警信息
meldsend(aufrufnr := 1
,anz_meld := 27
,pmeldfeld := pmeldfeld.bz 故障信息号被用来发出
,pmeldabb := pmeldabb.bz
,melddb := word_to_int(pmelddbnr.dbnr)
,aenderungsid := aenderungsid
,integritaet := integritaet
,neustart := neustart
); // void
苹果高管揭秘Mac Pro的散热风扇系统的架构设计
三星Note9评测 毫无疑问是史上最出色的GalaxyNote手机
LORa无线温度传感器的应用场合
FPGA宇航应用下的抗辐照刷新方案
经纬恒润助力超跑品牌路特斯ELETRE奔赴电动新时代
对S7-SCL中的AT指令进行详细讲解
智能路灯打造安全的城市夜晚,助力着智慧城市的发展
叶面积仪操作详解
奥迪展示其即将推出的电动Q4 SUV的运动版
超级计算机“天河二号”解决应用硬伤 用户增至1600家
手机电池如何测试容量,电池测试模组是首选
河北联通在雄安新区完成了基于FlexE技术的IP专线现网测试
NUCLEO-L073RZ实测—低功耗之王,实至名归!
处理器厂抢市 无线充电IC商强打客制方案
断路器跳闸常见的五种原因盘点
牛人的FPGA设计经验分享
新奇美“锁定”大陆五成面板市场
诺基亚8什么时候上市?诺基亚8本月16发布?诺基亚8真机照曝光:蔡司双摄镜头+骁龙835,价格4000起
精密薄膜电阻器的优势及缺点
苹果iOS13.2正式版被曝频繁杀后台 应用重加载频率明显提高