在840DsL系统的NC date\Definition目录下有一XX.DEF文件中有下面一句:
define ib_wp_fct as $a_dbb[250]
define i_wp_clamped as (($a_dbb[250] b_and 'b1')<>0)
define i_wp_unclamped as (($a_dbb[250] b_and 'b100')<>0)
请问 $a_dbb[250]与(($a_dbb[250] b_and 'b1')<>0) 、 (($a_dbb[250] b_and 'b100')<>0) 是NC变量还是PLC变量,他们有什么联系?他们的值是怎么谁赋给的?
最佳答案
楼组的问题比较典型,在 NC 高级编程中经常要读写 PLC 变量。具体如下:
1、$A_DBB[ ] 此语句的含义:读取 PLC 变量。例如 $A_DBB[250] 读取 NC内存区域中的 DBB250 ,此区域的大小在做内存配置时被指定。此区域专门用来和PLC 交换数据。必须要分清,这些区域是连贯的,DBB[250]是指区域 中的第250个字节。它可以存储 PLC 中任何区域的内容例如: M、Q、I、 DB 、L区域 。
$A_DBW对应地址是由FC21输入变量指定的。同样840D的NC和PLC用FC21来实现NC与PLC的数据交换,这是一块独立的内存区,其中交换数据的类型、起始地址与长度要在FC21中说明。
2.define ib_wp_fct as $a_dbb[250],即即读取 $a_dbb[250]为ib_wp_fct 赋值,
define i_wp_clamped as (($a_dbb[250] b_and ''b1'')<>0),即$a_dbb[250]的每一位与b1相与,B_AND 是二进制数按位进行逻辑与运算的符号。将$a_dbb[250]不为0的各位赋值给i_wp_clamped变量,
define i_wp_unclamped as (($a_dbb[250] b_and ''b100'')<>0) ,即将$a_dbb[251]不为0的各位赋值给i_wp_unclamped变量,注意,字节的读取顺序,
3.直接读写PLC 输入输出变量:
读输入
$A_PBB_IN[n]
$A_PBW_IN[n]
$A_PBD_IN[n]
写输出
$A_PBB_OUT[n] = XX
$A_PBW_OUT[n] = XX
$A_PBD_OUT[n] = XX
上述语句中的n 是指读写plc 中的哪一输入输出,记住是输入输出,不是过程印象区 例如:$A_PBB_OUT[1] = 1 在 plc 中的表现就是 PQB1=1。
具体可以参阅西门子权威资料包光盘 DOCONCD 2006 中的
SINUMERIK 840Dsl/840D/840Di
SINUMERIK 810D
Special *s (Part 3)一节内容,其中 FB1 这一章中的FC21 对自定义变量的如何使用读写介绍的非常详细。
提问者对于答案的评价:
非常满意
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc194721.html