在项目对接过程中,特别是在使用DLL接口进行对接时,我们可以通过IoT-Fast(Node-Red魔改版本)封装的C#函数组件来优化这个过程。该组件提供了便捷的方法来调用DLL接口,并且支持直接编写C#代码。这种方式在业务场景中非常灵活。

举个例子,我们以胡工科技的HslCommunication动态链接库(DLL)文件为例。HSL是一个设备通信插件,它已经实现了大量的设备协议。通过使用我们封装的组件,我们可以轻松地集成HSL的协议能力。这样,我们可以更方便地与各种设备进行通信,并且可以根据业务需求进行灵活的定制和扩展。

通过优化项目对接流程,我们可以提高开发效率,减少开发成本,并且更好地满足业务需求。

文章以Hsl为例,包括调用dll库,上云,组态,共分为五个部分:

  • HslCommunication介绍

简单介绍HslCommunication,并根据API文档调用Hsl的dll库。

  • IoT-Fast-采集控制系统

对底层设备进行数据读取、写入的配置界面,还可以进行数据处理。


一、HslCommunication

HslCommunication组件库是一款集众多协议于一体的通讯测试工具,软件首页如下。

Node-Red魔改后如何调用动态链接库 (DLL)文件_控件

它的dll文件是通过C#开发的,我们便可以使用IoT-Fast通过调用Hsl的dll库,根据Hsl的API文档,来对底层设备进行通讯。

二、IoT-Fast-采集控制系统

打开IoT-Fast的采集控制系统,选择左边的节点,按住鼠标左键拖入到中间的配置栏。

Node-Red魔改后如何调用动态链接库 (DLL)文件_控件_02

根据Hsl的API协议,我们需要调用他的dll库,并且使用c#语言来编程,从左侧的逻辑控件中拖出C#函数

Node-Red魔改后如何调用动态链接库 (DLL)文件_控件_03

选中控件然后点击右上角的帮助,可以在右侧窗口了解本控件的功能。

Node-Red魔改后如何调用动态链接库 (DLL)文件_控件_04

我们以通用协议modbus为例,打开modbus模拟器。

Node-Red魔改后如何调用动态链接库 (DLL)文件_控件_05

启动后的通讯属性,功能码是FC3,ID为1,IP是本机IP,端口502,之后往地址中随机写值。

Node-Red魔改后如何调用动态链接库 (DLL)文件_控制系统_06

回到IoT-Fast,双击C#函数打开配置界面,点击上方的设置调用dll。

Node-Red魔改后如何调用动态链接库 (DLL)文件_控制系统_07

点击加载文件,选择Hsl的dll库,文件在Hsl的安装目录下。

Node-Red魔改后如何调用动态链接库 (DLL)文件_控件_08

选择DLL文件

添加成功。

Node-Red魔改后如何调用动态链接库 (DLL)文件_控制系统_09

然后回到函数界面编写代码,这里就用右侧的示例进行举例,将示例复制进来。更多协议的通讯方法需要查看Hsl的API文档。

Node-Red魔改后如何调用动态链接库 (DLL)文件_控制系统_10

配置连接的ip,端口,设备id,还有查询的地址和长度,配置完成。

Node-Red魔改后如何调用动态链接库 (DLL)文件_控制系统_11

接着从左侧的通用控件中拉出定时器调试控件。

Node-Red魔改后如何调用动态链接库 (DLL)文件_控件_12

按住白色小框可以拉出一条线连接上另一个白色小框。这样就将两个控件用线连接起来,数据是从左往右流动的。

Node-Red魔改后如何调用动态链接库 (DLL)文件_控制系统_13

按下图连接后点击右上角的部署按钮,将右侧的界面调到调试窗口

Node-Red魔改后如何调用动态链接库 (DLL)文件_API_14

点击定时器左侧的按钮,因为数据流是从左往右的,就执行了一次C#中的代码,读取了一次modbus中地址为0、长度为2的数值,然后显示在调试窗口中,结果以buffer形式输出,点击小箭头可以展开内容。

Node-Red魔改后如何调用动态链接库 (DLL)文件_控件_15

再试一下其他的地址,读取地址2、长度1的值,配置完后点一下部署按钮,每次改动配置后都需要点击部署。

Node-Red魔改后如何调用动态链接库 (DLL)文件_控制系统_16

点击定时器,右侧输出结果,004A转成10进制对应74,和模拟器上一致。

Node-Red魔改后如何调用动态链接库 (DLL)文件_控制系统_17

如此便读取成功了,我们再用另外一种方式,使地址能够从前方动态输入,同样,我们再拉出一个定时器C#函数调试控件,然后用线连起来,可以直接框选上方的控件,复制一个新的,如果需要删除控件按delete

Node-Red魔改后如何调用动态链接库 (DLL)文件_API_18

双击下方的C#函数进入配置界面,复制下方的案例,这边的配置不同的地方就是查询地址可以从前方动态输入。

Node-Red魔改后如何调用动态链接库 (DLL)文件_API_19

使用这种方式,前方的定时器就需要配置了,双击定时器将时间戳改成JSON输出,写上{"address":"0"},就是地址0;另外如果⽅法体只想调用一次,可以将msg.type设置为subFunc。

Node-Red魔改后如何调用动态链接库 (DLL)文件_API_20

配置如下,定时器的下方还可以设置触发周期,这里还是用手动点击的方式去触发。

Node-Red魔改后如何调用动态链接库 (DLL)文件_API_21

完成后点击部署,点击定时器,读取成功。

Node-Red魔改后如何调用动态链接库 (DLL)文件_API_22

前面只演示了modbus的FC3功能码的读取,其他功能码的读取或者写入,甚至其他的协议读写,大家可以根据Hsl的API文档进行尝试。数据读取到之后,就可以将数据传到云平台显示,然后再进行云组态