台达PLC与单片机的通讯

2023-05-16

        最近由于工作需要用PLC与单片机通讯,以此用PLC来控制单片机,使单片机作为一个IO扩展模块来使用。这是第一次尝试自己写代码来使两个器件通讯,故在此做一下笔记,顺便巩固一下在这个过程中所学到的知识。

        本次使用的PLC型号是台达的DVP26SE11T,通过基于RS485的MODBUS协议连接单片机,使用MODBUS的RTU模式,把PLC作为主机,单片机作为从机。

一、首先需要把PLC的通讯和单片机的通讯设置一致,本次实验中的单片机的通讯格式为:波特率 115200、奇偶校验无、数据位 8、停止位 1 ,所以PLC的通讯格式也应设成相同,以下是PLC的通讯设置代码

 M1002:开启正向 (RUN 的瞬间’On’) 脉冲

D1120:COM2 (RS-485) 通讯格式设定

M1120:COM2(RS-485)通讯格式保持用,设置后变更 D1120 无效

D1129:COM2(RS-485) RS-485 通讯逾时异常设置 (ms)

M1143:COM2(RS-485)的 ASCII/RTU 模式选择 (Off 时为 ASCII 模式 On 时为 RTU 模式)

M1161:8/16 位处理模式 (On = 8 处理模式)

其中D1120的设置:

根据PLC的手册,D1120 是本PLC设定485通讯口通讯格式的寄存器,设定格式如下图:

​根据单片机的通讯格式 :波特率 115200、奇偶校验无、数据位 8、停止位 1 ,b15~b1应该为0000 0000 1100 0001,转化为16进制即为00C1,故D1120设置为16#00C1。

二、之后是控制接发数据,本实验直接读取和发送多笔数据,所以只用到H03(读取多笔字符(Word)装置)和H10(多笔字符(Word)装置数据写入) 两个功能码。这里需要注意,PLC与单片机的功能码需要通用,如果对功能码的定义不一样,则不能准确的发送接收数据。

 代码如下:

其中的MODRW 功能:MODBUS 读写数据

 接收数据代码解析:

S1:单片机作为从站,通讯地址为0X01,所以PLC作为主机通讯地址也需要设置为0X01,所以S1设置为16#0001(H0001);

S2:要接收单片机的多个点位,用到功能码H03(读取多笔字符(Word)装置),所以S2设置为16#0003(H0003);

S3:本次实验用到的单片机有16个输入,根据单片机的MODBUS协议,读取16个输入点位的地址为0X00FF,所以S3设置为16#00FF(H00FF)

S:因为PLC自带设置了MODRW指令读取的数据的寄存器(D1296~D1311),D1296~D1311所以这个数据用不上,可以随意设置一个空寄存器;

     在 ASCII 或 RTU 模式,PLC COM2 会将传送出去的数据储存在 D1256~D1295,而且回传的 数据会被储存在 S 操作数开始连续的寄存器中,并且自动将转换后的 Hex 数值后储存 D1296~D1311

N:读取的数据长度为1

写入数据代码解析:

S1:单片机作为从站,通讯地址为0X01,所以PLC作为主机通讯地址也需要设置为0X01,所以S1设置为16#0001(H0001);

S2:要接收单片机的多个点位,用到功能码H10(多笔字符(Word)装置数据写入),所以S2设置为16#0010(H0010);

S3:本次实验用到的单片机有16个输出,根据单片机的MODBUS协议,写入16个输入点位的地址为0X00FF,所以S3设置为16#00FF(H00FF)

S:把D50作为写入的寄存器,在D50内设置数值,即可控制输入;

N:写入的数据长度为1

三、最后是处理接法数据

       处理发送数据

    把K4M2000赋值给D50,这样通过控制M2000~M2015的值即可控制单片机的16个输出。例如假设要使单片机的Y4,Y8,Y11,Y15的LED灯亮灯(有输出),那么M2000~M2015的值需要分别为0001 0001 0010 0010,则K4M2000的值为4386(十进制),那么D50为K4386(二进制0001 0001 0010 0010),这样就可在PLC程序中通过控制M2000~M2015来控制单片机的Y1~Y16了。

        处理接收数据

    将MODRW指令通过功能码读到存在D1296里的数据赋值给K4M3000,这样M3000~M3015即可以表示X1~X16的值。例如当D1296的值为8481(十进制),那么K4M3000为K8481,M3000~M3015的值分别为 0010 0001 0010 0001,表示单片机板上的X1~X16的值分别为0010 0001 0010 0001,说明这时单片机板的输入状态为X3, X8, X11, X16的LED灯亮(有输入),其他点的LED灯灭(无输入),这样就可以通过M3000~M3015的状态来判断X1~X16的状态了。

