这个例子使用HslCommunication类库的三菱plc读写测试程序,所以在使用前,请安装这个组件。HslCommunication类库的作者功底扎实,其代码质量很高,是勇哥学习的标榜。同时作者有愿望和勇气为工业4.0做技术上的积累,这个高度让人汗颜,这里向作者表达真心的致敬。示例代码:using HslCommunication;
using HslCommunication.Profinet.Melsec;
using System;
using&nb
Fins指令是欧姆龙PLC的一种通讯帧方式的通讯方式,上位机可以借助于它实现读写PLC内存。这种Fins即可以基于以太网,也可以基于tcp,本文介绍的是tcp方式的fins。‘’
Fins command code:参考Fins通讯手册P81.@:Hostlink协议起始代码2.Unit No.:单元号,对应PLC内置串口或串行通讯单元设置的Hostlink号。3. Header code:在PC主机直连PLC的情况下,头代码为FA4.Response wait time:设置范围为0~F,单位为10ms,例如设置为2,则响应等待时间为20ms5.ICF、DA2、SA2:在PC主机直连PLC的情况下,固定为00。 SID:通常设置为006.Fins command cod
1.西门子和三菱的几个区别(上位只关心的通讯层面): 1. 西门子PLC通讯端口固定102,但是可以连接多个PC端(客户端),三菱PLC通讯端口可以自定义,最多好像8个,但是每个端口只能连接一个客户端; 2. 两者的读写指令类似,但是西门子在端口连接的时候,要做两个初始化指令交互后,才能正常读写处理; 如果中途有错误格式的指令,可能导致端口连接断开; 3. 三菱PLC主要是以字为单位读写的;西门子主要是以字节为单位读写; 所以三菱相邻两个地址相差16bit,西门子相邻两个地址相差8bit; 4
多重互锁指令是允许相互嵌套的,如下图所示:其中,编号并非是必须全部是唯一的,而是保证两两MILH之间不一样即可。也就是说,编号可以0,1,0,1这样嵌套使用下去。为了解释清楚多重互锁的意义,勇哥编写了下面的例程。这里我做了两把锁,编号为0,状态位为W100.00编号为1,状态位为W100.01如果我不导通W0.00的话,你会发现你直接导通w0.01是没有效果的。实际上,如果你不导通W0.00,那么直到第9步之前的任何一步都不会被执行。即使你人工导通1.07, 1.09也没用,MOV指导根本不执行
EtherCAT是目前工业以太网中一种主流的总线通讯协议,相比传统的工业以太网,有着众多突出的优点、应用简单是EtherCAT总线的一个显著特点。 概述EtherCAT是目前工业以太网中一种主流的总线通讯协议,相比传统的工业以太网,有着众多突出的优点、应用简单是EtherCAT总线的一个显著特点。 应用特点应用简单?!关于EtherCAT总线的应用具有以下几个特点:1)拓扑灵活——几乎支持任何形式网络拓扑结构2)线缆长度最大1000米,节点之间的线缆长度无需规划3
勇哥学了一段时间CP1H的指令后,突然有兴趣想做点东西。突然想到我学易语言、C#、python后第一个想到的肯定是做点歌软件。(用来点播本地的MTV音乐带搜索功能的小软件,因为勇歌的爱好就是在户外唱歌)。不过,点歌软件有大数据的处理、和互联网操作,cp1h是搞不了的,于是勇哥想到搞简单一点。我只需要利用单片写一段红外遥控的代码,用串口发给plc,plc收到后按我约定好的指令格式向计算机上的一段音乐播放器程序发送,音乐播放程序收到的指令包括: 下一首,上一首,单曲循环,连续播放。这个任务包括三个子
数据移位指令就是位操作指令,在C语言中,或者熟悉单片机编程,或者熟悉PC汇编语言的朋友都不会陌生。恰恰勇哥以上都比较熟悉。最早的程序员们,像386计算机这种pc的时代,为了让游戏速度更快,发明右移运算代替乘法的窍门,那时候勇哥还比较崇拜他们呢。换成在PLC里面,位操作似乎无所不在,全部指令的命令字都是以位来进行控制的。欧姆龙的输入输出IO通道都是按位操作的。WSFT 字移位由实验可以看到,D0开始的数据往D10方向移动了一个字。没有移动前指令执行后的效果SLD 左移一位将从 D4 到
16个变址寄存器(IR0--IR15)用于间接寻址,每个变址寄存器存储一个单独的PLC存储地址,该地址是在I/O存储区中一个字的绝对地址。用MOVR指令将一个常规数据区地址 16个变址寄存器(IR0--IR15)用于间接寻址,每个变址寄存器存储一个单独的PLC存储地址,该地址是在I/O存储区中一个字的绝对地址。用MOVR指令将一个常规数据区地址转换成它的PLC存储地址,并将该值写到指定的变址寄存器中(用M