其实中间变量就是M区的那些变量,比如M0.0、MB0、MW0、MD0这些,对应的不同数据类型。
这里有个关键注意点:M区变量一断电就会自动清零,所以不能用来存需要长期保留的数据,比如生产计数这些,要是存到M区,一断电数据就没了,白忙活!另外,PLC的脉冲时钟也用的是M区。
调用脉冲时钟的方法我记熟了:在硬件组态主界面右键CPU属性,弹出的对话框里选第一个图标,然后勾选第二个标记的地方,第三个地方填数字几,脉冲时钟就从M几开始。比如我填3,那M3.0、M3.1这些就是脉冲时钟点了。
这个知识点用在哪呢?我理解M区就是PLC里的“临时工作台”,比如平时做程序逻辑判断的时候,需要一个中间过渡的信号,就可以用M区变量。
比如控制一个气缸伸缩,中间需要一个延时触发的信号,就可以用M0.0当这个过渡信号;还有脉冲时钟的应用,比如想让某个指示灯每隔1秒闪一次,就可以调用M区的脉冲时钟,直接用对应的M点触发指示灯,不用自己写延时程序,省事儿多了。
易工讲寻址,其实就是对I区(输入区)、Q区(输出区)、M区这些地址做读写操作。我感觉这就是PLC的基本功,就像我们用手机要找APP一样,PLC要控制外部设备、读取传感器信号,都得通过寻址找到对应的地址才行。
用在哪呢?太基础也太常用了!
比如我要读取一个按钮的信号,这个按钮接在I0.0,那PLC就通过寻址找到I0.0,读取它的通断状态;然后要控制一个继电器动作,就通过寻址找到Q0.0,给它输出一个信号,这就是寻址最基础的应用,不管是简单程序还是复杂程序,都离不开这个。
易工讲了三种常用进制,还特意说了缩写,记下来在PLC里转换的时候特别方便:
[BIN]二进制(逢二进一)、
[DEC]十进制(逢十进一)、
[HEX]十六进制(逢十六进一)。
这里要重点记十六进制,0-15不是全用数字表示,0-9是数字,10-15对应A-F,A是10、B是11、C是12、D是13、E是14、F是15,千万别记混了。
这个知识点用在哪呢?编程的时候经常要转换进制啊!比如有时候监控程序,看到的是十六进制的数值,得转换成十进制才能看懂实际是多少;还有写程序的时候,比如设置定时器的时间、计数器的设定值,可能需要用不同进制输入,记牢这些进制规则,才能准确操作,不犯错。
变量类型就那么几种,位、字节、双字、整数、双整数、浮点数这些,但用途挺广的。
这里要注意,不同的表达方式可能对应同一个数据类型,比如MW是一个区域,数据的宽度,这里可以存放int这样的整数。
易工还领着我们练了些计算,LAD(梯形图)大部分PLC都通用,STL(语句表)稍微有点区别。
比如一个加法的STL程序:
L MW0
L 10
+I
T MW10。
我给大家解释下,L是装载,就是把MW0里的数据装到累加器1里,再把10装进去,做整数加法,最后把结果传到MW10里。
减法、乘法、除法写法差不多,就改一下运算符号,关键是同一个运算里的数据类型得一样,不然会出错。
这个知识点用在哪呢?只要涉及到数据计算的程序都得用啊!比如生产线上的产量统计,每生产一个产品就加1,这就需要用整数加法;还有比如计算物料的重量、长度,可能需要用到浮点数运算,不同的应用场景选对应的变量类型,程序才能正常运行。
间接寻址分16位和32位两种,16位的简单点,32位的稍微难一点,不过学会了很实用。
先说说16位寻址,它的起始数和目标数是一样的,用法很简单,比如程序里写
OPN DB(MW0)
A DBX0.0
A DBX0.1,
意思就是在当前块里打开一个DB块,具体打开哪个,就看MW0里的数值是多少。
比如MW0里是32,那就是打开DB32,后面的A DBX0.0其实就是A DB32.DBX0.0,这么写就是为了省事,不用重复写DB块编号。
还有个注意点,监控程序的时候,状态表里STANDARD栏的数不一定是十进制,可能是十六进制;STA栏右键可以用hide隐藏不需要的,用show添加要显示的;Representation是用来切换进制的,比如十进制和十六进制互相转换。
16位寻址还能用在定时器T、计数器C这些地方。
再说说32位指针寻址,主要用在I、Q、M、L这些区域,用双字表示。这是32位指针的示意图,分三个区域:0-2位是位地址,一般用不上,如果要访问为 ,能用上;3-18位是字节地址,这是重点;19-31位未定义,不用管。
32位寻址有两种用法,一种是用P#,看到P#就知道是32位指针标志,比如
L P#400.0、
T MD100,
就是把400.0这个地址装载到MD100里。
另一种用法比如
L MW[MD10]
L 1
+I
T MW20,
要是MD10里放的是3200,那MW[MD10]就是MW400,程序就变成了L MW400、L 1、I+、=MW20。关键是3200怎么变成400的,我记了个方法:把3200转直接除以8就行,得出来400,就是字节地址。如果有余数,那余数就是位。
这里还要记一个LOOP循环指令,用法是判断后面的数是不是1,不是1就减1再循环,直到变成0,程序再往下执行。
这个知识点用在哪呢?比如需要批量处理数据的时候,用间接寻址能省很多事!比如有10个DB块,每个DB块里的结构都一样,要对每个DB块里的相同地址做相同的逻辑判断,用16位间接寻址,改一下MW里的数值就能依次打开每个DB块,不用写10遍重复的程序;32位寻址比如批量读取I区的多个输入信号,或者批量控制Q区的多个输出,用起来都很高效。
跟着易工学,除了知识点,还能学到这些实操技巧,太实用了,记下来分享给大家:
1. 建变量表:写程序前把所有变量都在变量表里建好,后续直接调用就行。
方法是在主页面点S7Program,再点Symbols,出来的表里就能建了。
我觉得这个技巧特别好,之前写程序的时候,用到变量就临时写地址,后面找起来特别麻烦,现在先建变量表,给变量起个好记的名字,比如“气缸伸缩信号”“电机运行状态”,编程效率高多了,后续查程序、改程序也方便。
2. 查看存储区占用情况:想知道哪些存储区在用、哪些没用,打开交叉参考就行,在交叉参考页面选图里标记的图标,就能看到了。
整体蓝色的是字节或整数用法占用的,带X的是单独位用的。这个在接手别人的程序,或者优化自己写的程序的时候特别有用,能避免重复占用地址,也能合理利用空闲地址。
3. STEP7软件授权激活:要是打开STEP7时提示“NO VALID LICENSE KEY FOUND THE APPLICATION WILL BE CLOSED”,就把易工百度网盘里的对应文件复制到虚拟机里打开,左侧选STEP7,右侧出来的一列全打对号,点install,再点是,最后点all就行。
之前群里有兄弟遇到过这个问题,现在记下来,以后自己遇到了也能解决。
4. 找回隐藏的项目树:编程的时候不小心把左侧项目树隐藏了,点view,再点overview,就能隐藏或显示项目树了,这个小技巧虽然简单,但刚遇到的时候还真有点慌,记下来就不用再到处找了。
孟哥,这篇笔记整理得非常扎实!能看出来你对课程是真的跟着我认真学、仔细思考了,不仅把五个核心知识点梳理得明明白白,还主动补充了每个知识点的应用场景,说明你不是在死记硬背,而是真的理解了、会用了。
更值得肯定的是,你没有停留在自己的舒适区,而是主动跟着课程深入学习间接寻址这种有难度的知识点,还认真整理了实操技巧,这份学习态度和努力特别可贵。
学习数控PLC就是这样,一步一个脚印,走出舒适区,才能不断突破自己。
你现在已经踏上了让自己不断成长的道路,只要这样坚持学习、坚持整理总结,一年之后再回头看,一定会发现自己有了翻天覆地的变化,专业能力会提升一大截,也会感谢现在这个努力拼搏的自己!继续加油,后面的学习之路还很长,但你已经走在了正确的方向上。