I/O 映射

这个子对话框 “设备编辑器”名为'<devicetype> I/O 映射' (例如: 'PROFIBUS DP I/O 映射')。用于配置 PLC 上的 I/O 映射。这意味着工程变量,被应用程序使用,关联到输入,输出以及内存地址的 PLC 设备。

应用程序需要对 I/Os 进行处理,必须指定在 " “PLC 设置”中。

如果设备支持,“在线配置模式”可以用于管理硬件的 I/Os 并且可以不用将实际的应用程序下载到设备。参阅 “在线配置模式”

参阅下文:

概述

是否当前设备的所有 I/O 映射都可以被修改,取决于当前设备;可能对话框只用来显示隐藏创建的设备实例,参阅下文: IEC 对象。

基本上,需注意以下内容映射的I / O变量:

  • 需要输入的变量不能通过写获得。
  • 一个存在的变量只能映射到一个输入。
  • 代替使用 I/O 映射对话框一个地址也可以通过 “AT声明”的方式关联到变量。然而要遵循以下规则:
    1. "AT 定义" 只能用于本地或者全局变量,不包含 POUs 中的输入输出变量。
    2. 对于 I/Os 的一般强制变量的可能 (参阅下文: 隐含变量用于强制 I/Os) 不能用 "AT 定义" 实现。
    3. 如果"AT 定义" 用于结构体或者功能块成员,所有的实例将会被分配相同的内存地址,这不同于 '静态变量' 按照类实现的编程语言例如 C。
  • 确定目标设备的内存布局结构。
  • 对于在 I/O 映射对话框中每个关联到 I/O 通道的变量, "轻质变量" 可以在应用程序 编译运行时创建。这些可以用于机器试运转时候的强制输入或者输出,例如,通过一个可视化 (HMI)。参阅下文: 用于强制 I/Os 的隐式变量)。
使用对话框
插图 515: 设备对话框, I/O 映射,示例

 

通道

如果设备支持以下入口可以获得:

“通道”:设备输入输出通道的符号名。

“地址”:通道的 “地址”例如 '%IW0'。

你可以修改并且固定对话框中的输入和输出地址。这在关联地址到给予的硬件上是非常有用的,以便在模块发生改变时保持变量的地址值 (每个默认的地址值会自动适应硬件地址)。

注意基于设备描述文件的描述用户可以修改输入输出入口的地址,但是不能修改子元素的地址,例如。位通道。所以如果映射表格相关的输入或者输出具有子树,那么只有子树的最高区域可以进行编辑 (参阅下表:只有第一行地址可以进行修改)。

为了填充地址值,选择位于“地址”列中的入口并点击[ Space ] 键打开编辑区域。现在无论是修改变量或者不做修改离开或者通过[ Return ] 键关闭编辑区域。地址区域都将会被标记一个图标,表明当前变量已经被填充。如果变量被修改子地址(位于顶端填充地址之后) 将自动进行修改:

插图 516: 手动修改地址示例

如果希望移除填充值,重新打开地址编辑区域,删除地址入口并且通过[ Enter ] 键关闭。地址以及连接的地址将会被设置为手动修改之前的值,并且 M 图标将会被移除。

“类型”:输入输出通道的 数据类型。例如 'BOOL'。如果数据类型不是标准类型,而是一个结构体或者在设备描述文件中的位区域,只有在是 IEC 标准的一部分时才会被列出并且在设备描述文件中作为隐藏的 IEC 类型。否则表格的入口将为空。

“单位”:参数值的单位,例如 'ms' 表示毫秒

“描述”:参数简单描述

“当前值”:参数当前值,在线模式下显示

 

I/O 映射配置

映射过程是通过将工程中的变量关联到输入或者输出通道“变量”列中实现的。

  • 通道的类型已经在“变量”列通过图标进行声明: 输入,输出。在这一行需要分别输入变量名以及路径,这样就做好了通道的映射。你可以映射一个工程中已经定义的变量或者定义一个新变量,如果新定义那么此变量将自动作为一个全局变量定义。
  • 当映射结构体变量编辑器中将会出现结构体变量 (例如 %QB0) 以及特定结构体元素 (例如 %QB0.1 以及 QB0.2 等) 都可以作为一个入口。这意味着:当在映射表中有一个有位通道的子树结构体时 (下图所示),可以输入到变量的主入口或者输入到子元素中 (位通道),但是两者不能同时。
  • 对于映射一个已经存在的变量必须指定完整的路径,例如: '<应用名>.<pou 路径>.<变量名>';例如:app1.plc_prg.ivar。为了实现这个目的,可以通过按键使用输入助手帮助。在“映射”图标将会出现并且地址值将会显示划掉状态。这不是表示这个内存地址不在存在。而是表示这不是直接使用,因为存在的变量值在另一个内存区域进行管理,尤其是输出的情况,不是其他已经存在的变量应该保存在这个地址 ("%Qxx" 位于 I/O 映射),为了避免写入变量含糊不清。
    参阅下文示例一个输出映射到已经定义的变量 xBool_4:
     
  • 如果希望定义一个新的变量,只需要输入变量名: 'bVar1'。在这个情况喜爱图标将会被出入到“映射”列并且变量将自动插入定义的全局变量列表中。定义之后变量将会作为应用中的全局变量,映射对话框是定义全局变量的另一个地方。
    提示:另外一个地址也可以在程序代码中进行读写,例如在ST 中示例:
  • 考虑设备配置改变的可能性,建议在设备配置对话框内做设备映射。

