热门搜索:

上海朕锌电气设备有限公司是一家从事:西门子变频器维修、西门子触摸屏、西门子工业电脑的西门子一级代理商,西门子中国总代理商,西门子楼宇代理商。上海朕锌电气设备有限公司凭借雄厚的技术实力及多年从事 SIEMENS 产品的销售经验,本着树立公司形象和对用户认真负责的精神开展业务,赢得了 SIEMENS 公司与广大用户的好评及大力支持,欢迎来电咨询!

    西门子AS-I总线控制产品
    • 西门子AS-I总线控制产品
    • 西门子AS-I总线控制产品
    • 西门子AS-I总线控制产品

    西门子AS-I总线控制产品

    更新时间:2024-05-08   浏览数:175
    所属行业:IT 电脑装机配件 网卡
    发货地址:上海市松江区  
    产品数量:0.00台
    价格:¥88.00 元/台 起
    型号西门子1.1KW变频器 品牌西门子

    西门子AS-I总线控制产品

    上海朕锌电气设备有限公司
    西门子销售部 cpu plc s7-200
    s7-300 s7 400 s7 1200 s7 1500
    mm440  mm430 mm420  g120 变频器 V90变频器
    s7 288模块 伺服电机 触摸屏

    VARIANT与DB_ANY

         4.1章节的示例程序在调用时只能赋值一个固定的类型,例如PZD8_IN或者PZD10_IN,一些应用需要赋值的参数也要根据要求变换,例如MES系统向PLC发送一组物料信息,PLC系统接收到数据后进行判断然后处理,MES系统可以向PLC发送不同的物料信息,每种物料信息的属性可以是不一样的,如果按照上面示例的方式,必须调用程序块多次,然后赋值给参数不同的物料信息,使用DB_ANY变量可以解决这样的问题,可以将PLC数据类型存储在数据块中,然后转换为VARIANT变量,较后对VARIANT变量进行分析判断从而得到需要处理的物料类型,参考下面的应用示例。

         例如一个应用要处理3个不同的物料,物料信息由MES发送到PLC,在PLC中需要判断物料的类型,然后分别处理。

         建立3个PLC数据类型Material_A 、Material_B  和Material_C代表3个物料类型 ,然后以这3个数据类型建议3个数据块 DB_ Material_A 、DB_ Material_B 和 DB_ Material_C。

         创建一个FC块,接口声明和程序代码如图23所示。


                                                                                                     图 23 

         指令DB_ANY_TO_VARIANT可以将输入的参数DB_ANY转换为VARIANT,DB_ANY的使用是有要求的,必须是格式固定的,参考下表(TIA博途的在线帮助)中的加粗标记。

     

         程序中将DB_ANY类型转换为VARIANT类型,然后判断输入的PLC数据类型的格式,分别执行处理物料A、B和C的程序。

         程序块在主程序中调用,如图24所示。

     

                                                                                                                     图 24

          调用程序块时可以使用INT类型赋值DB ANY,例如“Tag_2”,“Tag_2”在变量表中定义的数据类型为DB ANY,“Tag_2”值与数据块的号相对应,例如值为3,表示输入的数据块为DB3。

          有一个小问题,好像PLC系统并不能解析存储于数据块中的数据类型,调用DB_ANY_TO_VARIANT可能会得到输出错误代码 #8155,下面是TIA博途在线帮助中列出的原因和解决办法:

         声明了一个 PLC 数据类型 (UDT1) 并创建了一个数据类型为“UDT1”的数据块 (例如DB2)。变量表中创建一个数据类型为 DB_ANY 的变量 (例如Tag_2)。随后,在主程序中调用了指令“DB_ANY_TO_VARIANT”并在 IN 参数中赋值变量 Tag_2。执行时,指令“DB_ANY_TO_VARIANT”返回错误代码 16#8155。

         通过以下步骤消除该错误代码:

         1)创建函数 (FC5) 并在 InOut 接口中声明数据类型为 VARIANT 的变量。

         2)创建另一函数 (FC6),在 FC6 中的 Temp 接口中创建数据类型为“UDT1”的变量(例如Tag_1),然后调用 FC5,为 FC5 的 InOut 接口赋值变量Tag_1。

         3)编译函数块(FC5 和 FC6)并下载到 CPU 中。在用户程序中*调用这些块(FC5 和 FC6)。其实就是让系统先识别一下PLC数据类型,然后再调用就没有问题了,无语了。

     

    4.3 VARIANT与数组DB


    http://zx2013.cn.b2b168.com