Connect IoT - IPC-CFX驱动程序#
IPC-CFX是一种面向工业开发的开放式国际标准,构成了未来工厂应用的基础/支柱。IPC-CFX是一种即插即用的解决方案,简化并标准化了机器对机器通信,同时还促进了机器对企业和企业对机器的应用。
IPC-CFX基于IPC-2591,即连接工厂交换(CFX),两者都由IPC 2-17连接工厂倡议附属委员会管理。该附属委员会通过定期发布版本更新,确保IPC-2591和IPC-CFX SDK持续满足行业日益增长的需求。
数据类型#
这些是受支持的特定数据类型:
| 名称 | 描述 |
|---|---|
| 整数 | 整数 |
| 数字 | 小数 |
| 字符串 | 字符串值 |
| 布尔值 | 布尔值 |
| 日期时间 | 日期/时间值 |
| 对象 | Json格式值 |
Table: IPC-CFX特定数据类型。
异常流程参数#
异常流程支持以下参数,用于定义通信参数以及驱动程序的预期行为:
| 名称 | 类型 | 可能的值 | 默认值 | 描述 |
|---|---|---|---|---|
| transportProtocol | 枚举 | AMQP | AMQP | 用于与端点通信的传输协议。 |
| driverHandle | 字符串 | "" | 驱动程序的CFX句柄(例如:<maker>.<model>.<serial>)。 | |
| driverEndpoint | 字符串 | "" | 驱动程序的CFX端点URI(例如:amqp://127.0.0.1:5673/)。 | |
| driverAddress | 字符串 | "" | 驱动程序的CFX消息源(例如:/queue/CFXHandle)。用于发送消息的内部队列。 | |
| brokerEndpoint | 字符串 | "" | 要连接的代理端点(例如:amqp://127.0.0.1:5672/)。 | |
| brokerExchange | 字符串 | "" | 要连接的代理交换(例如:/exchange/CFXExchange)。 | |
| targetHandle | 字符串 | "" | 目标CFX句柄(例如:<maker>.<model>.<serial>)- 要与之通信的机器CFX句柄。 | |
| targetEndPoint | 字符串 | "" | 目标CFX端点(例如:amqp://127.0.0.1:6000/)- 要与之通信的机器CFX端点。 | |
| targetAddress | 字符串 | "" | 目标地址(例如:/queue/Machine)- 要与之通信的机器CFX地址。 | |
| 用户名 | 字符串 | "" | 用于身份验证的用户名。 | |
| 密码 | 字符串 | "" | 用于身份验证的密码。 | |
| certificatesRootFolder?? | 字符串 | ${temp}/ConnectIoT/IPC-CFX/Certificates/${id} | 公钥基础架构根文件夹的绝对路径。允许将${temp}或${tmp}令牌用于操作系统临时文件夹,并将${id}令牌用于替换为相应的驱动程序实例ID。 | |
| 证书?? | 文本 | "" | 自己的证书 - 可以是文件的路径,也可以是纯文本格式的文件内容。格式应为pem。 | |
| 私钥?? | 文本 | "" | 自己的私钥 - 可以是文件的路径,也可以是纯文本格式的文件内容。格式应为pem。 | |
| connectionReconnectInterval | 整数 | 30 | 网络中断后尝试重新连接到发布或订阅方通道的时间间隔(以秒为单位)。 | |
| connectionRequestTimeout | 整数 | 30 | 当对另一个CFX端点执行点对点请求/响应调用时,此时间范围将指定该端点在超时之前等待另一个端点响应的最长时间(以秒为单位)。 | |
| useLowLevelLogging | 布尔值 | false | 是否使用低级别日志记录(传输层日志记录)。 | |
| eventsExpiration | 整数 | 30 | 事件被视为过期之前的时间(以秒为单位)。 | |
| onRequestReceivedTimeoutReply | 整数 | 30 | 等待控制器回复外部请求的内部时间。 | |
| messagesToIgnore | 文本 | "" | 要忽略和丢弃的消息列表。 | |
| logMessagesFromOtherSources | 布尔值 | false | 是否记录来自其他来源(与TargetHandle不同)的消息。 |
Table: IPC-CFX特定参数。
.net Core SDK#
此驱动程序需要具有.net core sdk 2.x版本才能正常工作。
如果您安装了多个版本的.net core,驱动程序自身将无法确定要使用哪个版本,因此需要使用此设置来明确告知驱动程序要使用的版本。
确定已安装的版本#
在终端/命令提示符窗口中运行以下命令:
您应获得相应结果。下面只是一个示例:
C:\Users\jpsantos>dotnet --list-sdks
2.2.207 [C:\Program Files\dotnet\sdk]
5.0.103 [C:\Program Files\dotnet\sdk]
如果您获得多个结果,请选择以“2”开头的结果,并将其输入到netCoreSdkVersion通信参数中。使用上述结果作为参考,设置的值将为"2.2.207"。下次启动驱动程序时,系统将在驱动程序的基本目录中创建一个包含以下内容的控制文件global.json:
这表示在实例化驱动程序版本时要使用的.net core sdk的确切版本。
扩展参数#
事件#
驱动程序定义中定义的使用此异常流程的所有自动化事件都将具有以下可用于自定义的扩展(额外)属性
| 名称 | 类型 | 可能的值 | 默认值 | 描述 |
|---|---|---|---|---|
| eventType | 枚举 | EventRequest | Event | 从CFX网络接收到的事件类型。事件 - 通知、请求 - 预期得到请求回复。 |
Table: IPC-CFX特定扩展事件。
命令#
驱动程序定义中定义的使用此异常流程的所有自动化命令都将具有以下可用于自定义的扩展(额外)属性
| 名称 | 类型 | 可能的值 | 默认值 | 描述 |
|---|---|---|---|---|
| executionMode | 枚举 | PublishSendRequest | SendRequest | 定义执行命令的模式。“发布”- 将消息作为事件发布,“发送请求”- 发送请求并等待回复。 |
| destination | 枚举 | ExchangeTargetHandleMessageSource | Exchange | 定义命令的目标对象。仅适用于执行模式“发布”。 |
Table: IPC-CFX特定命令。
驱动程序扩展#
此异常流程驱动程序提供了一组扩展,允许自定义执行独立于关联的驱动程序定义的操作。这意味着您可以使用自定义注册驱动程序定义中不存在的事件。
这在访问共享的设备数据或者由于过于复杂而无法使用常规机制访问的设备数据时特别有用。在需要访问命名约定可能因设备而异的数据时也很有用。
对象#
对象是作为参数传递或作为结果值返回的结构。
RegisterHandler#
| 名称 | 类型 | 描述 |
|---|---|---|
| event | Event | 要注册的事件(完整信息) |
Table: IPC-CFX特定处理程序注册。
UnregisterHandler#
| 名称 | 类型 | 描述 |
|---|---|---|
| event | Event | 要注销的事件(至少必须提供name属性) |
Table: IPC-CFX特定处理程序取消注册。
方法#
注册事件#
在发生特定IPC-CFX消息类型时通知协议驱动程序引发该事件。
void connect.iot.driver.ipccfx.registerEvent(data: Event)
示例#
通知 connect.iot.driver.ipccfx.registerEvent
{
"name": "EventName",
"deviceId": "CFX.ResourcePerformance.StationStateChanged",
"isEnabled": true,
"properties": [
{
"name": "oldState",
"deviceId": "OldState",
"deviceType": "Integer",
"dataType": "Integer"
},
{
"name": "oldStateDuration",
"deviceId": "OldStateDuration",
"deviceType": "String",
"dataType": "String"
},
{
"name": "newState",
"deviceId": "NewState",
"deviceType": "Integer",
"dataType": "Integer"
},
{
"name": "relatedFault",
"deviceId": "RelatedFault",
"deviceType": "String",
"dataType": "String"
}
]
}
注销事件#
通知异常流程驱动程序在出现特定消息时停止引发该消息。
void connect.iot.driver.ipccfx.unregisterEvent(data: Event)
示例#
通知 connect.iot.driver.ipccfx.unregisterEvent
执行命令#
执行自定义命令。
any connect.iot.driver.ipccfx.executeCommand(data: ExecuteCommand)
示例#
SendRequest connect.iot.driver.ipccfx.executeCommand
{
"command": {
"name": "ActivateRecipeResponse",
"deviceId": "CFX.Production.ActivateRecipeResponse",
"extendedData": {
"executionMode": "SendRequest",
"destination": "TargetHandle"
},
"parameters": [{
"name": "result",
"deviceId": "Result",
"dataType": "Object",
"deviceType": "Object" ,
"extendedData": {}
}],
},
"parameters": {
"result": {
"Message": "OK",
"Result": "Success",
"ResultCode": 0
},
}
}