如果在映射对话框中需要关联一个UNION,那么取决于设备是否脚本元素可以被映射。

提示!

映射 "太大" 数据类型:如果使用的数据类型比比特数据类型大,而被映射到比特地址上,那么这个变量将会被削减为比特大小!这意味着以下在映射对话框中对变量值的监控可行:在地址的脚本元素中变量的值 - 当前工程中可获得 - 将会被显示。位于特殊位值的位元素将会被监控,这对于完成变量值可能不是必须的。

“重置映射”:使用这个按键将会重置映射设置为设备描述文件定义的默认名。

“总是更新参数”:如果这个选项被激活,所有变量将在每个 总线循环任务周期内进行更新 无论变量是否被使用或者映射到输入输出。

IEC 对象

只有在一个隐含的设备实例被创建的时候对话框的这个部分才可见,并且可以通过应用进行管理 (例如为了重启总线或者发布信息)。这个实例是否可获得以及怎样使用,取决于设备类型以及帮助页面中特定设备配置的描述。

总线循环选项

周期性的读之前或者输出之后这个选项配置可以从设备获得。用于设置设备特殊的 总线循环任务

默认情况下 '父' 总线设置可见 (“使用父总线设置”),然后设备树将会用于查找下一个定义的总线循环任务。

要指定一个特定的总线周期任务,从选择列表中选择所需的。该列表提供了当前定义的应用程序中的任务配置任务。

在线模式下 I/O 映射

如果一个结构体变量映射到地址的根元素(映射对话框中树的最上层的相关地址),然后在在线模式下将不会有值在此显示。然而,例如一个DWORD变量映射到该地址,那么在顶层以及位于相关变量中的位通道将会被监视。基本上顶行将会保持为空如果变量被多个子元素填充。

在在线模式下没有做映射的输入和输出将不会在程序代码中进行执行,所以变量值的显示可能是错误的。不相关的变量的“当前值”将会以灰色背景显示。

插图 517: dialog I/O mapping in online mode
隐藏变量用于强制 I/Os

在设备或者机械试运行过程中可能需要强制 I/Os,例如使用 HMI 可视化时。针对这种情况特殊的 '强制变量' 可以针对每个 I/O 通道创建,并映射到设备编辑器中的 I/O 映射对话框中的变量。

默认环境配置“创建 IO 映射强制变量”必须在 “PLC 设置”对话框中激活。然后在应用的每次编译运行时,对于每个映射的 IO 通道,将会根据以下语法规则创建两个变量,同时通道名中的空白区域将会被一个下划线替代:

  • '<devicename>_<channelname>_<IECaddress>_Force' 为 BOOL 类型,用于激活和撤销强制
  • '<devicename>_<channelname>_<ECaddress>_Value' 通道数据类型,用于定义通道的强制变量值

这些变量将会出现在输入助手的类别 "Variables", "IoConfig_Globals_Force_Variables" 中。可以被用于编程系统中任何的编程对象,可视化,图标配置等。

强制变量的一个上升沿将激活相应 IO 的强制操作,操作值是通过 Value-Variable 中定义的。下降沿将取消强制。通过强制变量为 FALSE 的方式取消强制必须在一个新的变量强制之前进行操作!

注意以下限制:

示例

如果映射像按照图片“设备对话框, I/O 映射”(参阅上文)的方式完成映射,那么在应用程序编译过程中 ([ F11 ] ) 以下变量将会出现并可以通过输入助手获得:

- Digitax_ST_Control_word_QW0_Force : BOOL;

- Digitax_ST_Control_word_QW0_Value : UINT;

- Digitax_ST_Target_position_QD1_Force : BOOL;

- Digitax_ST_Target_position_QD1_Value : DINT;

- Digitax_ST_Status_word_IW0_Force : BOOL;

- Digitax_ST_Status_word_IW0_Value : UINT;

- Digitax_ST_Position_actual_value_ID1_Force : BOOL;

- Digitax_ST_Position_actual_value ID1_Value : DINT;

 

限制

  • 只有在“I/O 映射”对话框中进行映射的通道 (例如,变量必须定义在“变量”列,无论此变量是一个新变量还是一个已经定义的变量) 可以被上述隐式强制变量进行操作。
  • 应用程序中未使用的输入 / 输出以及通过 AT-定义的映射都不能作为强制变量。
  • 相关的 I/O 通道必须在至少一个任务中调用。
  • 强制 I/Os 不允许包含在设备的监控 (查看视图, I/O 映射对话框等。这个变量只能隐式用于 IO 驱动中写入到设备中)
  • 强制输入会有一个红色的强制图标显示,无论是强制输入还是输出。