2016-9-21:修复一个modbus因为地址原因导致的系统指针异常的bug。 2016-9-23:添加不同型号的参数配置,并添加了DN100的信号配置参数。 2016-10-8:版本更新为v1.0.1 2016-10-11:修改静态的超声波 2016-10-12:修改了日志的每秒传输字节数到12条,添加了报警日志的传输。 2016-10-14:修改了温度压力的驱动,根据新的温度压力测量电路,配置了ADS1120的驱动。 2016-10-20:修复ADS1120挂在SPI之后的一个启动读写eeprom的问题。 2016-10-26:修改RTC的定时功能,可以使系统的工作周期扩展到2s及以上。并修复了流速的单位量纲。 2016-10-27:修正气体流速的量纲,添加了修改蓝牙名字的功能。 2016-10-31:添加了蓝牙名字和设备id关联的代码。 2016-11-02:修改了485波特率的bug。 2016-11-04:修改一些bug,流速显示,蓝牙参数的记录,不再记录485的数据了。 2016-11-08:修改了日志的存储过程的bug,添加参数日志的发送存储功能,去除一些无效的写寄存器的数据存储。 2016-11-09:添加了电流环的应用,修改了AD421的驱动代码。 2016-11-10:修改警告日志和参数日志的bug,添加日志清除的功能,添加内部压缩因子选择的功能,修改长电时屏幕常亮的功能。 2016-11-18:修改了系统延时造成单次测量静态时间偏差的问题。 2016-11-22:低功耗状态下的led电源修改。 2016-12-06:修改了GPRS发送问题。 2018-10-16:添加几个功能测试 1.温度修正,压力修正,压力下限添加,以及内部系数的修正,小流量切除,led显示开关。 2.还有就是添加了一个在外电和电池供电切换的时候,延迟切换模式的问题。 3.GPRS几个测试数据修改添加添加,GPRS模式测试。 4.低压报警功能。 测试: 系数修正。1234, 压力修正。1235,200,1500 温度修正。1238,300,1300 压力下限。1236,1010 小流量切除。1237,1, V5.0.2 20210114 1.小流量跑测问题。修改系数修正else Q2 = Q * flow_point_real_set_g.flow_point_para[9];反向修正同理修改。 V5.2.3 -20210607 1.通道时间差由a-b改为b-a; 2.参数设置权限控制有问题导致内部上位机无法设置非计量参数,已修改。 3.添加工况整体修正,并调整总得修正流程为 a.工况一次修正 b.工况二次修正 c.工况整体修正 d.工况小流量切除 e.工况超流量处理 f.标况计算。 4.脉冲系数数据类型搞错了,全部调整为整形,包括修改记录。 5.电流环时钟频率降低4倍,大约是20K左右频率。数据传输之前的latch拉高拉低取消。数据传输完之后clk和data引脚都拉低。由于输出电流比想要的值偏低一点,因此电流略微放大,Y= X * 1.0015 + 0.01932。 6.上位机升级程序功能。 V5.2.4 20210608- 20210729 1.修改低电报警线输出功能,与低电报警功能判断依据一致。 2.修改整体修正b生效问题,10倍最小流量以上时b有效,但是程序忘了瞬时量/3600判断,导致b一直不生效。 3.上位机设置时重发次数不能大于5,重发间隔不能大于120(分钟)。 4.所有报警控制功能关闭之后,相应的报警状态都清零。 5.电流环参数修改时,电流环类型赋予相应的状态,电流环功能设置之后也做了记录。 6.修改服务器通信协议,增加报警帧和双向数据帧。 7.PC6锂电掉电判断方式改为中断,接收到中断之后在主循环中检测一次电池电压。 8.系统复位起来进入工作立马采集温压。 9.增加信号溢出判断,此外,所有探头异常的判断条件都要持续3-5秒才有效。 10.增加探头丢失的判断,再探头异常的基础上,增加本通道增益大于等于42,且信号强度小于20. 11.探头异常报警信息用故障代码显示在液晶屏上。 12.探头异常时间差的判定方法不合适,采用流速差判定。 13.实时参数中瞬时工况流量、瞬时工况流量均值、瞬时标况流量转为每小时流量传给上位机。 14.优化报警上报标志处理,解决连网不成功时报警一直存在而一直报警的问题。 15.修改蓝牙名字发送时后面编号出错的问题。 16.上位机登入时,内部版本的有效期为7200秒,外部版本的有效期为300秒。 V5.2.5 20210730- 1、解决探头丢失报警一旦出现就不会恢复的问题。 2、解决压缩因子不能设置为外部输入值的问题。 3、修改日志存储在状态字更新之前导致存储的状态字为上一秒时的状态的问题。 4、解决上报数据流量的正负号问题。 V5.2.6 20210809 1、限制上报间隔时间,外供电小于5分钟按5分钟处理,电池供电小于60分钟按60分钟处理。 2、电池掉电时及时保存重要数据,原先放错位置,放到了低电下面。 3、修改反向二次修正第二个点的数值使用出错问题。 V5.2.7 20210817 1、低电/欠压,当出现低电/欠压状态时,立马输出对应的报警线信号(拉高报警线持续10秒),之后如果状态持续存在,则每间隔1小时再次产生报警线信号;如果状态恢复又再次出现,则会又立马输出报警线信号,不受间隔1小时影响。 2、开启错误累计功能,错误累积的条件具体见文档。 V5.2.8 20210914 1、压力均值时,多次使用修正k,b。导致压力均值出错。解决此问题。 压力的报警下限、下下限、测量范围下限都改成70KPA,且对应报警功能默认关闭,仅对烧写EEPROM初始化程序有效。 2、触发线设置不复位。 3、高频脉冲参数修改不复位。 4、增加单向设备逆流报警。 5、增加锂电移除报警和电池上电记录。 6、增加液显低温报警,低于-15度,记录并显示故障代码,不上报;高于-10度取消报警状态。 7、增加设备基础信息、流量修正参数、探头校准参数的三重存储和读取校验。 8、增加统计参数计算功能。 9、电池寿命一个对应8000小时。 10、通道切除状态自动恢复时,保存记录。 11、连续20秒流量为0时,仅FPGA部分变为每2秒工作一次,系统仍然还是每秒工作。 V5.2.9 20210927 1、优化休眠前的IO口配置,降低功耗。 2、修改探头校准模式设置问题。 V5.2.10 20211009 1、减少模组关机之后断电的延迟。 通讯结束之后2秒关机,再过2秒关闭模块电源。 2、流量启动时,累积量补偿1秒的流量,且在FPGA工作的那一秒替换前一秒较少(绝对值)的流量数值。 因为流量为0时,FPGA每2秒工作一次,流量起来时可能会损失1秒的流量。所以需要补偿1秒。以上仅在电池供电情况下生效。 3、解决单向显示息屏重新点亮时不是标况流量的问题。 4、流量启动时,前5秒流量如果大于1.5倍最大流量,则归0。包括系统复位和供电方式改变。主要为了防止烧写程序重新起来时有大流量导致总量增加。 5、增加第2片存储芯片的片选CS控制及多字节读写,但是目前没有用到第二片,增加之后不要影响第一片的数据读写。 6、增加思筑流量计协议3的modbus地址数据,主要用于新奥采集器读取28编号等数据。 7、超流量惩戒3,超过1.2Qmax时用1.2Qmax替代改成超过1.25Qmax时用1.25Qmax替代. V5.2.11 20211104 1、BOARD_INITIALIZATION宏定义打开时,FPGA打开电源后不通讯,且不关闭FPGA电源,可用于FPGA程序烧写。 2、增加反向工况与标况总量读取,数据类型同正向,分整数与小数,占3个寄存器地址,地址分别为3515,3518。 3、增加通讯超时时间参数,由于在中间插入参数,可能以前烧过程序的板子更新程序会导致超时时间为256秒。需要做新的初始化程序对存储进行初始化,或者后续上位机增加超时时间的设置,进行重新设置。 4、调整喂狗时间,原先放在每秒工作完成之后喂狗,现改成每秒工作之前喂狗,这样喂狗比较准时。 V5.2.12 20211116 1、modbus地址表3507和3509的瞬时量如果是反向的,就赋值反向流量,符号为负号。 2、modbus新增地址表,数据为大端。2001到4000的地址为原地址,保留,新地址不覆盖此区域地址。 3、系统状态检测(主要是外供电状态)放在工作的末尾,否则外电变化不能产生上报。 4、兼容新液晶板显示,第二行小数点后有三位数字。 5、探头自动切除判断中, 其他声道增益小于30改为小于48,也就是取消其他声道增益的限制。 6、增加合成声速的计算,合成声速大于370判定为天然气环境,合成声速取通道切除外的均值。 7、平均之后(修正之前)的流量超过2倍最大流量,视为无效流量,全时段有效。 8、增加合成流速参数,取没有切除的通道的均值。 目前上位机等不可读,仅modbus可读。 9、增加电池电量剩余百分比参数,目前上位机等不可读,仅modbus可读。计算方法为结合电池电压和电池时间计数得出,跟显示电池格数同理。 10、复位重启或者内外供电切换后,温压的读取延迟2秒进行检测,原先是立马检测一次。 另外缩小温压读取延时。 V5.3.0 20211208 1、开盖和主板拆除状态检测加到初始状态检测中,也就是复位起来首次检测状态就判断这两个状态,不报警。 2、时间读取放在循环的开头。每秒钟只读一次。 3、rs485口的默认波特率改为9600. 4、如果设置为单向显示的表,液晶上“正”字不显示。 5、三声道存在通道切除时, 上下声道工作系数为0.55(比原先0.5上调10%);中间声道工作系数为1.07(比原先1上调7%)。 6、状态字中存在同一种报警有多个级别的,比如锂电欠电和低电、温压的上限和上上限、下限和下下限、流量的上限和上上限和1.2倍,更高级的状态位为1时,低级的状态位同时置1 。 V5.0.3.1 20220209 1、欠压时:PE9一直拉低(IO口拉高,外部变低)。原先是跟PE10低电处理方式一致,拉低10秒,状态持续存在的话每1小时产生一次10秒低电平。 2、天然气环境下工况流量修正之后再上调0.7%,原先是上调0.5%. 3、兼容南京测勤PM100-L压力传感器,程序重启时自动识别,识别不出来默认按思筑压力传感器方式读取。 4、解决信号溢出可能每天无限次上报的bug。 5、解决增益异常可能每天无限次上报的bug。 6、解决探头丢失发生之后转正常后状态无法消除的bug。 7、修改了主板脱钩报警不能单独控制的问题,原先跟开盖绑定一起使用了。 8、修复模块连不上网时,产生报警后会反复报警停不下来的问题。 9、如果只有报警没有数据上报,此时设置了重报,则报警失败之后也能触发重发。原本重报只能触发数据的重报,报警不会重报,但是会伴随下一次通讯(非重报产生的通讯)一起上报。 10、修复了只有报警上报,没有数据上报时,报警成功但是通讯标志不会恢复的问题,前提是先通讯失败一次。 11、修复了报警上报响应时,把up_data_left_num_sizhu减少的问题。报警上报不需要减少把up_data_left_num_sizhu减少的问题。 12、压力读取延时调整为110ms,温度延时调整为80ms,如果读取失败立马重新读取一次,两次都失败算作一回读取失败,连续3回产生报警。 13、修复报警数据中瞬时量一直为负数的问题。 V5.0.3.2 20220607 1、探头信号问题仅在FPGA工作的时候判断,如果FPGA每2秒工作一次,不工作的那一秒不判断。 2、恢复二声道情况下,中间声道的时间,原先只有三声道情况下才开放中间省道时间。对实际没有影响,只是生产中可以用到。 3、上位机增加流量温压组合设置、综合功能1组合配置。 4、初始化的设备规格型号修改,初始化程序需更新。规格型号有变化时,会变更相应的默认参数,比如口径对应的流量。电流环没有跟随开启,需要另外配置。后续必须要配置规格型号,之前版本更新之后建议补充规格型号。 5、整理小流量切除值赋值所放位置。 6、可配置APN等相关参数。 7、上位机操作时,操作级别仅在登入帧是判断,其他时候不再判断。 8、单双向计量变更时,单双向显示跟随,不变时,单双向显示可单独设置。 9、对复位5秒内的数据,对原始流量做限制,超过1倍Qmax按1倍Qmax计算,然后参与平均计算出平均流量,然后再进入流量修正。对复位5秒之后的数据,对原始流量做限制,超过2倍Qmax按2倍Qmax计算,然后参与平均计算出平均流量,然后再进入流量修正。 10、上位机协议的密码与版本号复用,此次修改之后,之前的上位机不能用了。 11、兼容UFG630相关配置;包括产品类型、声道数量、口径、最大流量、小流量切除值。选择630时,所有探头信号异常不判断。 12、增加通讯时自动校时功能,偏差超过2分钟自动校时,放在结束帧的时候处理。 V5.0.3.3 20220914-20221111 1、选择630时也进入探头信号异常判断流程,探头信号判断流程仅跟声道数量有关,跟是否630无直接关联。 2、选择630时,发生探头切除时,要么上下通道一起切除,要么只切除中间通道。 通道切除发生后,流速比例上下按0.5/0.5计算,中间通道按1计算,实际比例需要通过测试后调整。 3、上报所需的数据存储方式修改,原先是外供电存储在数组,电池供电存储在EEPROM,且不记录当前存有条数和上次余留条数, 这样会导致复位或者供电切换时, 之前存储的数据丢失,进一步导致上报的数据不完整。 因此现在修改成高频次存储存数组,低频次存EEPROM, 高频次是指外供电情况下存储频率小于5分钟一次,其他情况视为低频次。 如果仅是供电切换,但是没有从低频次变为高频次, 那么之前存有的数据都会上报; 如果是从低频次改成了高频次, 那么之前存有的未上报数据当前不再上报,直接按高频次重新存储上报,之前低频次存储的数据会在下次变回低频次的时候重新上报; 如果是从高频次改成低频次,那么直接按低频次存储的数据进行上报。 4、修复630的80/100口径延迟时间出错导致中间通道时间异常现象。 5、实时数据三重备份写入从单个数据写改为整组数据连续写,节省写入时间。整组写入再整组读取,逐个字节比较。 6、每次工作周期的中间插入一次喂狗。 7、取消无线通讯接收数据处理的delay_ms(10); 8、加入内部修正,内部修正处于流速合成之后,生产一次修正之前。并根据实测,产生了不同口径的修正系数,系数内置数组。 9、调整630通道切除时的流速合成比例。 10、BootLoader程序修复跳转前禁串口中断禁错了的问题;应用程序中中断配置的时候额外增加了开启总中断__set_PRIMASK(0),由于BootLoader程序里关闭了总中断。 11、630的内置修正系数增加一个小流量切除值的点,系数同上一个点的系数。 12、优化上位机串口判断数据接收完毕的延时时间。 13、优化采集器采集485数据串口判断数据接收完毕的延时时间。 14、增加K系数K_coe的赋值,K系数为仪表系数,即高频脉冲系数。 V5.0.3.4 20221123- 1、优化所有探头异常的判断,取消自动通道切除的独立判断方式,改为依据现有异常状态来判断,目前的依据就是通道丢失即自动切除。通道丢失的条件为增益异常的前提下(需要打开增益异常报警功能),增益达到42且信号强度小于20,且持续10秒以上。 另外所有探头异常的退出条件改为持续4次判断正常。 2、630的通道流速差阈值改为15%,620的仍然为5%。在变更型号的时候自动更改流速差阈值。 3、修复仅报警上报,无数据上报时,通讯失败也是显示通讯成功的bug。 4、修复电池供电时,信号溢出引起的调压不生效的问题(由PD8引脚控制)。 带阀程序 20230223重要处理!!!! 锂电低电检测脚休眠起来之后需要重新配置IO!!!,否则可能无法检测了。 V5.0.5.5 1、系统复位Ns内不进行上报,暂定N=180。 2、上发过程中,不进行温压采集,如果已经进行到温压采集的步骤2,那就立马关电等上报结束后恢复到步骤 1重新执行。 3、修改EEPROM初始化时,实时参数写EEPROM错误的问题。 4、485通讯以及上位机通讯共用上位机口,默认波特率115200。 5、新增检定模式,仅在外电及空气介质下可以进入,通过电源键长按10s进入,再次长按10s退出,进入检定模式时,屏幕上会显示检字,工标况总量分别显示工标况检定总量,每次进入检定模式,检定总量都会清零。 6、新增用锂电使用时间判断锂电低电掉电的功能,具体逻辑如下:如果采集到锂电电压低电或者掉电,则按照电压判断设备是否低电掉电;否则通过锂电使用时间来判断是否掉电低电。 7、显示,按照新显示屏进行显示,可显示思筑LOGO,阀门状态以及锁定状态,关阀原因,报警码,介质类型,无线符号、信号强度,4G标志,开户、计费模式。另外有正常显示模式和查询显示模式,暂定通过长按右键十秒的方式来进入或者退出查询显示模式,进入查询显示模式时会显示放大镜标志。正常显示模式切屏:标总+标瞬,余额+单价,标总+温度,标总+压力,工总+工瞬。 查询显示模式切屏:日期+时间,IP,端口,第三方IP、第三方端口、编号、第三方编号、波特率+从机地址。 8、阀控功能,按键开阀,按键关阀,关阀走气,异常关阀,远程关阀。 9、新平台通讯功能。 10、阀门记录。 11、各种功能控制字同燃气表。 12、上位机端口取消第一次先发送无用数据的方式,上位机串口发送数据之前加入USART_ClearFlag(USART3, USART_FLAG_TC); //发送前清除一下TC,可以解决硬件复位之后第一次发送丢第一个字节问题。 13、新增用锂电使用时间判断锂电低电掉电的功能,具体逻辑如下:如果采集到锂电电压低电或者掉电,则按照电压判断设备是否低电掉电;否则通过锂电使用时间来判断是否掉电低电,电量百分比与显示格数的关系:>70 四格电 ,>40 三格电 ,>20 两格电 >0 一格电,等于0 0格电;通过时间判断电压低电掉电时,电池总使用时间由32000更改为3*365*24,低电时间为总使用时间乘以0.8;低电时电压百分比计算方式为 0.2*100*(当前电量 - 掉电值*10)/((低电值-掉电值)*10))。 14、实时参数读取写入采用五部分地址循环使用的方式。 15、打开功能控制参数中,不显示余额或者不显示单价的功能时,显示到该页时自动跳过, 16、温压采集控制修改为只用压力采集周期及控制参数控制,先采集压力再采集温度。 17、配合硬件阀电报警电路变更,程序阀电电池检测逻辑做如下变更,AL端口配置为上拉输入,检测到AL下降沿后进入阀电检测逻辑,读取到AL电平持续拉低6s以上判断为阀电低电,如果6s以内AL电平由低变高并持续超过5s,则再检测OP、CL电平,如果都为0则为阀电掉电,阀门电池插回来如果触发了阀电检测流程,读取到报警线持续5s以上高则消除阀电低电掉电状态,也可以通过按键检测、分钟检测消除阀电低电掉电状态。 18、PC11引脚被用做阀电低电掉电输入信号了,休眠时不设置为模拟输入。 19、显示首页由余额单价修改为标况总量和瞬时。 20、检定模式退出方式:①按键②持续2小时无流量③介质变为天然气④8小时强制退出 。 21、阀电低电掉电状态未显示,已添加。 22、外电接入移除引起设备工作模式切换的时候,未将third_telecom_interface_para_g.in_com参数置0,导致模式切换后wifi标志仍然继续闪烁,已修复。 23、信噪比异常上报控制字用成声速异常的了,已修复。 24、设备端每次接到上报应答或者结束帧就清除一次报警字。 25、关于液晶屏显示double、float类型的数据有时会发生精度丢失的问题,可以将double或者float类型的数据转化为字符串存入字符数组中,然后根据需要取相应位数的小数进行显示,可以有效避免精度丢失问题。 26、系统报警控制字以及报警上报控制字默认为0x1320、0xF803,0x2007、0x07ff、0x16fd,0x0136、0x0001。 27、新增介质异常报警,介质异常的状态字通过显示屏上的T、K来展示,不展示在报警码中。 28、根据20230613会议讨论,压力上限由0.8倍测量范围上限调增为1.0倍。 29、关阀控制字出厂时,默认锂电低电警告性关阀,欠电强制性关阀,移除强制性关阀,阀电低电强制性关阀。 30、默认余额不足3、4级强制性关阀,余额不足目前只判断前四级,四级的报警、报警字以及状态字全部独立显示。 31、设置预留量,默认值为100元,单价默认值为1元/m3。 32、余额足够给授权的功能默认开,不需要控制。 33、新增环温剧变显示状态。 34、阀门电池状态去掉低电状态,只保留掉电状态,屏幕也只显示掉电状态。 35、阀门关阀原因字显示逻辑:如果只发生了警告性关阀,则只显示第一次发生的警告性关阀的ID,如果后续又发生了强制性关阀,则只显示第一个强制性关阀的ID。 36、新增高频脉冲以及余额参数修改报警及报警字。 37、去掉阀门丢失状态,归为阀门异常状态。 38、余额关阀的五级不足值改为扩大100倍。 39、状态字、报警字、报警控制字、报警上报控制字、关阀控制字采用上位机0508H~050CH,余额条件关阀采用0603H。 40、禁掉蓝牙显示标志。 41、未开户状态下发生强制性关阀也取消授权。 42、新增上位机给、取消阀门开阀授权的功能,控制码050DH。 43、小时、月、天记录的ID采用0X0111-0x0113,间隔记录的id采用原来的0x0101 44、modbus数据中余额单价之前一直给的0,一体阀版本按照实际余额单价给。 45、平台或者上位机设置累积量关阀的时候清除当前的累积量关阀状态。 46、关阀控制线MB引脚和OP引脚对调,连接线也需要对调。 47、modbus地址表新增新状态字的数据,并且按照实际含义一一映射到老的状态字上。 48、外电冻结间隔和上报间隔默认值改为1小时冻结一次,一天上报一次。 49、小数点处理方式同步为判断尾数是否是99然后加1的方式。 50、关于介质状态以及报警做出如下调整:声速在[0,300]或者 (500,∞)介质常态置01(其他),报警内容为介质异常,显示屏不显示T、K, 在(300,375]介质状态为02(空气),显示屏显示K,如果由天然气状态转变为空气状态,报警内容为拆表报警,在 (375,500]介质状态为03(天然气),显示屏显示T,复位20s内介质状态默认给未知,20s后按照实际的状态进行展示,且相关报警仅在开户状态下才会上报 。 51、删除声速小于300以及大于500默认调整为340的操作。 52、思筑新平台上发数据时表号正序上发。 V5.0.5.6 20230901 1、电池电压掉电时,存储重要参数函数只存储一次。 2、新增上位机设置以及查询通讯超时参数的功能。 3、压力数值明显异常的判断范围从0-2400改成50-2400. 4、修改上位通讯协议中上位机类型无法识别APP的问题; 5、调整蓝牙超时时间,无正常交互5分钟后自动关闭蓝牙。 6、OP、CL断线时不检测电池电压。 7、余额与单价的显示不绑定。 8、阀电检测逻辑改为每20s检测一次。 9、硬件版本号改为5字节。 V5.0.5.7 20240305 1、程序规格型号新增UFG621和UFG631,分别对应产品型号0x11、0x12。 2、修复上位机修改波特率后蓝牙连不上的问题。