PLC编程中形参与实参的区别
- 格式:docx
- 大小:14.11 KB
- 文档页数:2
PLC梯形图转语句表
我用plc梯形图写了个FC 在OB1中调用 在OB1视图选项中转换成STL后 为什么输入IN 参数都有一个L区地址与实参对应 而IN-OUT 和OUT 参数却没有呢 见图一
答:L是临时变量的意思。
楼主需要明白,所有的梯形图都可以转化成语句表。
不是所有的语句表都可以转化成梯形图。
只有附和一定格式的语句表才可以转化成梯形图。
比如你的这个句子。
如果只单纯的调用:
CALL FC2
start:= i0.1
stop:=I0.2
coil2:=q0.2
coil:=q0.1
是不能转化成梯形图的。
虽然运算结果相同。
分析它的语句表,就看到,它只是把输入参数,写转移到临时变量,然后再把临时变量的值赋予形参。
结果没有变化 。
但是相当啰嗦。
这也就是为什么STL要比梯形图执行效率好的原因。
高级编程课时211、PEEK/POKE语句编程:使用POKE BLK指令将DB1-DB10的DBW0送入DB11的DBW0-DBW18。
A 未完成B 已完成正确答案: B2、FOR语句编程:通过FOR语句,编写带参数FC,输入Array[0..7]of Int 变量类型,名称为Arr_Input,输出2个Int,名称为Max和Min,通过编程求出Arr_Input的最大和最小的数,输出到Max和Min。
A 已完成B 未完成正确答案:3、1.通过IF语句,实现排污泵的启停:a.当高液位I0.0=False及高高液位I0.1=False,则泵1停止运行Q0.0=False,泵2停止运行Q0.1=False;b.当高液位I0.0=True及高高液位I0.1=False,则泵1运行Q0.0=True,泵2停止运行Q0.1=False;c.当高液位I0.0=True及高高液位I0.1=True,则泵1运行Q0.0=True,泵2运行Q0.1=True。
A 未完成B 已完成正确答案: B4、2.使用CASE OF 语句编程实现顺序控制:a. 当M0.0=True时,顺控开始;b.第一步调用FC2,FC2中置位Q0.0;当第一步执行时,如果M0.1=True,则跳转到第二步;c.第二步调用FC3,FC3中复位Q0.0,置位Q0.1;当第二步执行超过5s时,跳转到第三步;d.第三步调用FC4,FC4中复位Q0.1,置位Q0.2;第三步时MD2>1.0时,复位Q0.2,顺控结束。
A 已完成B 未完成正确答案: A5、3.FOR语句编程:通过FOR语句,编写带参数FC,输入Array[0..7]of Int变量类型,名称为Arr_Input,输出2个Int,名称为Max和Min,通过编程求出Arr_Input的最大和最小的数,输出到Max和Min。
A 未完成B 已完成正确答案: B6、4.FOR语句编程:编写带参数FC,输入Byte变量类型,名称为B_Input,输出Int变量类型,名称为Num_Input,将B_Input的每一位中为True的变量个数输出到Num_Input,例如输入2#11110000,输出为4。
S7-300/400的编程语言与指令系统3.1 S7-300/400的编程语言3.1.1 PLC 编程语言的国际标准IEC 61131是PLC 的国际标准,1992~1995年发布了IEC 61131标准中的1~4部分,我国在1995年11月发布了GB/T 15969-1/2/3/4(等同于IEC 61131-1/2/3/4)。
IEC 61131-3广泛地应用PLC 、DCS 和工控机、 “软件PLC ”、数控系统、RTU 等产品。
定义了5种编程语言1) 指令表IL(Instruction list):西门子称为语句表STL 。
2) 结构文本ST(Structured text):西门子称为结构化控制语言(SCL )。
3) 梯形图LD(Ladder diagram):西门子简称为LAD 。
4) 功能块图FBD (Function block diagram):标准中称为功能方框图语言。
5) 顺序功能图SFC(Sequential function chart):对应于西门子的S7 Graph 。
ͼ3-1 PLCµÄ±à³ÌÓïÑÔ˳Ðò¹¦ÄÜͼÌÝÐÎͼ¹¦ÄÜ¿éͼָÁî±í½á¹Îı¾3.1.2 STEP 7中的编程语言梯形图、语句表和功能块图是3种基本编程语言,可以相互转换。
1.顺序功能图(SFC) :STEP 7中的S7 Graph2.梯形图(LAD)直观易懂,适合于数字量逻辑控制。
《S7-300PLC应用技术》培训试题库一、选择题(A)1.世界上第一台可编程序控制器PDP-4是在1969年研制出来的。
A. 美国B. 德国C. 日本D. 中国(B)2.PLC的各种系统参数、I/O映像等参数存放到PLC的中。
A. 系统ROMB. 系统RAMC. 用户ROMD. 用户RAM(C)3.PLC的CPU与现场I/O装置的设备通信的桥梁是。
A. I模块B. O模块C. I/O模块D. 外设接口(D)4.为了拓宽输入电压范围,提高电源的效率和抗干扰能力,PLC的内部电源一般采用。
A. 并联稳压电源B. 串联稳压电源C. 锂电池D. 开关稳压电源(A)5.S7-300/400 PLC的电源模块为背板总线提供的电压是。
A. DC5VB. +DC12VC. –DC12VD. DC24V(C )6.下列不属于PLC的特点的是。
A. 通用性好,适应性强B. 可靠性高,抗干扰能力强C. 设计、安装、调试和维修工作量大D. 编程简单、易学(D)7.下列不具有通信联网功能的PLC是。
A. S7-200B. S7-300C. GE90UD. F1-30MR(B )8.作为德国国家标准和欧洲标准,由3个系列组成的现场总线是。
A. FFB. PROFIBUSC. LonWorksD. CAN(C )9.SIMATIC NET中,属于多点接口,适用于少量、慢,实时性要求不高的场合。
A. ETHERNETB. PROFIBUSC. MPID. AS-I(D )10.按组成结构形式、容量和功能分,S7-300属于。
A. 小型中档整体式B. 小型高档模块式C. 大/中型高档整体式D. 大/中型高档模块式(B)11.下列输出模块可以交直流两用的是()A. 光电耦合输出模块B. 继电器输出模块C. 晶体管输出模块D. 晶闸管输出模块(C)12.输入采样阶段,PLC的CPU对各输入端子进行扫描,将输入信号送入。
A. 外部I存储器(PI)B. 累加器(ACCU)C. 输入映像寄存器(PII)D. 数据块(DB/DI)(A )13.每一个PLC控制系统必须有一台,才能正常工作。
S7-300复习题一、填空题1、S7-300的存储器主要包括三部分,即装载存储器,工作存储器,系统存储器。
2、S7-300PLC是模块式的PLC,它由电源模块、CPU模块、信号模块、功能模块、接口模块、通信处理器组成。
3、在S7数据格式中,1字节BYTE包含8位BIT,1字WORD包含16位BIT,1双字DWORD包含32位BIT。
4、试写出三种复杂数据类型:ARRAY、STRUCT、STRING。
5、S7单个定时器定时最大时间为99990s,S7单个计数器计数最大值为999。
6、S7-300累加器的长度为4个字节。
7、标准STEP7软件包配备的3种基本编程语言是STL、LAD和FBD。
8、阅读和分析PLC程序的时候,每个输入输出都有自己的地址,程序用寻址的方法访问地址,PLC有两种寻27.OB1是主程序循环组织块,OB100是暖启动组织块,28.S7-300模块地址分配时数字I/O I/O模块每个槽划分为16Byte(等于8个模拟量通道)。
29.S7-300模拟量输入模块对输入标准模拟信号进行A/D转换,其中标准电压信号0~10V对应转换后的数字量数值为D~27648。
A/D转换器的输入量一般都为电压和信号。
30.调用SFB和FB时需要指定其。
31.是一种特殊的中间存储器类型。
它的二进制状态周期性变化,从而形成占空比为0.5的矩形波。
32.MD10由MW10、MW12两个字构成。
二、判断题(对)1.PLC设计的核心思想之一是用计算机代替继电器器控制盘。
(错)2.由于PLC的输入/输出电平可与外部装置直接连接,因此可用来直接驱动380V的交流接触器。
(对)3.PLC由输入部分、输出部分和控制器三部分组成。
(对)4.PLC主要由CPU模块、存储器模块、电源模块和输入/输出接口模块五部分组成。
(错)5.PLC的存储器分为系统存储器和用户存储器,其中系统存储器为ROM或E2PROM结构,而用户存储器主要为RAM结构。
学自控的看过来:在子程序中自锁问题
问题:子程序自锁无效。
某案例程序中调试时发现上位机按启动按钮很多设备同时启动,并不能自锁。
检查上位机和PLC程序,没有问题。
初步检查将问题锁定在“泵阀基础程序”,切断其他程序与“泵阀基础程序”子程序间的联系,只留下一处调用。
发现虽然没有了同时启动的现象,但还是不能自锁。
仔细分析认为,问题在自锁上,子程序中自锁是用输出来做的,在调用该子程序过程中,输出是无法保持的,也就是说在不同程序段中调用该子程序后,原有输出缓存中的内容被覆盖了,再次调用该自程序时,相当于程序从新开始,要想自锁,必须是读进来的参数,但不能用实参,因为别处还得调用该子程序。
把原输出改成“输入输出”形式后问题解决。
分析:用“输入输出”参数自锁状态下,调用子程序时,输出同时也是输入,能从实参缓存读到形参缓存中,从而实现自锁。
程序如下:
问题程序:
修改后:。
AB—PLC自学笔记一以前断断续续的学了一点,但大多是三天打鱼两天晒网;也参加了一次培训,但是短短的课程、大量的产品介绍和难得的上机实验,很快就忘记了学了点啥。
翻开以前的学习记录,零散而杂乱,不少要点看上去是那么陌生。
也罢,再来一次打鱼又如何?第一步,安装软件。
手上有去年培训的时候从老师那里搞来的16版本的logix5000,以前也安装过,里面有很好的英文语音教学,当时老师开玩笑说,可以锻炼下听力。
安装完logix5000V16,再安装一个模拟器软件:Emulate,安装过程中告诉我需要rslinx,昏,看来安装次序错鸟。
其实在安装logix5000的过程中,最后一些小工具的安装也提示我需要rslinx的,被我忽略了。
于是安装rslinx,再安装emulate。
最后一步,把网上找来的授权导入。
发现用老版授权的话,软件第一次运行会提示你,现在16版本采用所谓的factorytalk管理授权了云云,我不管,反正能用就行。
接下来的问题就是,怎么用这个模拟器?以前用过,但是忘鸟。
只记得要选择一个特殊的硬件,还好有份模拟器的使用手册,简单看了下几个插图就回忆起来了,试了下,ok。
个人觉得ab的emulate有点别扭,因为用惯了西门子的plcsim,那个不需要选择什么特殊的硬件,原工程就可以很仿真的download下去去模拟运行。
而ab的东东,却不能用真正的硬件配置,那么一个实际个工程文件必须修改下controller才能去仿真了???万事具备,就开始学习软件吧,从何入手呢?先找几个自己感兴趣的问题研究研究吧。
先看看变量的定义,ab的独特之处就包括tag是以名称作为关键“索引”,没有西门子那种地址的概念,这样当然简化了开发。
那么如何批量的导入/导出变量呢?我用s7的编程习惯是在excel里面编辑好变量表,再导入到程序里面。
在logix5k软件里面找了下,果然可以,tools菜单下有import和export,试了下,跟西门子的symbol table一样,都是以csv文件保存的,不过也发现了中文注释偶尔会变“乱码”。
SCL⼊门教程SCL介绍SCL 编程语⾔SCL(Structured Control Language,结构化控制语⾔)是⼀种基于 PASCAL 的⾼级编程语⾔。
这种语⾔基于标准 DIN EN 61131-3(国际标准为 IEC 1131-3)。
根据该标准,可对⽤于可编程逻辑控制器的编程语⾔进⾏标准化。
SCL 编程语⾔实现了该标准中定义的 ST 语⾔ (结构化⽂本) 的 PLCopen 初级⽔平。
S7-1200从V2.2版本开始⽀持SCL语⾔。
语⾔元素SCL 除了包含 PLC 的典型元素(例如,输⼊、输出、定时器或存储器位)外,还包含⾼级编程语⾔。
表达式赋值运算运算符程序控制语句SCL 提供了简便的指令进⾏程序控制。
例如,创建程序分⽀、循环或跳转。
应⽤因此,SCL 尤其适⽤于下列应⽤领域:数据管理过程优化配⽅管理数学计算 / 统计任务表达式说明:表达式将在程序运⾏期间进⾏运算,然后返回⼀个值。
⼀个表达式由操作数(如常数、变量或函数调⽤)和与之搭配的操作符(如 *、/、+ 或 -)组成。
通过运算符可以将表达式连接在⼀起或相互嵌套。
运算顺序表达式将按照下⾯因素定义的特定顺序进⾏运算:相关运算符的优先级,优先级数越⼩越优先同等优先级运算符的运算顺序按照从左到右的顺序赋值运算的计算按照从右到左的顺序进⾏括号优先级最⾼表达式类型不同的运算符,分别可使⽤以下不同类型的表达式:算术表达式关系表达式逻辑表达式算数表达式说明:算术表达式既可以是⼀个数字值,也可以是由带有算术运算符的两个值或表达式组合⽽成。
算术运算符可以处理当前 CPU 所⽀持的各种数据类型。
如果在该运算中有 2 个操作数,那么可根据以下条件来确定结果的数据类型:如果这 2 个操作数均为有符号的整数,但长度不同,那么结果将采⽤长度较长的那个整数数据类型(例如,Int + DInt = DInt)。
如果这 2 个操作数均为⽆符号整数,但长度不同,那么结果将采⽤长度较长的那个整数数据类型(例如,USInt + UDInt = UDInt)。
选择题1,世界上第一台可编程序控制器PDP-4是A在1969年研制出来的。
A. 美国B. 德国C. 日本D. 中国2.PLC的各种系统参数、I/O映像等参数存放到PLC的B中。
A. 系统ROMB. 系统RAMC. 用户ROMD. 用户RAM3.PLC的CPU与现场I/O装置的设备通信的桥梁是C。
A. I模块B. O模块C. I/O模块D. 外设接口4.为了拓宽输入电压范围,提高电源的效率和抗干扰能力,PLC的内部电源一般采用D。
A. 并联稳压电源B. 串联稳压电源C. 锂电池D. 开关稳压电源5.S7-300/400 PLC的电源模块为背板总线提供的电压是A。
A. DC5VB. +DC12VC. –DC12VD. DC24V6.下列不属于PLC的特点的是 C 。
A. 通用性好,适应性强B. 可靠性高,抗干扰能力强C. 设计、安装、调试和维修工作量大D. 编程简单、易学7.下列不具有通信联网功能的PLC是 D 。
A. S7-200B. S7-300C. GE90UD. F1-30MR8.作为德国国家标准和欧洲标准,由3个系列组成的现场总线是 B 。
A. FFB. PROFIBUSC. LonWorksD. CAN9.SIMATIC NET中,C属于多点接口,适用于少量、慢,实时性要求不高的场合。
A. ETHERNETB. PROFIBUSC. MPID. AS-I10.按组成结构形式、容量和功能分,S7-300属于 D 。
A. 小型中档整体式B. 小型高档模块式C. 大/中型高档整体式D. 大/中型高档模块式11.下列输出模块可以交直流两用的是( B )A. 光电耦合输出模块B. 继电器输出模块C. 晶体管输出模块D. 晶闸管输出模块12.输入采样阶段,PLC的CPU对各输入端子进行扫描,将输入信号送入 C 。
A. 外部I存储器(PI)B. 累加器(ACCU)C. 输入映像寄存器(PII)D. 数据块(DB/DI)13.每一个PLC控制系统必须有一台 A ,才能正常工作。
PLC STL中的逻辑块调用指令CALL 块调用指令( CALL)用来调用功能块(FB)、功能(FC)、系统功能块(SFB)或系统功能( SFC),或调用西门子预先编好的其他标准块。
在CALL指令中,FC、SFC、FB和SFB是作为地址输入的,规律块的地址可以是肯定地址或符号地址。
CALL指令与RLO和其他任何条件无关。
在调用FB和SFB时,应供应与它们配套的背景数据块(Instance DB)。
而调用FC和SFC时,则不需要背景数据块。
处理完被调用的块后,调用它的程序连续其规律处理。
在调用SFB和SFC后,寄存器的内容被。
恢复。
使用CALL指令时,应将实参(Actual Parameter)赋给被调用的功能块中的形参(Formal Parameter),并保证明参加形参的数据类型全都。
使用语句表编程时,CALL指令中被调用的块应是已经存在的块,其符号名也应当是已经定义过的。
在调用块时可以通过变量表交换参数,用编程软件编写语句表程序时,假如被调用的规律块的变量声明表中有IN、OUT和IN_OUT类型的变量,则输入CALL指令后编程软件会自动地打开变量表,只需对各形参填写对应的实参即可。
在调用FC和SFC时,必需为全部的形参指定实参。
调用FB和SFB 时,只需指定上次调用后必需转变的实参。
由于FB被处理后,实参储存在背景数据块中。
假如实参是数据块中的地址,必需指定完整的肯定地址,如DB1. DBW2。
规律块的IN(输入)参数可以指定为常数、肯定地址或符号地址。
OUT(输出)和IN_OUT(输入_输出)参数必需指定为肯定地址或符号地址。
CALL指令保存被停止执行的块的编号和返回地址及当时打开的数据块的编号。
此外,CALL指令关闭MCR区,生成被调用的块的局域数据区。
①CALL块调用指令:CALL规律块标识符。
使用该指令,可以调用功能(FC)或功能块( SFB)、系统功能(SFC)或系统功能块(SFB),或调用由西门子公司供应的标准预编程块。
S7-300/400得编程语言与指令系统3、1 S7-300/400得编程语言3、1、1 PLC编程语言得国际标准IEC 61131就是PLC得国际标准,1992~1995年发布了IEC 61131标准中得1~4部分,我国在1995年11月发布了GB/T15969-1/2/3/4(等同于IEC 61131-1/2/3/4)。
IEC 61131-3广泛地应用PLC、DCS与工控机、“软件PLC”、数控系统、RTU等产品。
定义了5种编程语言1) 指令表IL(Instruction list):西门子称为语句表STL。
2) 结构文本ST(Structured text):西门子称为结构化控制语言(SCL)。
3) 梯形图LD(Ladder diagram):西门子简称为LAD。
4)功能块图FBD (Function block diagram):标准中称为功能方框图语言。
5)顺序功能图SFC(Sequential function chart):对应于西门子得S7 Gra ph。
3、1、2 STEP 7中得编程语言梯形图、语句表与功能块图就是3种基本编程语言,可以相互转换。
ﻩ1.顺序功能图(SFC) :STEP 7中得S7 Graph2.梯形图(LAD)直观易懂,适合于数字量逻辑控制。
“能流”(Power flow)与程序执行得方向。
3、语句表(STL):功能比梯形图或功能块图强。
4.功能块图(FBD):“LOGO!”系列微型PLC使用功能块图编程。
5.结构文本(ST):STEP 7得S7SCL(结构化控制语言)符合EN 61131-3标准。
SCL适合于复杂得公式计算、复杂得计算任务与最优化算法,或管理大量得数据等。
6.S7 HiGraph 编程语言图形编程语言S7 HiGraph 属于可选软件包,它用状态图(state graphs)来描述异步、非顺序过程得编程语言。
7.S7 CFC 编程语言可选软件包CFC(Continuous Function Chart,连续功能图)用图形方式连接程序库中以块得形式提供得各种功能。
PLC编程中形参与实参的区别
结合STEP7里具体点说可以是,假如我们有1个功能块FB1,功能FC1,几个FB1的背景数据块。
在FB1里写公式a+b+c,这里a,b,c就是形参。
而在FC1里我们定义在I0.0=1时调用FB1,并令a=1,b=2,c=3.此时1,2,3就是实参。
而定在I0.1=1时调用FB1,令a=10,b=20,c=30,此时10,20,30也是实参。
举例说明:
例:
3X + 2Y =5Z
当X=48,Y=22,求Z?
其中X,Y,Z就是形参。
48,22就是实参。
形参:全称为"形式参数"是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传递的参数.
实参:全称为"实际参数"是在调用时传递个该函数的参数.
形参:形式上的参数,没有具体值。
你在写一个方法的时候当然不知道具体值
而实参:是你调用方法时给的参数,给的是和所调用方法所匹配的具体值。
数值传递的时候,实参是不变的,形参是随着计算而变化的。
指针/引用传递的时候,行参怎么变~实参就怎么变。
实参就是送进去的东西,行参就是把送进来的东西进行加工。
加工完后就返回一个东西:返回值.
编程简单理解为“形参”与“实参”的相互作业,体现在具体编程中就是:在程序FB/FC中全部使用“形参”,这里的”形参“你可以随便定义,你主要知道它的意思就可以;在程序编好以后就回到主程序OB1,把你编好的FB/FC拿出来,因为原来FB/FC是一块一块的,所以在OB1中你想拿多少次FB/FC都是没有问题的,当然这个由你的实际需要决定哦,这个时候的FB/FC 就表现形式为一个”功能箱“,就好象在编程时我们要使用的什么计数器/计时器/SR/RS触发器等一样,我们需要的是给这些”功能箱“赋与它生命的”实参“,这个时候”功能箱“才会动起来,至于它怎么动,当然是你自己想的。
理解了”功能箱“FB/FC和OB1的联系与差别,你应该对于所谓的”结构化“有了一定的认识,需要注意一下的是FB是一个完全意义上的”功能箱“,FC是部分意义的”功能箱“,为什么这样说是因为FB和”功能箱“的使用完全相同,具体表现为FB的“形参”不要求全部有“实参”,但是FC“形参”与“实参”必须一一对应。
接下来我们解释一下FC/FB的参数和变量类型有什么区别,FB有静态(STAT)变量类型,静态变量存储在FB的背景DB,当FB这个”功能箱“使用完后那些个存储在静态(STAT)变量类型下的数据依然有效;FC有一个返回值变量(RET-VAL)用于返回调用的结果,但是使用OUT/IN-OUT类型的参数可以输出多个变量,比RET-VAL有更大的灵活度,所以很少使用这个RET-VAL,但是FB中间没有STA T是不可以想象的。
几点说明:1:“形参”即局部变量,“实参”即全局变量,“形参”在程序块的变量声明区中定义,“实参”则要在符号表中定义;
2:在编程前先要发一些时间规划好要用到的“实参”;
3:要知道编程有LAD/STL/FBD三种,但是不是所有的STL都可以转换为LAD/FBD;
4:对于在FB中定义好的“形参”,在创建对应的DB时会自动加载已经定义好的“形参”,但是需要注意的是要对FB的静态(STAT)变量类型的具体参数值定义;
5:在编程时要学会使用SHIFT这些组合键;
6:对于任何一个编程工作者多不可能记忆全部的指令/系统功能/功能块,在使用时要学习使用F1帮助。