CODESYS Development System > 配置I/O链接 > 配置设备和映射I/O |
您可以将插入到设备树中的设备对象配置到相关的设备编辑器中。可能性取决于设备描述。“通用设备编辑器”提供了一个通过设备-标签必须添加的标签。
要求:您已经打开了一个标准项目,其设备树中有一个标准的PLC,其下插入了一个现场总线设备对象。
1. | 在你工程的设备树中双击标准PLC的设备对象。
| ||
2. | 双击项目的设备树中的现场总线设备对象。
|
如果另一个设备更改了PLC的配置参数,例如通过可视化,则使用配置文件IoConfig.par是在控制器上创建的。根据设备的不同,可以在设备编辑器的在线模式的参数对话框中设置一个按钮,以便将当前参数写入此类文件。为了更新工程中更改的参数,也可以在联机模式下读取参数文件。
要求:您有一个带有设备树的标准工程,其中硬件环境由设备树中的PLC和可参数化设备映射。控制器上有一个文件IoConfig.par,其中设备参数先前与当前值一起保存。
1. | 从工具 ➔ 自定义对话框中的接口菜单的设备类别”中添加的读取PLC参数文件到配置菜单。 | ||
2. | 在设备树中选择PLC设备对象,打开右键菜单。 | ||
3. | 点击读取PLC参数文件到配置。
|
是否可以配置I/O映射到项目变量甚至整个功能块取决于设备的类型。配置I/O映射意味着将设备的输入和输出通道与项目的变量连接起来。我们也用“映射”这个术语。
一般而言,请注意以下内容,以便将设备的输入和输出映射到CODESYS中的变量:
如果使用指向设备输入的指针,则认为访问是写访问,例如pTest := ADR(input);。这将导致在生成代码时出现编译器警告:"...invalid assignment target"。 如果需要此类构造,则必须首先将输入值(input)到具有写访问权限的变量中。 |
作为一种替代方法,您可以使用AT声明在编程代码中为地址分配一个变量。但是,考虑到设备配置可能发生的更改,我们建议您仅在设备编辑器中进行分配。 |
您可以将设备的I/O映射配置导出到csv文件,或者从这样的文件导入它。 |
要求:在CODESYS工程的设备树中插入一个支持I/O映射配置的设备。因此,在设备编辑器的I/O映射选项卡上,您可以得到设备的输入和输出通道的列表显示,其中指定了地址和数据类型。
如果将大于字节的数据类型的变量映射到字节地址,则该变量的值将被截断为字节大小。对于监视I/O映射对话框中的变量值,这意味着以下内容: 在地址的根元素中,将显示变量当前在工程中的值。字节的当前个别位值在其下面的位元素中依次显示,但这对于整个变量值来说可能还不够。 |
如果在映射对话框中使用I/O通道表示UNION,则取决于设备是否也可以映射到“根”元素。 |
1. | 例如,在一个POU中声明一个类型为BOOL的变量xBool4,您希望使用它从应用程序访问目标设备的输入。 | ||||||
2. | 要打开设备编辑器,双击设备树中的设备对象,然后单击<设备名称>I/O映射选项卡。 | ||||||
3. | 观察变量列,显示设备输入通道和设备输出通道,根据设备仍然可以按组织节点排序。我们假设有一个设备输入的类型是BYTE。它显示在BYTE节点下面的各个位地址(位通道)。 | ||||||
4. | 注意:当映射结构化变量时,编辑器会阻止你同时输入结构变量(例如: %QB0)及个别结构元素(例如: %QB0.1和QB0.2)。因此,如果在映射表中有一个主条目,其中包含一个子树状的位通道条目,则应用以下内容: 然后,可以将变量指定到主条目的行中,也可以指定到子元素(位通道)的行中,但不能同时指定到两个行中。 现在,您可以使用具有适当类型的变量的整个通道,或者使用具有适当类型BOOL或BIT的变量的个别位通道地址。首先,双击变量列中的一个位输入通道。
| ||||||
5. | 为了在通道上放置现有变量,必须输入所需的带完整路径工程变量。按下以打开输入助手。例如,选择在PLC_PRG中声明变量Application.PLC_PRG.xBool4。
| ||||||
6. | 再次删除变量赋值。单击通道的根节点BYTE节点。再次使用输入助手选择变量Application.PLC_PRG.byte_gotodevice。
|
.另请参阅
在下面,您将把设备输出映射到全局隐式变量,该变量是您最近在I/O映射对话框中直接创建的。
因此,I/O映射对话框是进一步声明全局变量的地方。 |
要求:在CODESYS工程的设备树中插入一个支持I/O映射配置的设备。因此,在设备编辑器的I/O映射选项卡上,您可以得到设备的输入和输出通道的列表显示,其中指定了地址和数据类型。
如果设备支持,您可以将整个功能块映射到输入或输出通道。例如,这允许您计算信号变化的频率或为维护目的缩放通道值。
在这里,您将设备输出通道映射到一个函数块。在本例中,块缩放通道输出值。
要求:工程中链接了一个具有支持FB映射的数字输出设备。有一个带有以下实现的功能块Scale_Output_Int。函数块本身的属性和用于处理通道输出的输出参数之前的属性非常重要。
{attribute 'io_function_block'}
FUNCTION_BLOCK Scale_Output_Int
VAR_INPUT
iInput : INT;
iNumerator : INT;
iDenominator : INT :=1;
iOffset : INT := 0;
END_VAR
VAR_OUTPUT
{attribute 'io_function_block_mapping'}
iOutput : INT;
END_VAR
VAR
END_VAR
IF iDenominator <> 0 THEN
iOutput := TO_INT(TO_DINT(iInput) * TO_DINT(iNumerator) / TO_DINT(iDenominator)) + iOffset;
1. | 打开设备编辑器的<设备名称>I/O映射标签。双击应该被连接到FB块的输出。点击给IO添加通道添加FB按钮。
| ||
2. | 选择myScaleOutputIntPOU。
| ||
3. | 选择通道并点击Go to Instance。
|
您可以在<设备名称>I/O映射选项卡的映射表中更改整个通道的地址值(但不能更改通道的单个子元素的地址值!)这允许您根据指定的机器配置调整寻址,并保留地址值,即使模块的布局发生了变化。默认情况下,布局的改变会导致地址值的自动调整。
要求:您的工程有I/O映射。参见上面帮助页面的相应部分。
1. | 要打开设备编辑器,双击设备树中的设备对象,然后单击<设备名称>I/O映射选项卡。 | ||||
2. | 单击地址列中的通道条目上的映射表,以打开输入字段。这只适用于通道的“根”地址,而不适用于它的特定子元素。 因此,请更改表中某个通道的顶部地址条目,例如从QB0更改为QB1。退出输入字段。
| ||||
3. | 若要撤消手动更改或修复,请再次打开地址值的输入字段,删除地址项并按回车键。
|
.另请参阅
要求:您已经编译了一个设备配置包含没有错误的I/O映射的应用程序。相关的硬件和总线系统正在运行。您已经通过在线 ➔ 登录命令连接到控制器,并且已经加载并启动了应用程序。
1. | 在设备编辑器中打开PLC的I/O映射选项卡。要打开编辑器,双击设备树中的设备对象。
| ||||||||
2. | 在列新值中输入某个变量值,然后按[ F7 ] 强制或[ Ctrl ] +[ F7 ] 写入该值。
|
PLC代码不使用的输入和输出在联机模式下不会被PLC读取,因此显示的值可能不正确。有关变量的当前值以灰色背景显示。 |
在工厂或机器的调试期间,可能需要“强制”输入和输出的值。如果一个设备支持这一点,你可以生成特殊的“强制变量”,并使用它们,例如,在一个HMI可视化。
要求:设备支持该功能。您有一个项目,其中为设备配置了I/O映射,并包含一个程序对象PLC_PRG。
1. | 通过双击设备树中的设备对象打开设备编辑器,双击PLC设置。 | ||||||||
2. | 激活选项生成IO映射的强制变量。 | ||||||||
3. | 按[ F11 ] 键编译应用程序。
| ||||||||
4. | 打开功能块PLC_PRG,在实现部分设置焦点,按F2。
|
请注意以下限制。
.另请参阅
有一个表显示设备的I/O映射和设备树中插入到它下面的所有子元素的I/O映射。在那里,您可以按照与各自设备编辑器的映射表完全相同的方式编辑I/O映射。
要求:在项目的设备树中插入了几个PLC,每个PLC都支持I/O映射配置。
1. | 选择设备树的根节点,并在右键菜单中单击编辑I/O映射。
| ||
2. | 现在,在设备树中选择一个控制对象,并在右键菜单中再次选择编辑I/O映射命令。
| ||
3. | 在表上方的栏中设置所需的过滤器,或者在变量字段的搜索变量中输入变量名,以便查看该变量在映射中的使用。
|
.另请参阅