作者: lizi

  • 基于哈尔滨机务段DF7型内燃机车电子恒功率使用情况分析

    在以前没有接触过恒功率,对其工作原理不是很清楚。在接触到这个测试台的项目后,通过分析现场实物结合原始厂家的测试说明。终于算是明确的了解了其工作原理和需要的测试方法。

    说白了电子恒功率调节器通过调节励磁电流,来平衡根据柴油机转速计算出来的理论功率和测功以及辅助设备功率。

    分板1功能是在700rpm以上转速时调节辅助功率输出信号PHC。

    分板2、3是恒功率组件,默认是没有,这次也是没有接触到其原理

    分板4功能是空转保护,通过对比各电机电流判断空转状态,输出信为Pk。

    分板5是信号处理的核心板块,通过对各个信号的处理,实现最终输出Vp值,此值是励磁电流大小的直接控制信号。

    分板6是根据柴油机转速计算出各个转速下对应的U、I、P理论值。

    分板7是电源板,把十号板生成的ac电源信号转化成DC ±12V电源供各分板使用。

    分板8是测电压板子,把高压电转化为可以识别的信号。

    分板9是直接的励磁电流输出板子,也是监测各关键信号电压值。

    分板10就是把机车的24v或者110v信号转换成ac信号给分板7使用。

    这里的分板测量就是根据每个板子的输入信号特性,给上输入信号的时候,去测量对应的输出信号。整机测量就是比较麻烦因为各个转速下的电压电流信号都是动态变化的,完全模拟机车的工况做测试,理论上是可能,但是这样的实现会非常麻烦。这里我们取关键特性作为测量

    这几个特性作为设备的主要功能,测试正常即认为设备是正常的。

    ——————————————————————————-

    这里有点小插曲,在设备做完以后,现场的使用人员并没有相应的工作经验,并不能确认工作的完成,所以只能配合客户上机车的水阻试验,就是将机车的功率消耗到加热水槽的水上。在这个过程中,应该是可以各个电机分路消耗,通过分别控制消耗电流可以模拟空转工况,这里也算是客户水阻试验台一个缺陷吧。待测车本身就是一个带病车,上线功率只能有200kw,问题出现很长时间一直没有解决。我在机车上通过观察电子恒功率各板块的信号,发现6号组件的输出信号不对,然后判断出事柴油机转速信号问题,这里要求客户提供可以测量拆转信号的示波器,然而并没有示波器,后来客户自行调整了拆转探头的间隙,于是又信号,机车功率就正常了。

    然后 插上调整好的板子,就没有信号,新板子就有信号。这个现象困扰了我很久,客户也没有给时间去车上测试,后来经过分析当时机车的信号分析,可能是因为水阻试验时,分板1和分板4是断开的,可能会干扰信号给如到组件5,造成扣功,所以会没有信号。而新板子的信号,并不吻合于资料标准值,所以在有些许干扰的时候依然会有功率信号。但是这其实是错误的。所以目前客户的车其实是运行在一个错误的工况下,可能会有功率浪费。

    建议用户可以接入分板1和分板4,同时按资料给定信号调试设备,才能达到理论效果。

  • MySQL插入数据,莫名其妙的乱码

    接触数据库比较少,对数据库很多特性并不是很了解,所以就在数据库上用了很多的时间,比较头疼的就是数据库的中文乱码问题了,关于建表和建库过程中指定utf8这样的操作,是很正常的在网上也可以轻松找到相关的资料或者教程。我这个要说的是一个比较奇葩的情况。

    这里先看下几个重要的点,在mysql命令行中show variables like ‘character%’;

    全部UTF8没有任何问题,在看这里

    两个表的数据类型都是varchar字符集都是utf8没问题,但是就是一个可以正常中文,另外一个一直都是乱码。在这就得说,问题还是得找根本,我想了多种方法去解决,统统没有效果,最后实在没有效果,只能到处建表sql,这里就发现问题了。

    — —————————-
    DROP TABLE IF EXISTS `testcode`;
    CREATE TABLE `testcode` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `remote_id` int(11) NOT NULL,
    `type` varchar(255) NOT NULL,
    PRIMARY KEY (`remote_id`,`id`),
    KEY `id` (`id`) USING BTREE
    ) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;

    — —————————-
    — Table structure for testobject
    — —————————-
    DROP TABLE IF EXISTS `testobject`;
    CREATE TABLE `testobject` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `obj_id` int(11) NOT NULL,
    `remote_id` int(11) NOT NULL,
    `object` varchar(255) CHARACTER SET latin1 DEFAULT NULL,
    `type` varchar(255) CHARACTER SET latin1 DEFAULT NULL,
    `model` varchar(255) CHARACTER SET latin1 DEFAULT NULL,
    `standard` float DEFAULT NULL,
    PRIMARY KEY (`id`,`obj_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

     

    这里看到有CHARACTER SET latin1这样的字样,但是在管理软件里统统是看不到这个的,只能在sql里看到。找到问题了就好解决,只需要删除CHARACTER SET latin1,然后再drop table,接着create就行。这个问题所示解决了。这个问题产生的原因应该就是在建表的过程中,没有指定utf8 ,后边改的utf8.造成数据类型的不统一才造成的。

  • 现有qt项目建立TortoiseSVN代码库,用代码库管理版本(不用VisualSVN)

    网上的教程多事VisualSVN+TortoiseSVN的设置,所以感觉很麻烦。这里介绍一下只用TortoiseSVN进行管理的方法。
    首先安装TortoiseSVN,下载请看这里https://tortoisesvn.net/downloads.html现在最新版本为1.9.5版。
    安装完成后,觉得英文有压力的话,可以去官网下载中文语言包
    可以看到,支持的语言非常多,这里我们选择简体中文的就可以了
    下载后安装完成,在设置里选择中文,然后应用。
    这里需要注意的有一点,安装的时候需要安装全部组件,否则就会找不到目录,类似这样:
    就是这里,记得选择。
    完全安装完成后运行qtcreator,工具-选项-版本控制-Subversion,就可以看到已经有了svn.exe的程序。
    前面都是准备工作,下面就是正式的使用了。
    //——————————————————————————
    文件-新建文件或项目-项目-Import Project-Subv Checkout
    根据自己的svn设置,填入后边的选项,就可以正常的使用了,对于svn相关的操作这里不做多介绍,了,需要了解的可以自行百度。