四、综上所述,用PLC控制单片机的输入输出,使其作为一个IO扩展模块来使用是可行的。

 总结:

1.使用MODBUS协议来通讯时,两个通讯元件之间的通讯格式需要设置成一样;

2.通过MODBUS协议使两元件通讯时,功能码的定义一定要一致。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

台达PLC与单片机的通讯 的相关文章

  • plc无法跟计算机通信,无法与PLC通信

    首先 xff0c 先确定这个电缆是否有问题 xff0c 可以拿个之前可以通讯上的CPU试试 xff0c 如果电缆没问题 xff0c 建议把这个软件卸载重新安装 xff0c 不知能否帮到你 回答者 xff1a yf1234 新生 amp nb
  • ab plc软件_【原创】AB上位机FactoryTalk View的使用教程(上)

    点击 蓝字 发现惊喜 实现的目的 xff0c 应用的场合 本文以AB上位机FactoryTalk View SE为题讲一下该软件简单的入门使用方法 该上位机作软件在工厂中可以启到一个可视化的作用 xff0c 实时观察工厂自动化中的动态数据以
  • 三菱伺服驱动器示例_【案例】PLC触摸屏控制伺服电机程序设计

    摘要 xff1a 以三菱公司的FX3U 48MT ES A作为控制元件 xff0c GT1155 QFBD C作为操作元件 xff0c 直接控制三菱伺服电机的具体程序设计 伺服电机又称执行电机 xff0c 它是控制电机的一种 它是一种用电脉
  • PLC梯形图编程入门

    梯形图 xff08 LAD xff09 是PLC编程的最佳可视化语言 xff0c 它看起来非常类似于继电器电路图 xff0c 因此如果 你对继电器控制和电子电路有所了解的话 xff0c 那么学起来会非常容易 xff01 在这个教程中 xff
  • C# SerialPort 读写三菱FX系列PLC

    1 xff1a 串口初始化 com 61 new SerialPort 34 COM3 34 9600 Parity Even 7 StopBits One 2 xff1a 打开关闭串口 if com IsOpen com Close co
  • PLC中m法计算电机转速

    转载于 https www cnblogs com chenpan6227 p 11558715 html
  • PLC的自抗扰控制(ADRC)算法

    自抗扰控制算法 网上很多文章有理论推导和讲解 大家也可以关注韩京清教授的论文和书籍 这里就不赘述了 博途PLC ADRC自抗扰控制完整源代码可以参看下面这篇文章 博途PLC 1200 1500PLC自抗扰控制 ADRC 完整SCL源代码 R
  • ADRC/Matlab一步步实现跟踪微分器TD(附完整PLC测试代码链接)

    TD微分器的主要作用 就是安排过渡过程 产生跟踪信号和微分信号 滤除噪声 关于Adrc的理论分析不是本篇博客的重点 主要也是能力所限 相关理论大家可以看韩京清教授的论文 专栏有简单的学习笔记 感兴趣的同学可以看看 链接如下 ADRC自抗扰的
  • 继电器控制电路

    继电器控制电路 原理 控制方式 继电器种类 案例 原理 使用控制电器的触点 按钮 开关或继电器触点 控制用电器工作 控制方式 手动控制 触点通 断用人工控制 比如按钮 手动开关 自动控制 触点通断可以自动实现 如行程开关 继电器 继电器种类
  • S7-200SMART案例分析——步进顺控以及替代方案

    这一篇文章我们以一个非常简单的小例子来说明步进顺控的用法 以及优缺点 我们会使用三种方式来写这个小例子 思路都是一步一步执行程序 但是代码完全不一样 例子为顺序点亮三盏灯并且全部点亮后再依次熄灭 间隔时间我们假定1秒 然后循环往复 第一种方
  • 西门子PLC的常见的通讯方式

    1 PPI通信 T PPI协议是S7 200cpu最基本的通信方式 S7 200cpu的默认通信方式可通过原端口通信 西门子PLC是一种专为工业环境应用而设计的数字操作电子系统 可编程存储器 存储逻辑操作 顺序控制 定时 计数 算术操作等指
  • 西门子PLC学习笔记十-(计数器)

    S7 300 400的计数器一般占两个字节 是16位的 CPU最多可以使用64 512个计数器 计数器地址编号为C0 C511 1 S CUD 加减计数器 加减计数器波形图 2 S CU 加计数器 3 S CD 减计数器 4 三种计数器对应
  • 如何与西门子200 PLC建立连接

    更多关于西门子S7 200PLC内容请查看 西门子200系列PLC学习课程大纲 与西门子200 PLC建立连接很简单 分为以下几步 1 给S7 200PLC通电 按下图1 1所示连接PLC端口 然后给PLC供电 有直流24V和交流220V两
  • FPGA、PLC、STM32、单片机、计算机等概念间的关系、区别及各自的优缺点

    FPGA PLC STM32 Arduino 单片机 计算机等概念间的关系 区别及各自的优缺点 入门之初 对于标题所列各个概念总是含混不清的 这样一来 不知道自己应该从何学起 或者不知道自己想要实现的IDEA应该使用什么样的硬件系统最合适
  • S71200外围设备接线-输入接线

    S71200外围设备接线 输入端子接线 含NPN和PNP 传感器接线 作为一个PLC的初学者 我觉得第一件事请并不是学习什么TIA Portal软件或者编程指令 而是了解PLC的系统参数和外围设备接线 上面的一张文章 我通过图文的方式简单讲
  • 西门子S7-200PLC的自锁

    自锁 百度 交流接触器通过自身的常开辅助触头使线圈总是处于得电状态的现象叫做自锁 在通常的电路中 按下开关 电路通电 松开开关 电路又断开了 一旦按下开关 就能够自动保持持续通电 直到按下其它开关使之断路为止 这样的电路 称为自锁电路 置位
  • 西门子PLC的编程工具是什么?

    西门子PLC编程工具主要有下面这几个 1 STEP 7 Simatic Manager STEP 7或者Simatic Manager是西门子PLC编程最常用的软件开发环境 它是一款强大的集成开发环境 可以用来编写 调试PLC编程代码 还可
  • (转发)西门子S7-1200PLC之间TCP通信实例步骤

    1 软件组态 新建两个CPU 在组态界面的网络视图手绘连接两个PLC的以太网口 如下 2 在两个CPU以太网口的属性中设置IP地址 设置同一网段 方便调试 3 在PLC 1程序块中添加个背景数据块 新建接收数组跟发送数组 以方便存放接收或发
  • 将 PLC Siemens S7-1500 连接到 SQL Server 数据库

    连接指南是 我跟踪指南并做了很多事情 PLC和SQL服务器之间的连接是ok 我已经成功登录SQL了 I can insert到桌子上 update 并执行store procedures 但是当我运行select查询我不知道如何检索数据和r
  • TwinCAT 3:写入文件

    我想从 PLC 中导出一些数据 方法是将其写入文本文件并将其保存到 USB 记忆棒中 我设法创建了文本文件 但我无法写入任何内容 我在以下代码中使用 TwinCAT 标准库中的函数 PROGRAM P WriteFile VAR nStat

