NJ/NX将数据写入到SD中,保存为CSV文件格式

NJ/NX将数据写入到SD中,保存为CSV文件格式

实验时间:2022.10.31

实验人员:钱少青

实验器材:NJ501-1300(Ver:1.12),HMC-SD291(2G),SysmacStudio(ver:1.52)

实验目的:将Byte、Int、Real、String等类型的数据写到SD卡,保存为CSV文件可在Excel中打开

实验步骤:

1. 编码与解码

NJ/NX将数据写入到SD中,保存为CSV文件格式_第1张图片

​ 当发送的是字符串的数组时,PLC默认是以UTF-8编码后将对应的16进制数写入到文件中。如果发送的是Byte、Int、Real等数字类的数据时,会直接将其16进制写入到文件中,这个过程不存在编码码的问题。但是在电脑中使用软件打开时显示的均为文本格式,软件会根据设定的编码格式对文件中的16进制数据进行解码。比如Byte类型的1122写入到文件后仍然是1122,但是软件用UTF-8或者其他编码类型解码时,1122可能显示就是乱码。

​ 在使用Excel打开时,默认的解码方式为ASNI。如果写入的字符串是ASCII码表中可以查到的,那么常用的编码类型都可以直接解码。如果是汉字等字符,需要先将文件的编码类型改为ASNI后才能正常显示,否则是乱码。

​ 在本次实验中为了解决数字类数据直接写到CSV文件中显示乱码的问题,在PLC先将数字类的数据全都转换为字符串的格式表示,这样在Excel中显示时就不会出现乱码的情况。

###2. 本次实验主要包含两个部分:

  1. SD卡写入指令FileWriteVar的基本使用

    • 保存路径的指定;
    • 是否需要覆盖已经存在的文件;
  2. 将Byte、Int、Real等数字型数据转换为字符串格式才能在Excel中显示,String类型不需要

    • 先用** _TO_STRING指令将数字类型转换为字符串类型;
    • 再用insert指令将字符串拼接为CSV文件需要的格式;
      • 单元格之间用英文的逗号“,”隔开;
      • 换行用回车、换行(0D0A Hex);

程序编写:

本次实验将Byte类型的数组[11, 22, 33, 44, 55, 66, 77, 88] 以2行4列写入到CSV文件中,路径为SD卡的根目录test.csv。

变量表:
NJ/NX将数据写入到SD中,保存为CSV文件格式_第2张图片

程序:OverWrite设置为True,如果文件里有重名的文件将会被覆盖

NJ/NX将数据写入到SD中,保存为CSV文件格式_第3张图片

NJ/NX将数据写入到SD中,保存为CSV文件格式_第4张图片

实验现象:

将写入的数组元素数Length设置为8,每行数据的个数Column设置为4,触发WriteToSDCard_Ex执行SD打卡写入,在SD卡中可以看到生成的test.csv文件,如图:

NJ/NX将数据写入到SD中,保存为CSV文件格式_第5张图片

将文件复制到桌面后打开,显示内容如下:

NJ/NX将数据写入到SD中,保存为CSV文件格式_第6张图片

注意事项:

  1. PLC发送String类型的数据数据时编码类型为UTF-8,EXCEL打开CSV文件时默认的格式ANSI,所以需要将SD中的文件编码转换为ANSI。可以先用记事本打开另存为格式选ANSI;
  2. 如果不将数字型的数据转换为字符串发送是没有办法在EXCEL中显示的,可用NotePad++安装HexEditor插件显示十六进制的数据;
  3. CSV中单元格以英文","逗号隔开,换行用回车换行,转移字符为”$r$l“;

你可能感兴趣的:(OMRON,excel)