[三菱] 梯形图简洁生成时间戳

发布时间 2023-07-13 11:48:12作者: sssfffsssfff

按项目经验所见到的时间戳有三种:

  1. 标准Unix时间戳字符串格式,需要使用数百行指令
  2. 简单年月日数字格式,需要上位按Uint16读取后再转换为字符串格式
  3. 简单年月日字符串格式,对于06月的处理是空格加6,需要上位读取后过滤空格

 

第一种是最可靠的 ,但不指望项目后期能看懂能修改且存储压力大,需要考虑一种简洁简短的方法

 这里使用9行生成了一个时间戳,思路如下(以12月为例)

  1. BCD指令将 D0_{[Uint16]12} 转化为 D10_{[Bin4]0,[Bin4]0,[Bin4]1,[Bin4]2}
  2. BCDDA将 D10_{[Bin4]0,[Bin4]0,[Bin4]1,[Bin4]2} 转换为 D20_{[ascii]0,[ascii]0},D21_{[ascii]1,[ascii]2}
  3. WTOB将 D21_{[ascii]1,[ascii]2} 拆开为 D30_{[ascii]#NA,[ascii]1},D31_{[ascii]#NA,[ascii]2}
  4. 判断拆分结果,如果首位D30等于32,说明这是个空格(ascii32),需要加16转换为字符0(ascii码48)
  5. 将本轮转换结果MOV到输出地址
  6. FOR循环下一个

 

BCD指令D7000->D7001示意 

 

实际输出效果