前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >IO-Link通信笔记(十六)——IOL运行库接口文件与代码生成上位机功能展示

IO-Link通信笔记(十六)——IOL运行库接口文件与代码生成上位机功能展示

原创
作者头像
京畿提督
发布2024-07-11 08:51:25
600
发布2024-07-11 08:51:25
举报
文章被收录于专栏:IO-Link

面向对象程序设计思维是现在行业内代码编程的优选思维方式,工程代码内各个工作模块被抽象成一个又一个对象模块,采用接口的方式连接各个对象模块,使得各个对象模块之间既可以不受阻碍的传递数据,又可以实现很低的耦合度。一个好的面向对象编程结构的代码工程,在后续的代码管理工作中,开发人员只需要对具体的需要更新的功能模块进行功能更新即可,极大降低了后续开发人员的精力投入,也使得工程管理更加方便。

我个人的IOL通信协议核心运行库,也是采用面向对象程序设计思维进行代码编写。具体分为三个对象模块:IOL运行所需的MCU驱动资源集合、IOL_Lib协议运行核心、PHY芯片运行所需MCU驱动资源集合。这之中就存在三个接口:IOL_Lib_inerface负责定义MCU与IOL_Lib整体的MCU资源外设接口与驱动函数;IOL_Protocol_interface定义IOL核心运行库与PHY芯片间的驱动函数接口;IOL_PHY_interface定义PHY芯片应用MCU的驱动资源外设功能函数接口。通过三个接口实现了三个模块之间的连接,最后,通过IOL_Lib_include头文件,将IOL_Lib内部头文件开放给main函数使用,这些内部头文件中就包含所有的用户可操作API与变量。工程代码结构如图1。

图1 IOL_Lib运行库软件结构

根据上述结构,用户只需要将IOL_Lib库和PHY驱动库添加到程序中,额外编写对应MCU平台的外设资源驱动和中断服务函数,即IOL_Lib_deiver和IOL_Lib_interrupt,将对应API提供给响应模块,最后在通过IOL_Lib_interface的动作约束,即可完成功能的应用。

可以查看视频听详细讲解。视频未经加速处理,想要调速观看请跳转视频详情页软件结构讲解

视频内容

在上文中已经提到了IOL_Lib_interface接口,接下来就展示本期视频的重点内容,即IOL_Lib_interface接口函数的代码生成上位机(IODD转C代码)与接口文件内部代码的功能介绍。IOL实现的主要功能有三个:过程数据(传感器与执行器的结果)的更新、设备工作参数的读写(ISDU)、设备工作状态事件更新。至于其他的功能,例如程序下载与参数管理,是在IOL的基础之上衍生功能,即便是不具备这些功能,设备仍然是可以正常运行,满足绝大多数工况的。

那么无论任何一个开发人员开发任何一款IOL设备,都需要编写设备对应的IODD,用来存放过程数据结构、ISDU交互参数、事件列表,供应商信息、设备信息、M序列结构定义、过程数据。而这些数据交互的内容,就在IOL_Lib_interface接口中。这就使得工作重复且繁琐,如图二所示,在IOL_Lib_interface源文件中的User_ISDU_Param_Read函数中进行一个索引参数的读取操作,要判断index;是否支持subindex;满足subindex后回复什么信息;不满足subindex要上报“子索引不可用”错误代码提示主站不合规操作。该索引支持子索引操作后又要编写每一个子索引的操作,还要判断子索引是否支持读写操作,如果不支持也要上报对应的错误代码。

​ 图2 一个索引参数读取示例

同样的,像供应商信息、设备信息、产品信息、M序列类型约束以及事件列表这些内容,用户在编写完毕IODD后也要从程序内再编写一次对应的代码。别的方案供应商提供的方案也是需要对这些功能进行修改,但是部分方案需要修改的地方很多且分散在多个文件中,这里我的运行库将这些内容放在了IOL_Lib_interface头文件中,即,IOL_Lib_interface源文件存放各种动作函数,IOL_Lib_interface头文件存放各种信息,运用代码生成上位机生成文件。且只有两个文件,维护和功能修改都非常简单。

​ 图3 IOL_Lib_interface头文件内容

本文提到的代码生成上位机,极大减少了这部分工作量,用户启动上位机,选择书写好的IODD文件,即可在一分钟时间内实现上述代码的生成,后续用户只需要针对生成出来的代码进行规则检查,以及在用户希望的位置上添加动作代码即可。例如,代码生成会相对死板的针对事件等级给出一个默认的设备运行状态,用户可以在检查过程中对该事件提示的设备状态进行修正;IODD内没有提供参数的默认值,用户在检查过程中可以对每一个参数的默认值进行修正;当某一个参数写入后,设备认为该数值不合规矩,用户可以在该参数写入的同时添加参数值诊断动作。

上位机功能展示见视频。视频经过2倍速处理,想要调速观看请见视频详情页代码生成上位机展示,视频钱5分钟为上位机展示,后面为接口源文件函数功能讲解。

视频内容

以上是本节的全部内容,如果各位读者仍然存在疑惑可以私信发送问题,笔者会一一解答并积累一期文章的内容更新出来。

笔者内容也许会存在错误,欢迎志同道合的开发者一起讨论。我们共同进步!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档