在S7200中如何能建立一个功能块Word文档格式.docx
- 文档编号:13611112
- 上传时间:2022-10-12
- 格式:DOCX
- 页数:14
- 大小:625.30KB
在S7200中如何能建立一个功能块Word文档格式.docx
《在S7200中如何能建立一个功能块Word文档格式.docx》由会员分享,可在线阅读,更多相关《在S7200中如何能建立一个功能块Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
双整数
最高位为符号位0-整数;
1-小数,后面15个位表示数据大小
Real
实数
单精度浮点
64
双精度浮点
Char
字符❶
如:
单个字母
String
字符串❷
如:
单词
❶字符:
8位,等于一个字节
❷字符串:
存储=字符个数+1字节
如smart:
5个字符+1个字节=6个字节,这1个字节表示第一个地址,是存储个数。
比如把smart存储到VB100中
第一个地址:
是存储个数VB100=5,因为有5个字符
第二个地址:
VB101存储s
第三个地址:
VB102存储m
第四个地址:
VB103存储a
第五个地址:
VB104存储r
第六个地址:
VB105存储t
二、功能块指令的作用
在编写程序过程中有写控制要求或是一些运算会重复执行的,对于这些会重复执行的程序,为了提高编程的效率,往往会把一些会重复执行的功能编写成一个功能块。
或者把一些应用到比拟典型的做成一个指令。
二、功能块指令建立方法
在S7-200系列PL的程序结构中,分为主程序、子程序、中断程序。
子程序分为带参数的子程序和不带参数的子程序,功能即为一个带参数的子程序。
三、功能块指令的建立
需要建立一个带参数的子程序,那么需要在子程序的变量表中〔或接口区〕中定义好相应的变量,然后在子程序的编程中,使用在变量表中定义的变量去编写程序,子程序上面就有相应的接口区。
☆数据类型:
对应地址,选好数据类型系统自动分配地址:
如果选BYTE系统自动寻址→LBX;
如果选WORD系统自动寻址→LWX。
所以地址的分配不用管系统自动分配,是由数据类型决定的。
四、变量类型说明
变量的类型在使用过程中是不一样的,比如说子程序做好了以后有的位于子程序左侧,有的位于子程序右侧,有的在上面没有管脚。
这跟习惯有关,左进右出。
1变量类型〔IN〕:
输入参数为可读❶变量,将调用它的POU提供的数据值传入子程序❷,可以使用常数,直接寻址❸间接寻址❹的方传入到子程序。
在生成子程序块是位于左侧。
这跟习惯有关,左进右出
❶可读:
以PLC为例,可读的点是输入点,因为是从外边获取的信息、数据过来的,输入点大局部是常开常闭。
❷
将调用它的POU提供的数据值传入子程序:
它→指子程序;
POU→指主程序。
也就是说主程序通过输入的方式传递给子程序
❸直接寻址:
比如VW100
❹间接寻址:
&
VB100
2变量类型〔IN_OUT〕:
可读可写的变量❶,其初始值由调用它的POU传送给子程序,并用同一参数将子程序的执行结果返回给调用它的POU,因此常数和指针不能用于输入。
是以IN为主,所以位于程序块左边。
❶以程序为例:
A〕:
→IN的变量
输出Q0.0是可读〔自锁〕可写〔线圈〕→IN_OUT变量
→OUT变量
B〕:
这是自加一指令,将VB0读出再写入VB0→也是IN_OUT变量
C〕:
A值、B值是输入,所以是IN;
☆IN_OUT与TEMP区别:
IN_OUT可读可写在外围会有一个管脚,从外围先把初始值写进运算;
TEMP是内部运算以后存储数据的结果的暂存,不会有输出,调用完子程序数据就放弃了。
所以C值是TEMP,是暂存一次A+B的一个中间结果而已,没有任何需要从外围给数据进去,或者说运算完结果给出去。
D〕:
如果把IN_OUT变量建成OUT变量会出现什么结果?
会执行程序出错。
举例说明:
a、子程序:
将输出建成OUT变量
b、主程序
再调用一次主程序,因为带参数的子程序就是可以重复调用。
只是说外围给不同的实参。
b、说明:
实参。
—从而输出结果=1。
所以输出结果Q0.1也等于1。
因此,输出变量应为IN_OUT变量
正确程序
子程序
主程序
输出在左边。
IN_OUT是先读取再输出,输出Q0.0读的是Q0.0的值,输出Q0.1读的是Q0.1的值。
3输出参数变类型〔OUT〕:
输出参数为可写的变量,用于将子程序的执行结果返回给调用它的POU,输出参数,必须在每次调用完毕前给其一个确定的值。
在生成子程序块是位于右侧。
④变量类型(TEMP):
临时变量时暂时保持在局部数据区的变量,只有在执行某个POU时,它的临时变量才被使用。
临时变量使用公共的存储区。
因此在每次调用时,首先应初始化临时变量,然后再使用
临时变量TEMP没有管脚。
☆
五、建立一个功能块
编写一个功能块程序,用于计算一个存储器中为1的个数有多少个?
〔相当于三菱里SUM指令〕
分析:
如何计算一个存储器中为1的个数有多少个
如果VB0=10101100如何计算,用移位指令,移一次位就会有一个数据移出来,判断移出来这个位等于0还是等于1,“1〞满足一次加一次,VB0移完以后会加4次。
在西门子PLC中不仅有字节的表示还有字、双字表示。
字—移16次,双字----移32次,所以说要建立一个功能块要满足字节、字、双字三种存储器的用法。
字节、字、双字要移位的数据应该建一个IN变量,因为要把数据传送过去就是IN变量,IN变量可以是常数、可以是直接寻址也可以说是间接寻址,不同的地址字节、字、双字用间接寻址要好一点。
1建立一个功能块
1开始计算的条件,满足一次执行一次是BOOL变量
2参与计算的数,建了一个指针,指针的存储空间是32位所以是DWORD,换句话说外部输入用&
VB0或VBx
3建一个数据的类型,要确定一下数据类型会有一个管脚来确认上面指针的类型BYTE=1表示字节WORD=2表示字DWORD=3表示双字。
4结果,建了一个IN_OUT变量,由于后面要做一个运算INC累加为1的次数
5⑥⑦⑧临时变量,先不建用的时候再建。
☆子程序
跳转--等于1时跳到标签1执行
跳转--等于2时跳到标签2执行
跳转--等于3时跳到标签3执行
都不等于时返回
〔跳转到)标签1
⑦启动条件
1把指针数据前面加一个*②LB10里去
2对结果④进展清零:
下次给数再重新运算
FOR循环:
循环的目的是移位,因为一个字节是8位,所以移位次数⑥=8
⑤临时变量#temp1:
LW8暂存当前执行的次数,从1开始到8,移8位。
SHL_B移位指令—左移,用右移也可以。
对临时变量#temp2:
LB10移位,每次移1位。
移出的位有一个移出标志SM1.1进展判断,SM1.1是可读的。
也就是说当移出的位是1的情况下SM1.1=1;
如果移出的位等于0SM1.1=0
INC_W;
当SM1.1=1是记录一次,结果放入LW6。
所以LW6建的时候就是IN_OUT变量
移完以后后面的程序不会执行,因为后面的程序不是字节。
--返回
等于2时跳到标签2执行
把*LD1挪出来,因为是字〔16位〕所以指令都是16位的指令
把数据&
VB0给入到LD1里去,在LD1前加一个*表示起始地址就是VB0,因为是16位指令,也就是VW0了
临时变量#tempLW11是一个字的存储空间了,循环16次了
把*LD1挪出来,因为是字〔32位〕所以指令都是32位的指令
VB0给入到LD1里去,在LD1前加一个*表示起始地址就是VB0,因为是32位指令,也就是VD0了
临时变量#tempLW13是一个字的存储空间了,循环32次了
☆主程序
将这个子程序命名SUM
Data_t~字节就选1字就选2双字就选3
可以把这个子程序做好后添加库里面去,方法很简单右键点击创建添加库。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- S7200 如何 建立 一个 功能块