西门子PLC s7-1200学习之路

2023-11-14

1 Introduction

最近因为一个项目需要使用西门子PLC,买了一个入门级的PLC s7-1200,并完成了一个PLC和PC通过TCP进行通信的小程序,为了防止活干完了,内容就全忘了,所以用一个笔记进行梳理和总结。入门一种语言,需要回答新手的几个问题,这个笔记按照回答的方式梳理。

2 问题

2.1 PLC是什么,什么时候用,要怎么选?

根据[1],PLC可以替代继电器功能并完成复杂的控制功能。个人感觉功能上来看,PLC、DSP、单片机和FPGA之间的界限越来越小,只是各有侧重。
PLC因为基于梯形图这种数据流编程,安全稳定、开发难度低,点位多并且拓展灵活,适合大型的电气系统开发。主要还是开发简单,现场调试也方便。
S7-1200和smart 200的集成度较高,也更便宜。s7-1200存储区更大、集成了网口。其他的那些大家伙太贵了。

2.2 PLC的开发环境?

按照[2]搭建开发环境,开始第一个程序。接下来2倍加速把[5]过一遍,观其大略。

2.3 硬件和程序怎么交互?

PLC做好了数据块和硬件IO的映射。
在这里插入图片描述
具体可以在设备组态中查看和配置。
在这里插入图片描述

2.4 梯形图编程

  • 问题1:梯形图上传递的是什么?类似的LabVIEW图形化语言的区别是什么?
    树干上只传递0,1变量,和电路类似也有并联和串联。LabVIEW数据流上是啥都可以传递。
    在这里插入图片描述
  • 问题2:一般变量怎么修改?
    既然梯形图不是真正的数据流编程,那一般变量只能通过函数进行修改。
  • 问题3: 一般变量怎么创建?有全局变量、局部变量之分吗?
    我们来看看函数中的变量,main函数中的变量和普通函数变量,只差了一个static,这不就是c语言中的静态变量嘛。那么c语言中的局部变量,常量都可以在梯形图编程中找到对应的变量了。
    在这里插入图片描述
    在这里插入图片描述
    PLC个人理解是典型的面向过程编程,那么显然少不了全局变量啊。
    除 了 I O 映 射 的 数 据 之 外 , 我 在 学 习 P L C 的 时 候 , 视 频 老 师 经 常 用 一 个 中 间 寄 存 器 M 10.0 , M 100.0 \color{red}{除了IO映射的数据之外,我在学习PLC的时候,视频老师经常用一个中间寄存器M10.0,M100.0} IOPLCM10.0,M100.0
    从c语言的角度出发,这么干非常危险, 最 好 不 要 去 这 么 直 接 操 作 内 存 啊 \color{red}{最好不要去这么直接操作内存啊} ,可以用全局变量。
    再结合PLC的在线工具,可以像KEIL 编程一样,查看和改写全局变量的数据。
    在这里插入图片描述
    到这里,我们发现梯形图和开发嵌入式单片机差不多嘛。
  • 问题4: 如何创建函数?
    有三种函数:OB、FB、FC。
    在这里插入图片描述
    FB和FC的差距,差在有没有static。FB有static变量,每个FB的function内部的static 变量都有单独的存储空间,互不干涉。
    在这里插入图片描述
    F C 类 似 c 语 言 中 的 功 能 函 数 ; F B 可 以 从 电 气 模 块 化 设 计 的 角 度 理 解 。 \color{red}{FC类似c语言中的功能函数;FB可以从电气模块化设计的角度理解。} FCcFB
    根据[3],OB类似于c语言中的线程(thread),所以梯形图虽小,也是五脏俱全。搞清楚梯形图编程的主干,编程完全是一个熟练度的问题了。

OB块主要用于程序循环、启动、延时中断、循环中断、硬件中断、HSC中断、诊断错误和时间错误八大事件。
OB块还有两个属性是编号和优先级,优先级越高,中断级别越高。在同样的优先级别,OB编号越小,越优先执行。

  • 问题5:数据结构有哪些?
    在这里插入图片描述
  • 问题6:库函数的能力?
    一个编程语言的强大,和官方的库函数以及社区的强大分不开。梯形图编程更贴近硬件,编程特点决定了,只使用官方库基本上满足需求。更复杂的需求估计只能换工控机这类设备了。
    常见电气项目中的主要功能使用起来非常方便。
    在这里插入图片描述
    - 问题7:数据怎么读写?如何进行数据读写保护?
    数据读写,两种方法:1)在梯形图主干上,通过触点(常开触点、常闭触点等)作为输入,用线圈作为输出;
    2)使用函数,进行数据操作;
    对于普通的数据类型,因为梯形图限定了程序是单线程,不会出现读写死锁的问题;
    对于IO输出,如果出现在不同的地方写入,就是PLC中的双线圈问题[4]。
    解决的方法就是两个支路进行并联,结合一些中间变量(寄存器)。
    在这里插入图片描述

