STEP7编程:字与字相“或”指令WOR_W详解

需积分: 41 3 下载量 146 浏览量 更新于2024-08-24 收藏 874KB PPT 举报
"本文主要介绍了STEP7编程技术中的字与字相“或”指令WOR_W的使用,以及STEP7中的各种块类型。" 在SIMATIC STEP 7编程环境中,字与字相“或”指令WOR_W是一种用于进行逻辑运算的指令。当启用信号EN为1时,该指令会按照“或”真值表对输入IN1和IN2的字数据进行逐位组合,将结果存放在OUT指定的地址中。这里的EN、INO、IN2和OUT都是参数,分别代表允许输入、允许输出、逻辑运算的第一个值、第二个值和逻辑或运算的结果,它们的数据类型分别为BOOL(布尔型)、WORD(字型)。这些参数可以是I(输入)、Q(输出)、M(存储器)、D(数据块)或L(局部变量)。 接下来,我们探讨了STEP7中的块类型: 1. 组织块(OB,Organization Block):包括不同类型的OB,如启动组织块、循环执行的程序组织块、定期执行的程序组织块和事件驱动执行的程序组织块。其中,启动组织块是程序执行的起点,常见的有OB100(暖启动)、OB101(热启动)和OB102(冷启动),它们在不同重启条件下有不同的数据处理方式。OB1是循环执行的主程序,其执行可以被更高优先级的事件打断。 2. 功能(FC,Function):这是用户定义的独立程序单元,可以作为其他程序调用的子程序。 3. 功能块(FB,Function Block):类似于FC,但FB可以有实例数据,可以保存状态信息。 4. 系统功能(SFC,System Function)和系统功能块(SFB,System Function Bloc):是预定义的特殊功能,通常用于与PLC硬件相关的操作。 5. 背景数据块(DB,InstanceDataBlock):存储用户自定义数据,如变量和结构体,每个FB或FC都有一个关联的DB。 6. 共享数据块(DB,ShareDataBlock):允许多个程序同时访问同一数据。 定期执行的程序组织块如OB10、OB11到OB17是日期中断组织块,它们在特定日期或时间触发执行。而OB30到OB38是循环中断组织块,可以设置周期性地执行程序,比如每隔一定时间间隔。 这些块在PLC程序设计中起到关键作用,它们协同工作以实现自动化系统的逻辑控制和数据处理。通过灵活运用这些块和逻辑指令如WOR_W,工程师能够构建高效、可靠的工业控制系统。

优化以下Oracle语句: SELECT SUBSTR(msn.serial_number, 1, 10) genset_sn, msi2.segment1 Genset_BOM_NUM, msi2.inventory_item_id, msi.segment1 key_component, mut1.serial_number component_sn, msi.description component_desc, wdj.date_completed, (SELECT MAX(aps.vendor_name) FROM ap_suppliers aps, bom_resources bor, mtl_unit_transactions mut, po_headers_all poh, po_lines_all pol, wip_osp_resources_val_v wor WHERE aps.vendor_id = poh.vendor_id AND bor.resource_id = wor.resource_id AND poh.po_header_id = pol.po_header_id AND pol.item_id = bor.purchase_item_id AND wor.wip_entity_id = mut.transaction_source_id AND mut.serial_number = mut1.serial_number AND mut.inventory_item_id = mut1.inventory_item_id AND mut.organization_id = mut1.organization_id AND mut.receipt_issue_type = 2 AND mut.transaction_source_type_id = 5 ) supplier FROM mtl_material_transactions mmt1, mtl_material_transactions mmt2, mtl_parameters mpa, mtl_serial_numbers msn, mtl_system_items msi, mtl_system_items msi2, mtl_transaction_types mtt1, mtl_transaction_types mtt2, mtl_unit_transactions mut1, mtl_unit_transactions mut2, wip_discrete_jobs_v wdj WHERE mmt1.inventory_item_id = mut1.inventory_item_id AND mmt1.organization_id = mut1.organization_id AND WDJ.PRIMARY_ITEM_ID = msi2.INVENTORY_ITEM_ID AND mmt1.transaction_id = mut1.transaction_id AND mmt1.transaction_source_id = wdj.wip_entity_id AND mmt1.transaction_type_id = mtt1.transaction_type_id AND mtt1.transaction_type_name = 'WIP Issue' AND NOT EXISTS (SELECT 'WIP Negative Issue or WIP Return' FROM mtl_material_transactions mmt3, mtl_transaction_types mtt3, mtl_unit_transactions mut3 WHERE mmt3.transaction_id = mut3.transaction_id AND mmt3.transaction_type_id = mtt3.transaction_type_id AND mmt3.transaction_date > mmt1.transaction_date AND mtt3.transaction_type_name IN ('WIP Negative Issue', 'WIP Return') AND mut3.serial_number = mut1.serial_number AND mut3.inventory_item_id = mut1.inventory_item_id) AND mmt2.transaction_id = mut2.transaction_id AND mmt2.transaction_source_id = wdj.wip_entity_id AND mmt2.transaction_type_id = mtt2.transaction_type_id AND mtt2.transaction_type_name = 'WIP Completion' AND mpa.organization_code = 'WHP' AND msn.current_organization_id = mpa.organization_id AND LENGTH(msn.serial_number) >= 10 AND msi.inventory_item_id = mmt1.inventory_item_id AND msi.organization_id = mmt1.organization_id AND (msi.planning_make_buy_code = 2 OR msi.segment1 LIKE 'SO%') AND mut2.serial_number = msn.serial_number AND mut2.inventory_item_id = msn.inventory_item_id AND mut2.organization_id = mpa.organization_id AND msi2.ORGANIZATION_ID = '323'

2023-07-15 上传