随机推荐

  • 【正点原子】手把手教你学FreeRTOS-04

    FreeRTOS的中断配置是一个很重要的内容 xff0c 需要根据所使用的MCU来具体配置 重点 xff1a 不同的MCU所在FreeRTOS的配置是不一样的 xff0c 当你使用了其他芯片 xff0c 配置就有所不同了 xff0c 不要固
  • 千锋教育+计算机四级网络-计算机网络学习-01

    目录 课程链接 最早的广域网 计算机网络发展阶段 计算机网络的定义与要点 英文单词网络术语与解释 计算机网络分类 广域网技术 城域网 局域网 个人局域网 五种基本的网络拓扑结构 误码率 电路交换网特点 分组交换 交换方式 TCP IP协议族
  • Keil + STM32学习嵌入式数据结构-01

    视频链接 初识数据结构 xff0c 十天搞定嵌入式数据结构 哔哩哔哩 bilibili 课程目的 学会嵌入式经常使用的数据结构 具备基础知识 具有C语言基础 xff08 结构体 指针 内存 xff08 malloc xff09 具有数据结构
  • 【网络】nmcli 网络管理工具|ip命令|ethtool 命令|centOS 8 重启网络服务 / 重启网卡

    目录 nmcli 命令 前提 重启网络服务 重启网卡 实例 nmcli输出说明 3种网络配置方法 nmcli的命令参数 Tips ethtool 命令 IP命令 添加网卡到配置文件 Linux系统怎么查看网卡的UUID nmcli 命令 原
  • 正点原子【第四期】手把手教你学 Linux之驱动开发篇-01

    学习目的 了解驱动开发和应用开发的过程 xff0c 具有一定的基础就行 第一讲 xff1a linux驱动开发与裸机开发区别 刚开始听不懂很正常 xff0c 等之后学了一点你就会知道它说啥了 第二讲 xff1a 字符设备驱动开发基础 字符设
  • 普中科技手把手教你学ESP32--基于MicroPython-02

    第四讲 xff1a LED灯实验 MicroPython函数使用 本来需要加入machine 的 xff0c 但是我引入了form machine import Pin就可以直接省略了 machine是一个模块 xff0c Pin是mach
  • 千锋教育嵌入式物联网教程之系统编程篇学习-05

    目录 无名管道 无名管道创建 pipe 管道重点问题 无名管道读写规律 fcntl设置文件阻塞特性 文件描述符概述 文件描述符的复制 dup和dup2 dup函数 dup2 无名管道 进程间的通信 xff0c 大部分都是使用内核空间进行操作
  • 黑马程序员-Linux系统编程-01

    课程链接 01 Linux命令基础习惯 Linux系统编程 哔哩哔哩 bilibili 课程重点笔记 01 linux命令基础习惯 终端 终端 xff1a 一切输入 输出的总称 xff0c 因此终端并不是一定指的是命令行 xff0c 只要是
  • RT-Thread初识学习-04-GPIO操作

    前言 xff1a 在裸机开发和FreeRTOS开发过程中 xff0c 我们使用的GPIO操作函数都是由stm32库函数提供 xff0c 如GPIO SetBits GPIO Init GPIO结构体对端口进行初始化 模式 速度 管脚号等操作
  • RT-Thread初识学习-05-设备操作

    IO设备模型 IO设备的理解 xff0c 比如我们使用了一款传感器 xff0c 但是RTT并没有提供软件包给我们使用 xff0c 并且我们不需要使用HAL库进行开发 xff0c 而是想使用RTT给我们的函数 xff0c 比如下面的rt de
  • ROS学习记录(一) Plugin插件

    前言 xff1a 最近在学习无人驾驶路径规划和ROS的一些基础理论 xff0c 过程中遇到了一些问题 xff0c 写这个系列记录一下个人的学习过程 遇到这个问题的初衷是看了小巨同学一篇帖子 使用自定义RRT 全局规划器建图导航 文中提到了向
  • 【学习记录】【Tpro and R88】[D8协议]遥控器与接收器的配对(简易)可直接操控电机和舵机

    Tpro图 R88图 一 两者配对 xff08 可以直接操控电机和舵机 xff09 步骤1 遥控器调参 xff0c 进入配对模式 先按 2再按1 xff08 各一下 xff09 xff0c 再旋转3找到相应页面Internal RF xff
  • 【Linux】刚烧录完(相当于是第1次连接),VNC树莓派无法连接

    文章目录 解决方法如下 xff1a 1 在Terminal中输入 96 vncserver 96 2 在Terminal中再输入 96 sudo raspi config 96 3 输入连接即可 刚烧录完 xff0c 然后用 ifconfi
  • APP连接ESP8266——采用AT指令

    1 主要实验设备及器材 1 1一块ESP8266 xff08 如图1 xff09 图 1 ESP8266模块 1 2 一个USB转TTL模块 xff08 如图2 xff09 图 2 USB转TTL模块 2 测试ESP8266模块 2 1连接
  • 【shell】shell字符串分割|文件分割|剪切|截取

    目录 一 字符串分割 1 awk分割 xff08 按位字节 分隔符 通配符分割 xff09 print 按列和字节分割截取 split 按分割符分割截取 按通配符分割 2 利用shell 中 变量 的字符串替换成空格分割 3 设置分隔符 x
  • 【解决】Avoid mutating a prop directly since the value will be overwritten whenever the parent compon...

    完整报错信息 xff1a Vue warn Avoid mutating a prop directly since the value will be overwritten whenever the parent component r
  • MAC安装JD-GUI反编译工具

    JD GUI 是一款反编译工具 本文介绍的是 JD GUI的安装方式 xff0c very easy 首先打开官网 xff1a http java decompiler github io 无法访问的朋友可以私信我要jar包 当然你也可以去
  • 转载:配置darknet_ros实现yolo检测

    来自第三届华南农业大学人工智能协会 xff1a 会长部 麦彦恒出品 配置darknet ros实现yolo检测 M朗拿度的博客 CSDN博客
  • AUTOSAR(一)基本概述

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 目录 文章目录 一 什么是AUTOSAR xff1f 二 为什么要使用AUTOSAR xff1f 三 AUTOSAR版本 一 什
  • 台达PLC与单片机的通讯

    最近由于工作需要用PLC与单片机通讯 xff0c 以此用PLC来控制单片机 xff0c 使单片机作为一个IO扩展模块来使用 这是第一次尝试自己写代码来使两个器件通讯 xff0c 故在此做一下笔记 xff0c 顺便巩固一下在这个过程中所学到的