2.5 怎么在线查看?

在线查看重点关注两个方面的内容:变量的变化?过程编程中具体过程状况?
通过梯形图,可以看到从上至下,从左到右的(0,1)执行变化,反应程序的过程状态,以及中间变量数值。可视化程度很高,和嵌入式开发很接近。
在这里插入图片描述
在数据DB区可以看到全部变量的变化情况,很方便。
在这里插入图片描述

References

[1] PLC原理及应用.刘星平 https://e.jd.com/30690778.html
[2] S7-1200零基础入门到精通 侯俊霞 https://www.bilibili.com/video/BV11A411u7n2?p=7
[3] https://www.zhihu.com/search?type=content&q=%E8%A5%BF%E9%97%A8%E5%AD%90%20OB
[4] https://www.zhihu.com/search?type=content&q=plc%20%E5%8F%8C%E7%BA%BF%E5%9C%88%20
[5] https://www.bilibili.com/video/BV11D4y1U7GU?p=26&t=1899

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

西门子PLC s7-1200学习之路 的相关文章

  • 自制带串口的J-Link OB 072

    自制带串口的J Link OB 072 普通的三线J link不带串口 使用起来比较麻烦 于是找资料自制了一个J Link OB 072 主芯片是stm32f072c8t6 带串口 使用方便 先上图 自带信仰加持 一遍调通 急急如律令 依然
  • 软件架构及几种典型框架

    什么是软件架构 什么是软件框架 很多时候 我们常常会混用架构和框架这两个词 实际上 广义上的架构和框架在概念上有很大的不同 架构给人的感觉 包容上更大 所以实际上架构是包含了框架的概念的 广义的架构应为一个系统的架构 不仅仅涉及软件中的技巧
  • Movicon/Connext设备连接实例(四)——Movicon.NExT与西门子1200PLC 以太网通讯

    Movicon Next是全新一代的HMI SCADA解决方案 拥有众多超越传统的扩展功能 Movicon平台有着广泛的应用场景 且在众多行业中继承了优秀的解决方案 得到了市场广泛认证 针对不同的行业都能对快速找出解决方案并快速部署 且整个
  • STM32标准库编程中USE_STDPERIPH_DRIVER的用法理解

    STM32单片机编程中 我们要在C C 选项下定义宏USE STDPERIPH DRIVER 它的作用是什么呢 1 USE STDPERIPH DRIVER宏的作用 main c是入口 在main c中会包含头文件 stm32f10x h
  • 三菱PLC 红绿灯 步进指令 STL

    自己写的红绿灯 有启动 停止两个按钮 南北通行4S 东西通行5S 链接 https caiyun 139 com m i 0E5CJEoVGt4D0 提取码 kVOA SET 启动 启动标志 RST 启动 停止标志 SET 停止 停止标志
  • OpenCV+VS2019打开和关闭电脑摄像头

    关于OpenCV和VS2019的配置 请参考博客以前的连接 OpenCV中主要使用videocapture来打开和关闭摄像头 https docs opencv org master d8 dfe classcv 1 1VideoCaptu
  • STM32F103基于spi实现OLED显示

    文章目录 一 原理 二 实现 1 显示中文 2 滚动显示 3 显示字符串 4 读取温湿度 5 显示温湿度 三 结果 1 开机显示欢迎信息 2 循环读取温湿度以及滚动显示我的id 四 总结 五 参考 六 源码 1 github 2 gitee
  • linux 动态库搜索路径优先顺序以及Makefile 编译设置

    一 linux 下 动态库搜索路径优先顺序 编译目标代码时指定的动态库搜索路径 环境变量LD LIBRARY PATH指定的动态库搜索路径 配置文件 etc ld so conf中指定的动态库搜索路径 配置后要运行 ldconfig命令才能
  • 树莓派+OpenCV+Arduino实现二维码与颜色识别检测及物料抓取总结

    1 系统总体设计和分析 系统总体分为硬件设计和软件设计 硬件设计就是基于树莓派2代B型和Arduino的硬件基础平台搭建 能够适应小型 灵活的现实需求 并为软件设计提供可观的计算能力承载和算法改进空间 软件设计就是在嵌入式Arduino上构
  • FPGA、PLC、STM32、单片机、计算机等概念间的关系、区别及各自的优缺点

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

    文章目录 一 DFT计算公式 二 DFT程序实现 一 DFT计算公式 这里就不对DFT概念进行叙述 直接上计算公式 其中N为DFT点数 公式如此 但是在程序中并非如此运算 而是利用欧拉公式对DFT的计算公式进行了转化 转换后公式变为 利用转
  • 嵌入式开发4(I.MX6U串口实验与ubuntu串口调试助手)

    在学习正点原子6UL嵌入式开发板的时候 串口UART是一个很重要的点 在以后的实验中会经常遇到 但是教学中是在windows环境下搭建ubuntu虚拟机来编译代码的 串口调试助手使用的是windows版本的 而我是安装了双系统 所以研究了一
  • Java使用S7协议连接西门子PLC1200、1500

    Java使用S7协议连接西门子PLC1200 1500 1 引入s7包 2 测试代码 可参考使用 1 引入s7包 使用 https github com s7connector s7connector
  • STM32 HAL——GPIO

    HAL的代码规范建议 以下内容是我自己参照HAL做的总结 如果公司有固定的编码规范 就跟公司保持一致 如果没有 那就推荐和所用库保持一致 注意 因人而异 并不具有普遍适用性 HAL库有如下代码规范 1 目录名除了专有词汇外 统一是单词首字母
  • “@”符号是什么意思(欧姆龙PLC)?

    什么是 符号在梯形图编程中意味着什么 文档解释了 指定二进制模式下的间接 DM 地址 偏移内存区域 这实际上是什么意思 考虑文档中的以下图像 地址 16位或十进制32767 的内容如何成为字地址 例如 如果地址CIO 0内容为0000000
  • lv12 交叉编译工具链 7

    目录 1 交叉编译 1 1 镜像来源 1 2 编译原理 1 3 编译过程 编辑 1 4 交叉编译 1 5 交叉编译工具链获取 2 ELF文件格式 编辑3 BIN文件格式 4 交叉编译工具链常用工具 4 1 size命令举例 4 2 rm命令
  • 如何在西门子 S7-1200 和 python 之间进行通信?

    我正在 S7 1200 plc 上运行一个进程 我需要它向我的 python 脚本发送启动信号 脚本运行完成后 需要将一些内容发送回 plc 以启动下一阶段 哦 它必须在梯子上完成 有没有一种快速而肮脏的方式通过profibus发送东西 或
  • VBA 中运行时错误 429,但类已注册

    我正在尝试重新创建一个程序 该程序使用 JavaScript 打开与 PLC 的连接 然后在网页上显示各种信息 由于各种原因 我宁愿将其以 MS Access 的形式保存 并且一直在努力寻找合适的 dll 来使用 Jet32X dll 如果
  • 使用梯形图程序将 TCP/IP 消息从 PLC 发送到 PC

    考虑以下梯形图程序 该程序检查连接是否已启用 A202 00 然后从 PLC 向 PC 发送消息 文档 Omron CX Programmer 严重缺乏对程序约定的解释 我不明白的是 从一个节点向另一个节点发送消息 我应该需要指定接收者 I
  • .NET 有成功的 profibus 通信吗?

    有没有人聊成功了profibus http www profibus com 来自 NET 应用程序 如果您这样做了 您使用什么设备 卡来完成此操作 应用程序是什么 以及您是否使用任何类型的预先存在或可用的代码 我们没有使用过Profibu

