工作任务 #2217
由 匿名用户 更新于 6 个月 之前
1.编写PLC管理基类
2.开发Modbus资源,包含ModbusTcp客户端和ModbusRTU
9月25日
1.编写modbus资源设计文档。创建KPLC基类,分为两个部分:UI界面基类、功能实现基类。
2.学习modbus总线的基本知识,了解modbusTcp和modbusRtu是什么、是如何传递信息的。
9月27日
1.研究KVision基类的编写架构,KImage的PLC基类实现代码架构
2.写出Modbus资源的U界面,查看Modbus调用所需的库中的相关参数
3.由于不清楚要KPLC是否要调用KToolBase这个基类,不清楚命名空间的使用,而且不太理解之前代码的头文件写法,对基类如何编写和设计有点混乱。明天请教一下峰哥。
9月28日
1.查看KVision中KServerTool和KServerDevice的代码,了解工具调用资源的参数传输和功能实现过程
2.跟锋哥讨论后确定了编写思路,按照KModbusManage类的代码结构,编写KPLCBase基类,按照ServerDevice资源编写KModbus资源
9月29日
1.由于pro缺少serialbus和serialport,我先尝试在终端下载相关的库,不过下载出现了问题。之后尝试在官网下载相关的库。也出现部分库不能够下载的问题。尝试了几次不行之后,重新下载qt5.15.2,下载完成后还是出现pro缺少库文件,明天再尝试其他方式
9月30日
1.搞定pro模块调用问题,由于之前使用的apt源在下载qt时不能下载serialbus和serialport模块,所以在官网和apt下载相关库都是不行的,重新下载qt也不会下载这两个模块。之后通过换apt源,最后成功下载
2.编写KPLCBase基类,能够基本知道基类的使用和变量设置思路,完成Modbus资源连接和断开功能,是否可行还需要下一步验证。
10月8日
1.参照KModbus类的代码,学习四种寄存器读的方式,读线圈,读保存寄存器,读输入寄存器,读离散输入寄存器,并在代码上实现了前三个读的方式。
2.添加KPLCBase基类的函数:类型转换和线圈的具体实现
10月9日
1.编写离散读输入寄存器、写线圈和写寄存器的代码,重新调整了UI界面,方便实现Tcp/Rtu输入界面的切换
2.学习connect函数的使用,emit信号传递时机
10月10日
1.由于没有相似的ui设计代码,设计combox控件触发信号和执行功能之间的信号连接不太会设置,并且跨文件调用参数时出现一些问题,可能需要花时间学习一下
2.大致完成了Modbus资源的初始化,明天完善一下功能
10月11日
1.实现了连接和断开的功能实现,明天研究读取按钮的实现。
2.目前的设计思路是通过字典界面的execut按钮来弹出UI界面实现功能,不过这样相当于不使用了字典功能,明天我思考一下,跟锋哥讨论一下这样写是否可行
10月12日
1.学习信号机制,实现不同界面的信号跳转机制。
2.研究不同类对象调用同一种类对象需要如何操作。
3.修改字典界面的实现功能,将字典按键与ui界面绑定,实现设备资源对象的参数共享。
10月14日
1.学习类对象的创建时机。了解在何时创建、在运行功能时判断类对象存在的条件
2.调整了类对象的创建位置,增加了连接状态显示并增加了不同连接状态下的ui显示
3.在初始化类参照薛茂的KPLCWrite类,能够增删表格并读取其中的数据,为读取功能按钮增加输入参数,明天进一步完善读取按钮的功能实现
10月15日
1.由于设备连接的具体代码实现内容太多,自己编写很难检查错误,故改成用锋哥原来的KModbus类作为KPLCBase基类,用KModbusTcpClient类和KModbusRTUSerial类作为功能实现类
2.由于基类的变动,我重新调整了UI与功能实现的连接代码,最终还是改为executed按钮打开UI界面
3.由于锋哥的类型使用了qt的关键字,而字典中只有c++的关键字,今天尝试用字典的方法设置输入输出问题较多,明天我还是改为只在UI界面中实现
4.编写过程中遇到不同类参数调用问题,故花了点时间思考并学习如何调用类。在不同类中调用另一个类的值,由于参数的私有和公有属性,方法有所不同,由于需要封装,常常使用类函数传递类的参数
10月16日
1.完善了连接、断开和读取的功能,并能够编译成功生成so文件,不过我目前设置在工具界面中,需要调试验证
2.学习了命名空间和跨文件调用的声明的方法
10月17日
1.在打开UI界面的时候出现了问题,目前修改了combox控件选择串口网口的输入参数界面初始化,label显示初始状态,修改界面的状态表。
2.现在还存在的问题是点击连接按钮时程序会崩溃,目前还不知道原因,明天开会正好问问锋哥
10月21日
1.解决了程序奔溃问题。整理了问题解决文档。
2.能够实现TCP的连接,rtu的连接目前还不太会,明天请教一下别人
3.能够实现多地址读取string类型的值。其他类型目前还实现不了,我明天再检查一下原因
10月23日
1.由于之前Modbus服务器的寄存器高低位不同导致输出有误,调整后多个类型的值都可以读取
2.研究了两天还是不太会同步线程,今天尝试了用connect函数但是未能够连接。明天再尝试一下
10月24日
1.将通过连接信号改变标签的实现功能放在connect函数中,解决了label根据信号状态改变的问题
2.rtu连接暂时不能验证
10月30日
1.注释了表格的初始化清空相关代码,防止重复打开ui界面时表格中的combox空间无法显示问题
11月14日
1.添加了信号触发的相关参数。
2.将PLCBase的部分内容转移到新的基类KModbusBase中,KModbus继承PLCBase类
11月19日
1.添加了读取过程的停止/继续读取功能。当用户想使用写入功能时,而读取过程还未结束,用户可以随时停止或继续读取过程。
2.修改了按钮的触发形式。使用connect函数代替按ui文件钮转换出来的槽函数,增加了可读性。
11月21日
1.修改代码,采用父类指针指向子类对象的方式,减少分支语句的使用
2.资源无法调用,明天再检查问题。
11月25日
1.增加了数据显示的功能。
11月27日
1.写好并调试了写入和读取功能,目前能够正常运行。
12月2日
1.优化写入方式。在地址和数值没有填写的时候,不显示它们所在行的操作。
2.修改按钮。将UI改为三个按钮,分别为打开设备、关闭设备、读取测试,并实现了关闭设备和读取测试这两个功能,其中,解决了信号传递中的同步异步问题,将异步线程转为同步。
12月4日
1. 修改读写循环判断条件,逻辑上能够重新运行
2. 由于更新Ubuntu系统导致虚拟机崩溃,使用快照复原了前两天的进度。今天主要在搞前两天写的内容。而目前不清楚什么原因导致modbus不能连接,明天还需要查找原因。
12月20日
1.重新构建框架。目前的思路是将UI类参数传到字典中,然后在设备类中获取字典值,并转换类型,然后以函数的方式传递给工作类,工作类执行工作后会发送信号给UI更新状态。
2.研究KModbusTcpClient类的同步。connectDevice方法只能用StateChange改变信号,这样会导致连接线程中会发射两次型号,所以我学习了一下事件QEventLoop的使用,设置条件让状态变为已连接和未连接的时候才结束事件。
12月21日
1.同步连接难读太高,之后还是将连接和读写分开。
2.连接中有一个connect传递有误。重新学习一下connect传递原理并查看一下connect传递失败的原因。
2.开发Modbus资源,包含ModbusTcp客户端和ModbusRTU
9月25日
1.编写modbus资源设计文档。创建KPLC基类,分为两个部分:UI界面基类、功能实现基类。
2.学习modbus总线的基本知识,了解modbusTcp和modbusRtu是什么、是如何传递信息的。
9月27日
1.研究KVision基类的编写架构,KImage的PLC基类实现代码架构
2.写出Modbus资源的U界面,查看Modbus调用所需的库中的相关参数
3.由于不清楚要KPLC是否要调用KToolBase这个基类,不清楚命名空间的使用,而且不太理解之前代码的头文件写法,对基类如何编写和设计有点混乱。明天请教一下峰哥。
9月28日
1.查看KVision中KServerTool和KServerDevice的代码,了解工具调用资源的参数传输和功能实现过程
2.跟锋哥讨论后确定了编写思路,按照KModbusManage类的代码结构,编写KPLCBase基类,按照ServerDevice资源编写KModbus资源
9月29日
1.由于pro缺少serialbus和serialport,我先尝试在终端下载相关的库,不过下载出现了问题。之后尝试在官网下载相关的库。也出现部分库不能够下载的问题。尝试了几次不行之后,重新下载qt5.15.2,下载完成后还是出现pro缺少库文件,明天再尝试其他方式
9月30日
1.搞定pro模块调用问题,由于之前使用的apt源在下载qt时不能下载serialbus和serialport模块,所以在官网和apt下载相关库都是不行的,重新下载qt也不会下载这两个模块。之后通过换apt源,最后成功下载
2.编写KPLCBase基类,能够基本知道基类的使用和变量设置思路,完成Modbus资源连接和断开功能,是否可行还需要下一步验证。
10月8日
1.参照KModbus类的代码,学习四种寄存器读的方式,读线圈,读保存寄存器,读输入寄存器,读离散输入寄存器,并在代码上实现了前三个读的方式。
2.添加KPLCBase基类的函数:类型转换和线圈的具体实现
10月9日
1.编写离散读输入寄存器、写线圈和写寄存器的代码,重新调整了UI界面,方便实现Tcp/Rtu输入界面的切换
2.学习connect函数的使用,emit信号传递时机
10月10日
1.由于没有相似的ui设计代码,设计combox控件触发信号和执行功能之间的信号连接不太会设置,并且跨文件调用参数时出现一些问题,可能需要花时间学习一下
2.大致完成了Modbus资源的初始化,明天完善一下功能
10月11日
1.实现了连接和断开的功能实现,明天研究读取按钮的实现。
2.目前的设计思路是通过字典界面的execut按钮来弹出UI界面实现功能,不过这样相当于不使用了字典功能,明天我思考一下,跟锋哥讨论一下这样写是否可行
10月12日
1.学习信号机制,实现不同界面的信号跳转机制。
2.研究不同类对象调用同一种类对象需要如何操作。
3.修改字典界面的实现功能,将字典按键与ui界面绑定,实现设备资源对象的参数共享。
10月14日
1.学习类对象的创建时机。了解在何时创建、在运行功能时判断类对象存在的条件
2.调整了类对象的创建位置,增加了连接状态显示并增加了不同连接状态下的ui显示
3.在初始化类参照薛茂的KPLCWrite类,能够增删表格并读取其中的数据,为读取功能按钮增加输入参数,明天进一步完善读取按钮的功能实现
10月15日
1.由于设备连接的具体代码实现内容太多,自己编写很难检查错误,故改成用锋哥原来的KModbus类作为KPLCBase基类,用KModbusTcpClient类和KModbusRTUSerial类作为功能实现类
2.由于基类的变动,我重新调整了UI与功能实现的连接代码,最终还是改为executed按钮打开UI界面
3.由于锋哥的类型使用了qt的关键字,而字典中只有c++的关键字,今天尝试用字典的方法设置输入输出问题较多,明天我还是改为只在UI界面中实现
4.编写过程中遇到不同类参数调用问题,故花了点时间思考并学习如何调用类。在不同类中调用另一个类的值,由于参数的私有和公有属性,方法有所不同,由于需要封装,常常使用类函数传递类的参数
10月16日
1.完善了连接、断开和读取的功能,并能够编译成功生成so文件,不过我目前设置在工具界面中,需要调试验证
2.学习了命名空间和跨文件调用的声明的方法
10月17日
1.在打开UI界面的时候出现了问题,目前修改了combox控件选择串口网口的输入参数界面初始化,label显示初始状态,修改界面的状态表。
2.现在还存在的问题是点击连接按钮时程序会崩溃,目前还不知道原因,明天开会正好问问锋哥
10月21日
1.解决了程序奔溃问题。整理了问题解决文档。
2.能够实现TCP的连接,rtu的连接目前还不太会,明天请教一下别人
3.能够实现多地址读取string类型的值。其他类型目前还实现不了,我明天再检查一下原因
10月23日
1.由于之前Modbus服务器的寄存器高低位不同导致输出有误,调整后多个类型的值都可以读取
2.研究了两天还是不太会同步线程,今天尝试了用connect函数但是未能够连接。明天再尝试一下
10月24日
1.将通过连接信号改变标签的实现功能放在connect函数中,解决了label根据信号状态改变的问题
2.rtu连接暂时不能验证
10月30日
1.注释了表格的初始化清空相关代码,防止重复打开ui界面时表格中的combox空间无法显示问题
11月14日
1.添加了信号触发的相关参数。
2.将PLCBase的部分内容转移到新的基类KModbusBase中,KModbus继承PLCBase类
11月19日
1.添加了读取过程的停止/继续读取功能。当用户想使用写入功能时,而读取过程还未结束,用户可以随时停止或继续读取过程。
2.修改了按钮的触发形式。使用connect函数代替按ui文件钮转换出来的槽函数,增加了可读性。
11月21日
1.修改代码,采用父类指针指向子类对象的方式,减少分支语句的使用
2.资源无法调用,明天再检查问题。
11月25日
1.增加了数据显示的功能。
11月27日
1.写好并调试了写入和读取功能,目前能够正常运行。
12月2日
1.优化写入方式。在地址和数值没有填写的时候,不显示它们所在行的操作。
2.修改按钮。将UI改为三个按钮,分别为打开设备、关闭设备、读取测试,并实现了关闭设备和读取测试这两个功能,其中,解决了信号传递中的同步异步问题,将异步线程转为同步。
12月4日
1. 修改读写循环判断条件,逻辑上能够重新运行
2. 由于更新Ubuntu系统导致虚拟机崩溃,使用快照复原了前两天的进度。今天主要在搞前两天写的内容。而目前不清楚什么原因导致modbus不能连接,明天还需要查找原因。
12月20日
1.重新构建框架。目前的思路是将UI类参数传到字典中,然后在设备类中获取字典值,并转换类型,然后以函数的方式传递给工作类,工作类执行工作后会发送信号给UI更新状态。
2.研究KModbusTcpClient类的同步。connectDevice方法只能用StateChange改变信号,这样会导致连接线程中会发射两次型号,所以我学习了一下事件QEventLoop的使用,设置条件让状态变为已连接和未连接的时候才结束事件。
12月21日
1.同步连接难读太高,之后还是将连接和读写分开。
2.连接中有一个connect传递有误。重新学习一下connect传递原理并查看一下connect传递失败的原因。