ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

LabVIEW与PLC交互

2026/9/4 14:24:03 拓冰建站 浏览量
LabVIEW与PLC交互 一、写法写命令立即读出写命令后立即读出在同一时间不能有多个地方写入因此需要在整个写入后读出过程加锁项目中会存在多个循环并行执行该VI轮询PLC指令在锁内耗时就是TCP读写的实际耗时为5-8ms在主VI六个循环里统计的耗时是读取PLC寄存器的整个耗时为10-40ms因此可以得出结论由于锁会让TCP读写的代码块变为同步因此如果越多地方在同一时操作PLC寄存器会增加整体耗时。在项目中轮询信号应该只在一个地方批量把寄存器里的值读取出来。此处要注意锁内耗时是pc和plc一次tcp交互的真正耗时锁外耗时是包括了锁排队的耗时因此锁内耗时如果久的话可能是plc后台服务因为某种原因慢了常见的有连接了太多pc。锁内耗时可以通过改变协议增加plc或者新增代理的方式解决。锁外耗时可以通过降低轮训线程批量读写的方式解决。写法1以写命令立即读出用一个地方批量读取其他地方间隔写入下面用fins udp进行测试读取是可重入写入是不可重入在操作tcp时加锁工况1一个循环批量轮询PLC信号间隔1ms一个循环读取字符串(INT数组)间隔2000ms32个循环4s内随机间隔写入一个寄存器轮询的耗时大概为20-30ms写入的时间也大概为20-30ms对应工况2一个循环批量轮询PLC信号间隔1ms一个循环读取字符串(INT数组)间隔1ms32个循环4s内随机间隔写入一个寄存器轮询的耗时大概为20-50ms写入的时间也大概为20-50ms耗时相对第一种加长增加一个读取条码的循环后耗时增加工况3一个循环批量轮询PLC信号间隔1ms一个循环读取字符串(INT数组)间隔1ms32个循环写入一个寄存器间隔1ms轮询的耗时大概为20-50ms写入的时间也大概为20-50ms耗时相对第一种加长相对第二种无变化结合工况2可以得出write.vi的间隔减少不影响read.vi的耗时因此轮询的地方越少越好工况4一个循环批量轮询PLC信号间隔1ms一个循环读取字符串(INT数组)间隔1ms32个循环写入一个寄存器间隔1ms增加8个循环轮询一个寄存器间隔1ms轮询的耗时大概为150-200ms写入的时间也大概为150-200ms耗时大大加长结合工况2和工况3可以得出read.vi的间隔减少会影响read.vi的耗时因此轮询的地方越少越好工况5一个循环批量轮询PLC信号间隔1ms一个循环读取字符串(INT数组)间隔1ms32个循环写入一个寄存器间隔1ms增加8个循环轮询一个寄存器间隔2000ms轮询的耗时大概为20-50ms写入的时间也大概为20-50ms耗时相对第一种加长和第二种相当结合工况3和工况4可以得出read.vi的间隔减少会影响read.vi的耗时但是间隔较长的话影响会比较小因此轮询的地方越少越好工况5一个循环批量轮询PLC信号间隔1ms一个循环读取字符串(INT数组)间隔2000ms32个循环写入一个寄存器间隔1ms增加8个循环轮询一个寄存器间隔2000ms轮询的耗时大概为20-50ms写入的时间也大概为20-50ms耗时相对第一种加长和第二种相当但是读取条码的耗时会加长30-158ms结合工况5可以得出read.vi的耗时需要看同一时间有多少在执行由于锁耗时会浮动较大二、测试PC和PLC交互的耗时在于①交互的时间多个PC操作一个PLC的时候可能会减慢②同一个程序多个地方读写锁的耗时PC执行一条读/写指令的耗时是相同的批量读1000个地址和读1个地址的耗时是一样的多个地方在同时读写会因为锁的原因实际执行是按顺序执行的也就是说同一时间很多地方在读/写的话会存在先后执行关系以下日志实际是6个同时写入注液孔定位1X_PC先写完注液孔定位2Data_PC最后写完总耗时是411以50ms轮训PLC拿到复位信号大概在30ms以内说明PC和PLC彼此响应的时间都比较快三、交互原则1、所有地址规划在一个较小的范围内以免返回字节过多测试1000个一次读取和一次2、尽量减少轮询的地方最好只有一个循环在轮询通过队列来触发流程3、最简交互握手交互①PLC→PC将结论置0将握手赋值非0具体值可以再规划例如可以按照工位触发工位1就将握手赋值1等等②PC→PLC轮询握手不为0时把值缓存下来并将握手赋值为0数据交互③PC→PLC执行正常流程把所有该发送的数据尽量调整至一条指令发送由于大部分PLC不支持随机写所以要求数据尽量连续四、笔记欧姆龙PLC的一个D寄存器数据存储器是 16位bit 的。单位换算关系常见出现位置字 (Word)1 Word 2 Bytes 16 bitsSysmac Studio、FINS命令手册中的读取字数参数字节 (Byte)1 Byte 8 bits以太网帧长度、TCP/IP报文大小、部分上位机驱动的Buffer定义位 (Bit)1 Bit 1/16 Word布尔型变量、状态标志三菱MC协议一次最多读960个int16类型的寄存器数据欧姆龙FINS协议一次最多读1000个int16类型的寄存器数据modbus协议一次最多读120个int16类型的寄存器数据