随机推荐

  • C# 基础知识 (四).C#简介及托管代码

    暑假转瞬即逝 从10天的支教生活到1周的江浙沪旅游 在这个漫长的暑假中我经历了很多东西 也学到了很多东西 也认识到了很多不足之处 闲暇之余我准备重新进一步巩固C 相关知识 包括C 入门知识 C 并行开发 ASP网站等 这篇文章我介绍的是书籍
  • JS 地址截取 省市区 (含自治区,直辖市,县,自治县)

    方法一 通过js处理 var str 湖北省武汉市江夏区文化大道110号 var str 内蒙古自治区乌兰浩特市二区 var str 重庆市渝中区中兴路 var str 湖北省黄石市阳新县 var str 湖北省宜昌市长阳土家族自治县 va
  • 同步与异步的区别

    同步与异步的区别 最近在学习ajax 而ajax Asynchronous JavaScript and XML 是一种异步的JavaScript和XML技术 鉴于此 就先来了解下同步与异步的思想和区别 一 同步与异步 同步 同步是指一个进
  • LIBSVM入门

    一 引言 LIBSVM提供了多语言 java python和matlab 的SVM实现 可以便捷地处理分类或回归问题 本文记录基于matlab的LIBSVM学习笔记 二 环境搭建 LIBSVM下载链接 https github com cj
  • Vue3 + Element Plus 按需引入 - 自动导入

    文章目录 1 前言 1 1 目的 1 2 最终效果 2 准备工作 3 按需引入 3 1 安装插件 3 2 修改 vite config ts 文件 4 其他 4 1 ElMessageBox 使用时报错 4 1 1 Eslint 报错 El
  • B/S架构和C/S架构的定义和区别(不同点)

    一 B S架构和C S架构的定义 1 B S Browser Server 浏览器和服务器架构 比如百度 微博 淘宝等网站 包含寄户端浏览器 web应用服务器 数据库服务器的软件系统 用户只需要一个浏览器就可以访问服务 系统更新时候 只需要
  • 【操作系统】操作系统知识点总结(秋招篇)

    文章目录 前言 操作系统主要做了哪些工作 进程 线程 协程之间的区别 进程的组成部分 介绍一下进程的PCB 讲一下进程的五态 以及它们的状态转移 用户态和内核态是什么 进程在用户态和内核态之间是如何切换的 讲一下进程之间的通信方式 讲一下进
  • [Unity2D]Tilemap Collider2D只给部分地图瓦片加上Collider的方法

    Unity2D Tilemap Collider2D 给Tilemap中的瓦片网格加上碰撞器 绿色的边框就是碰撞器 需要注意的是 如果给Tilpmap加碰撞器 其整个Tilpmap上的瓦片都会加上碰撞器 在一个Tilpmap上 如果想让部分
  • mongodb监控工具mongostat

    mongostat是mongodb自带的状态检测工具 在命令行下使用 会间隔固定时间获取mongodb的当前运行状态 并输出 常用命令格式 mongostat host 192 168 1 100 27017 uroot p123456 a
  • CreateRemoteThread的使用(转载)

    先解释一下远程进程 其实就是要植入你的代码的进程 相对于你的工作进程 如果叫本地进程的话 它就叫远程进程 可理解为宿主 首先介绍一下我们的主要工具CreateRemoteThread 这里先将函数原型简单介绍以下 CreateRemoteT
  • Android 特许权限白名单

    1 前言 在项目开发中 需求 app中有恢复出厂设置的功能 分解这个需求的时候 第一反应肯定不是第三方app 恢复出厂设置肯定需要有系统权限 属于系统级的app 然后在看手机系统中的功能 恢复出厂设置功能属于设置模块 找到源码阅读 当然是能
  • 2017-7-17 2-2 不使用&&和

    include
  • tomcat下载和配置(简单,详细)

    下载 官网 http tomcat apache org 找到需要的版本 点击download 在download页面 选择需要下载的 分为压缩版和安装版 我比较推荐压缩版 省事解压缩就好 配置 首先 tomcat7 0以上版本不需要配置环
  • 提高map[key]=value的效率

    当关乎效率时应该在map operator 和map insert之间仔细选择 我们知道 这个表达式 m k v 检查键k是否已经在map里 如果不 就添加上 以v作为它的对应值 如果k已经在map里 它的关联值被更新成v 举例一 考虑插入
  • 搭建第一个Dapp应用(4)——搭建SmartDev-Scaffold——2021.5.3

    搭建第一个Dapp应用 4 搭建SmartDev Scaffold 一丶环境配置 Java gt JDK 1 8 Solidity 0 4 25 Git 下载安装包需要使用Git Gradle 大于6 小于7 使用gradle7会报错 二丶
  • JavaEE规范与系统结构

    JavaEE规范 JavaEE规范是J2EE规范的新名称 早期被称为J2EE规范 其全称是Java 2 Platform Enterprise Edition 它是由SUN公司领导 各厂家共同制定并得到广泛认可的工业标准 JCP组织成员 之
  • Jenkins之定时构建

    1 操作环境 1 Jenkins Jenkins 2 75 2 定时构建 1 定时构建语法 第一个 表示分钟 取值0 59 第二个 表示小时 取值0 23 第三个 表示一个月的第几天 取值1 31 第四个 表示第几月 取值1 12 第五个
  • 由java:local_policy.jar和US_export_policy.jar引发的“血案”

    起因 今天项目上线 上线后监测日志 发现由异常 开始查找问题 进而引发了 血案 线上日志报错如下 Illegal key size 画外音 看到线上项目出现问题心里慌的一批 赶紧扒拉出代码 一行一行对着报错日志查看 最后定位到 AES ae
  • 制作SD卡启动盘(编译烧写u-boot)

    一 SD启动盘制作 将我们的sdfuse q文件夹拷贝到虚拟机Ubuntu的共享目录下 sudo cp samba NFS FTP sdfuse q a 将文件夹复制到 home chen 目录下 cd sdfuse q 进入sdfuse
  • 西门子PLC s7-1200学习之路

    1 Introduction 最近因为一个项目需要使用西门子PLC 买了一个入门级的PLC s7 1200 并完成了一个PLC和PC通过TCP进行通信的小程序 为了防止活干完了 内容就全忘了 所以用一个笔记进行梳理和总结 入门一种语言 需要