PLC读取PC文件(汇川PLC读取电脑上的文件)
qq群里老被人吊,看不起玩C#的,我只是业余看看下位机,发现汇川PLC是真的香,支持G代码,带的ecat轴数也多。就是新的购买渠道不行。 学习资料还有些欠缺。比如PLC去读取电脑上的G代码文件。每次拷贝下去很麻烦。下面我写个帖子:PLC控制电脑在D盘:打开文件,读写文件,删除文件,关闭文件。
常用函数库名称:SysFile/SysDir/File Access
1打开文件:
sysfile和systype这2个文件必须要装
高级》sysfile 基础文件
双击》再装个systype 基础数据类型
这2文件装好后,就可以准备干活了,来看下函数: ST空白行处》右击》输入助手
1:输出的是结构体,你就当她是对象,潘金莲来了(hFile)。。。
234:这3个是输入参数:2文件路径,3文件操作模式,4错误日志
这里要注意:文件路径不能有反斜杠\ 操作模式要记住名字,一会要用,错误日志是用来判断错误的。
在plc里写ST程序:
// PC端:打开文件
IF key THEN // key是使能,调用方法前加个 阀门keyhFile := SysFileOpen(szFile:='D:/cnc/weixiudiangong.txt' //返回的是文件对象,szFile是文件路径, am:= ACCESS_MODE.AM_WRITE_PLUS //plus是找不到文件的话,会新建这个文件,再打开, pResult:= udiopenerror1 // 这个是错误日志,用于判断文件操作是否遇到错误 );;
ELSE;
END_IF// SysFileOpen(szFile:= , am:= , pResult:= )
plc程序和C语言最大的区别就是,plc的函数全往main里面扔,靠bool标志位控制函数是否运行,看下效果:
和预想的一样,在我笔记本D盘新建了,维修电工的文件。
文件操作模式:追加,读,写
2读取文件:
// 中文有bugIF Test THEN szTestLine := 'This is the first line.';hFile := SysFileOpen(szFile:='D:/Test/Test.txt', am:=ACCESS_MODE.AM_WRITE_PLUS, pResult:=ADR(udiOpenError1)); IF hFile <> RTS_INVALID_HANDLE THEN//udiPosError := SysFileGetPos(hFile:=hFile, pulPos:=ADR(udiPos));udiWrite := SysFileWrite(hFile:=hFile, pbyBuffer:=ADR(szTestLine), ulSize:=INT_TO_UDINT(LEN(szTestLine)), pResult:=ADR(udiWriteError1)); udiPosError2 := SysFileSetPos(hFile:=hFile , ulOffset:= 0 );udiRead := SysFileRead(hFile:=hFile , pbyBuffer:=ADR(szReadLine) , ulSize:=SIZEOF(szReadLine) , pResult:= udiWriteError1); udiCloseError1 := SysFileClose(hFile:=hFile);END_IFTest:=FALSE;
END_IF
PROGRAM PLC_PRG
VARszTestLine: STRING(INT#128);szReadLine: STRING(INT#128);hFile : RTS_IEC_HANDLE := RTS_INVALID_HANDLE;udiOpenError1: RTS_IEC_RESULT;udiPosError: UDINT;udiPos: __XWORD;udiWrite: __XWORD;udiWriteError1: RTS_IEC_RESULT;udiCloseError1: UDINT;Test: BOOL;udiPosError2: UDINT;udiRead: __XWORD;udiReadError1: POINTER TO RTS_IEC_RESULT;
END_VAR
解决bug:
// 中文
// 读取文件 电脑D盘 DGcnc文件(电工文件)
IF dk打开文件 THEN//打开文件 DGcnc文件(电工文件) ACCESS_MODE.AM_READ_PLUSDGcnc := SysFile.SysFileOpen(szFile:='D:/cnc/DGcnc.txt' , am:=ACCESS_MODE.AM_WRITE_PLUS , pResult:=rz错误日志 );;IF DGcnc <> RTS_INVALID_HANDLE THEN // 不是-1时(文件打开成功)// 读
// SysFile.SysFileRead(hFile:=DGcnc , pbyBuffer:= ADR(rxbuff) , ulSize:=200 , pResult:= rz错误日志 );// 写len长度 :=SIZEOF (szTestLine);szTestLine := '维修电工到此一游!';SysFile.SysFileWrite(hFile:= DGcnc , pbyBuffer:= ADR( (szTestLine) ), ulSize:=INT_TO_UDINT(LEN(szTestLine)), pResult:= rz错误日志 );// 写追加// 删// 关闭文件SysFile.SysFileClose(hFile:= DGcnc);;ELSERETURN;//打开文件失败,退出END_IF;
ELSE;
END_IF
还得编码转换
//=======================================================
am:= ACCESS_MODE控制文件的操作模式:plus是写不了就新建这个文件
高级》file access
双击》再装个cmperrors
双击》再装个sysdir 这个是文件目录管理(视频是这么说的)
双击 SysFile
File Access是同步的,用这个。SysFile是异步的,且不能使用反斜杠。
access需要实例化,sysfile直接拖入就行,资料可能有错,sysfile不能使用反斜杠 \
提示无该变量:添加SysTypes Interfaces函数库,还有CmpErrors,3.3.1.40
旁击
全局变量,没有的话,按提示新建。
//文件路径
wenjian文件路径 : string := 'D:/cnc';
1开始调用库:
空行》右击》输入助手》
双击
函数就出来了
PROGRAM PLC_PRG
VARszTestLine: STRING(INT#128);szReadLine: STRING(INT#128);hFile : RTS_IEC_HANDLE := RTS_INVALID_HANDLE;udiOpenError1: RTS_IEC_RESULT;udiPosError: UDINT;udiPos: __XWORD;udiWrite: __XWORD;udiWriteError1: RTS_IEC_RESULT;udiCloseError1: UDINT;Test: BOOL;udiPosError2: UDINT;udiRead: __XWORD;udiReadError1: POINTER TO RTS_IEC_RESULT;
END_VAR
IF Test THEN szTestLine := 'This is the first line.';hFile := SysFileOpen(szFile:='D:/Test/Test.txt', am:=ACCESS_MODE.AM_WRITE_PLUS, pResult:=ADR(udiOpenError1)); IF hFile <> RTS_INVALID_HANDLE THEN//udiPosError := SysFileGetPos(hFile:=hFile, pulPos:=ADR(udiPos));udiWrite := SysFileWrite(hFile:=hFile, pbyBuffer:=ADR(szTestLine), ulSize:=INT_TO_UDINT(LEN(szTestLine)), pResult:=ADR(udiWriteError1)); udiPosError2 := SysFileSetPos(hFile:=hFile , ulOffset:= 0 );udiRead := SysFileRead(hFile:=hFile , pbyBuffer:=ADR(szReadLine) , ulSize:=SIZEOF(szReadLine) , pResult:= udiWriteError1); udiCloseError1 := SysFileClose(hFile:=hFile);END_IFTest:=FALSE;
END_IF
文件操作篇:3、基础内容-文件操作函数 - 中型PLC - 汇川技术官网-水滴社区 - Powered by Discuz!
库核对老出错,多装了库,自己去这网页下载文件。
PLC读取PC文件(汇川PLC读取电脑上的文件)相关推荐
- PC连接汇川PLC方法
1.左侧目录树->Device(Am401-cpu1068TP/TN),如下图 2.通讯设置,有网线连接和串口线:连接.网线连接时候,汇川PLC默认ip地址是192.168.1.x,x为某个数, ...
- 电脑html文件存到手机,怎样把电脑上的文件传到手机上【技巧详情】
电脑和手机这两种电子产品,都是我们日常所使用最广泛,以及最频繁的产品,电脑和手机这两种产品拥有自己独特的功能,各有各的用处.它们俩在操作过程中都是不可替代的,然而有的时候,由于种种需求,我们需要将电脑 ...
- win7电脑上的文件打开方式选错了怎么办
使用电脑的过程中总会遇到各种各样的问题,就有win7用户跟小编反应说自己一不小心选错了文件的打开方式,导致该文件再也打不开了,win7电脑上的文件打开方式选错了怎么办呢?那针对这个问题,小编就给大家讲 ...
- 汇川plc可以用C语言吗,PC与汇川PLC_ModbusTCP_Test
文件名大小更新时间 PC与汇川PLC_ModbusTCP_Test\PC与汇川PLC_ModbusTCP_Test\ModbusApiTestForVb\.vs\ModbusApiTestForVb\ ...
- CK-FR208-EC与汇川PLC配置走EtherCAT通讯指南
CK-FR208-EC与汇川PLC配置走EtherCAT通讯指南 CK-FR208-EC是一款支持标准工业Ethercat协议的多通道工业RFID读写器,读卡器工作频率为13.56MHZ,支持对I-C ...
- 汇川PLC和PLC之间ModebusTCP通讯
目录 一.AM402做主站和H3U通讯 1.Modebus主站中组态配置 2.读从站寄存器配置 3.写从站寄存器配置 4.程序中使用对从站读写操作的寄存器值 (1)I/O映射中地址关联 (2)创建自定 ...
- CK-GW06-E01与汇川PLC的MODBUC TCP通信
准备阶段: CK-GWO6-E01网关 POE交换机 网线 汇川PLC编程软件 1.打开汇川PLC编程软件AutoShop 新建工程,选择对应的PLC型号,点击确定,本次以H5U-A8型号为例. 选择 ...
- 使用OPCServer通过Modbus协议对汇川PLC进行工业数据采集
在现有的文章中较少提及对汇川PLC的数据采集,本文通过个人实际测试结果进行描述 Los geht's! 具体描述: 1.使用的汇川PLC型号为:H3U-1616MT-XP 2.OPCServer软件中 ...
- 汇川PLC相关与 CK-FR08-E00 关于 modbus-tcp
汇川PLC(AC801-0221-U0R0)相关与 CK-FR08-E00 关于 modbus-tcp 通信配置指南 1.新建工程,选择对应的plc型号 2.点击网络组态,找到modbus-tcp双击 ...
- C#使用Modbus协议读写汇川PLC的M区寄存器(基本接口封装)
C#使用Modbus-TCP协议读取汇川PLC,Modbus读写是按照MW地址来处理的 [寄存器单位是字WORD,占用两个字节,类似于C#中的ushort(UInt16)],实际测试发现字符串是按照字 ...
最新文章
- 面板——卡片面板、常规折叠面板、手风琴折叠
- 数论-扩展中国剩余定理
- 简单了解Python网络爬虫
- pythonfor循环100次_以写代学: python for循环 range函数 xrange函数
- pandas.describe()参数的意义
- AI实战:基于AdvancedEAST的自然场景图像文本检测算法
- [BZOJ4542] [Hnoi2016] 大数 (莫队)
- Python 爬虫经常需要睡眠防止被封IP time sleep
- 实现微信摇一摇部分功能
- 基于JWT前后端token认证
- PHPExcel存放多个sheet报错: Invalid parameters passed.
- django+xadmin在线教育平台慕学网(一)
- Vivado IP核fifo使用指南
- 用计算机怎么算加权标准差,Tableau,如何计算加权标准差
- arduino 超声波测距原理_基础教程10 Arduino 超声波测距
- matlab 画表格函数,excel表格数据曲线图模拟函数-如何在excel中绘制函数图像?
- 如何当好IT项目经理
- js实现video视频标签试看6分钟
- upc PinkRabbit写情书(枚举)
- 菜鸟小超超开发小记(一)
热门文章
- Google 真的抄百度了吗?
- Sql 日期操作 获取年月日等
- 【图】【热传】安全漏洞破解的奇迹
- 面试经历---UC(2016年01月11日下午面试)
- 华为2016年精英挑战赛总结
- 收集的SQL Server性能相关资料
- 路径正确下,Eclipse读取txt文件仍失败
- 【Linux 内核 内存管理】物理分配页 ⑦ ( __alloc_pages_slowpath 慢速路径调用函数源码分析 | 判断页阶数 | 读取 mems_allowed | 分配标志位转换 )
- java富甲天下_富甲天下之激斗三国
- edge浏览器如何把网页放到桌面_edge浏览器怎么把网页放桌面 - 卡饭网