Skip to main content

链接您自己的 I/O

借助此功能,本地 I/O 可以连接到控制器并在 IEC 应用程序中使用。

编辑设备描述

在提供的示例 UDSIoDrvExample.project 中,根据设备描述创建了两个输入和输出。输入和输出通过 Unix 域套接字连接。您可以在 CODESYS 子目录 CODESYS Control SL Extension Package\<version>\Examples\ExternalIoDrv.

_rtslext_img_io_connection.png

要定义您自己的输入和输出,设备描述文件 SocketUnixIOTemplate.devdesc.xml 必须适应。一个 XML parameter 必须为每个输入和输出定义元素。 ParameterId 在设备描述文件中必须是唯一的。我们建议简单地按升序编号,没有间隙。例如:1000 1001 1002 等等:输入从 1000 开始编号,输出从 2000 开始编号。

注意

如果修改了设备描述,则必须将其重新安装在设备存储库中,以便在项目中可用。

<Parameter ParameterId="1000" type="std:DWORD">
   <Attributes channel="input"/>
   <Default/>
   <Name name="local:in1">/Namne>
</Parameter>

名称

描述

参数 ID

调用输入或输出的唯一 ID

类型

定义输入或输出的宽度。它是通过指定适当宽的数据类型来完成的,例如 std:BYTE, std:WORD, std:DWORD, 或者 std:LWORD.其他简单数据类型也是允许的。

属性通道

input 或者 output

姓名 姓名

相应输入或输出的名称

此外,必须分配设备 ID,其定义在 <DeviceIdentification>. 0x0001 8000 到 0x0001 80FF 的范围是为此目的提供的,以避免与现有设备发生冲突。

重要

设备描述和底层 I/O 驱动程序不应在一个 PLC 下多次实例化,因为模块的顺序不固定。这可能导致 I/O 驱动程序无法确保分配。

Python 示例

在 Python 示例中 uds_io_driver.py,接收输出并写入设备的输入。输入参数(IEC输出)作为字符串元组传递(paramType, paramValue) 以设备描述的参数ID为索引。

驱动程序可以处理数据类型 USINT, UINT, UDINT, 和 ULINT.其他数据类型必须转换为合适的数据类型。

例子: ('2000': ('UDINT', '11'), '2001': ('UDINT', '22')}.输出参数格式相同。

同样对于对等体,“输出”/输出参数仍然是要由 IEC 应用程序“向外”传输的输出值(例如,写出到真实的 GPIO)。这 UDS_IODriver_0 示例中实现的类扩展了 ExternalFunctionBase 类。类的名称来源于 UDS_IODriver_ 后跟按升序排列的实例索引。 Call() 函数是必需的,从 IEC 的机制中调用。现在可以在此处评估 IEC 输出并且可以传输 IEC 输入。

接口的使用仅作为 Linux 的成员 codesysuser 用户组

是的

流程分离

是的