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个人理解是典型的面向过程编程那么显然少不了全局变量啊。除了IO映射的数据之外我在学习PLC的时候视频老师经常用一个中间寄存器M10.0,M100.0\color{red}{除了IO映射的数据之外我在学习PLC的时候视频老师经常用一个中间寄存器M10.0,M100.0}除了IO映射的数据之外我在学习PLC的时候视频老师经常用一个中间寄存器M10.0,M100.0从c语言的角度出发这么干非常危险最好不要去这么直接操作内存啊\color{red}{最好不要去这么直接操作内存啊}最好不要去这么直接操作内存啊可以用全局变量。再结合PLC的在线工具可以像KEIL 编程一样查看和改写全局变量的数据。到这里我们发现梯形图和开发嵌入式单片机差不多嘛。问题4 如何创建函数有三种函数OB、FB、FC。FB和FC的差距差在有没有static。FB有static变量每个FB的function内部的static 变量都有单独的存储空间互不干涉。FC类似c语言中的功能函数FB可以从电气模块化设计的角度理解。\color{red}{FC类似c语言中的功能函数FB可以从电气模块化设计的角度理解。}FC类似c语言中的功能函数FB可以从电气模块化设计的角度理解。根据[3],OB类似于c语言中的线程thread所以梯形图虽小也是五脏俱全。搞清楚梯形图编程的主干编程完全是一个熟练度的问题了。OB块主要用于程序循环、启动、延时中断、循环中断、硬件中断、HSC中断、诊断错误和时间错误八大事件。OB块还有两个属性是编号和优先级优先级越高中断级别越高。在同样的优先级别OB编号越小越优先执行。问题5数据结构有哪些问题6库函数的能力一个编程语言的强大和官方的库函数以及社区的强大分不开。梯形图编程更贴近硬件编程特点决定了只使用官方库基本上满足需求。更复杂的需求估计只能换工控机这类设备了。常见电气项目中的主要功能使用起来非常方便。- 问题7数据怎么读写如何进行数据读写保护?数据读写两种方法1在梯形图主干上通过触点常开触点、常闭触点等作为输入用线圈作为输出2使用函数进行数据操作对于普通的数据类型因为梯形图限定了程序是单线程不会出现读写死锁的问题对于IO输出如果出现在不同的地方写入就是PLC中的双线圈问题[4]。解决的方法就是两个支路进行并联结合一些中间变量寄存器。2.5 怎么在线查看在线查看重点关注两个方面的内容变量的变化过程编程中具体过程状况通过梯形图可以看到从上至下从左到右的01执行变化反应程序的过程状态以及中间变量数值。可视化程度很高和嵌入式开发很接近。在数据DB区可以看到全部变量的变化情况很方便。References[1] PLC原理及应用.刘星平[2] S7-1200零基础入门到精通 侯俊霞[3][4][5]