ST语言编程中常用的函数功能块
大部分PLC都会内置很多基本的函数和功能块供编程人员调用,而且很多具有通用性,也就是在不同品牌的PLC中,这些函数和功能块的名称、用法和功能相同,记住这些函数和功能块的名称和使用方法,能让我们编程时更加便捷。下面以三菱PLC的编辑软件GX Works3为例,展示这些函数、功能块的使用方法。
上升沿和下降沿应该是所有程序里最常用的FB(功能块)之一了,他的功能是检测一个bool变量变化的边缘,输出一个扫描周期,下面通过一个例子介绍一下我常用的命名方法和编程格式:检测开始按钮X1的上升沿, 置位Y0,检测停止按钮X2的下降沿,复位Y0。
第一步声明标签, 我个人习惯将上升沿加前缀“rt”,下降沿加“ft”:
声明标签
第二步编程,FB的输入引脚赋值要在()内操作,而输出引脚可以当作变量直接使用,节省一个标签:
编程格式
增加变量前缀,无论在程序的什么地方使用,都能一眼看出变量的类型,方便阅读程序。
2,TON/TOF(延时启动/关闭功能块)
延时功能块也是非常常用的FB,除了起到延时的作用,还可以用来过滤信号,起到筛选的作用,例如:使用对射光电传感器X0(阻挡时ON)检测皮带上产品缝隙,当传感器OFF时间超过100ms时报警Y0。
声明标签 :
编程:
3,TP(脉冲定时器)
脉冲定时器的功能是输出一个固定时长脉冲,典型的应用如报警灯的控制,举个例子:当变量bAlarm触发后,点亮报警灯Y0,要求每隔700ms亮一次,一次亮200ms,持续闪烁。
声明标签:
编程:
ton功能块的输入设置为自身输出的非,作用是每隔700ms生成一个单扫描周期的脉冲,tp功能块将脉冲的时长设定为200ms,并给到指示灯。
算术运算
算数运算除了常用的"+","-","*","/"(加减乘除)还有“**”(幂运算)"<","=",">"(比较)等。还有一些常用的函数可供使用。
1,MAX,MIN(最大值,最小值函数)
选取最大值/最小值存入iMax/iMin中,三菱最多可比较28个数据。这个函数在我的《五子棋》游戏程序中有用到,选取一个棋子4个方向连棋数和分数的最大值。
2,MOD(取余数函数)
取余数是非常有用的函数,比如生成一个范围内的随机数时可以使用MOD对生成的数字进行限制;可以将一维数组存入多维数组时使用MOD进行设限,例如:将一维数组DataListA[0..99]的数据传递给二维数组DataListB[0..1,0..49]。
3,ABS(绝对值函数)
还有很多三角函数(sin,cos,tan)反三角函数,这里就不再演示了,用法差不多。
类型转换
类型转换的函数指令非常多,基本涵盖了所有数据类型之间的相互转换,格式基本相同。
类型转换
下面以“幂运算”为例演示用法:
由于三菱的幂运算要求实数,所以在计算前先将整数转为实数,计算后的结果也是实数,想要存入整数变量还要再转为整数。
字符串处理
字符串的处理函数经常在TCPIP通讯中用到,尤其是工业相机的应用中,种类也是非常多:
字符串处理
以常用的MID截取函数为例,讲述函数用法:解析由相机发来的字符串,包含一个产品的XY坐标和旋转角度C,存入实数变量iX,iY,iC。
MID函数
注意,字符串的空格也算一位。
输入源字符串,截取长度,截取位置,将获得的字符串转换为实数后赋值。
其他
在三菱的部件选择窗口中,可以找到非常多的系统功能块和函数:
部件选择
没有必要记住每一个函数的使用方法和名称,当你需要实现某种功能时,直接在搜索框搜索功能名称(中文就行),就会得到符合的功能块,如果不会使用可以按F1按键查看帮助。
帮助文档
三菱Q系列PLC,ST语言的高级数据处理类型
1,指针
主控指针:
MC主控开始:
MC( ?BOOL_EN? , ?ANY16_n? , ?BOOL_d? );
语句;
MCR主控结束:
MCR( ?BOOL_EN? , ?ANY16_n? );
注意一下:①功能指令名,②数据类型,③可用软元件。
EN:执行条件。
n:嵌套数N0~N14,ST语言省略N。
ENO:执行结果。
d:置为ON的软元件编号。
执行条件断开后:
高、低速定时器→值0、线圈0、触点0。
累计定时器、计数器→线圈0、触点1,值不变。
OUT指令中的软元件→置0。
SET、RST、SFT中的软元件→值保持。
注意:
①可用0-14个号嵌套。
②MC、MCR编号一致。
③MCR前不要触点。
④MCR可用最小编号复位所有主控。
⑤MC号从小到大,MCR号从大到小。
例:
MC(X0,0,M15);
MC(X1,1,M16);
语句;
MCR(1,1);
MCR(1,0);
变址(间接寻址)指针
格式:
地址=基址+变址。
例:D0Z0,
D0=D0+(Z0=0),
D2=D0+(Z0=2),
…
2,结构体
定义和用途:
结构体就是将所有设备的不同数据类型的数据定义在一起,形成一个模板,利用这个模板去填写属于自己对应的参数。在书写大型程序时控制的东西很多,如果单一的去定义变量,工作很复杂,这样数据的管理及调用方面大大提高了便捷性和数据查看快捷性。
如何使用:
①新建结构体和设置变量
②建立全局结构体标签
③设置对应软元件
④使用
3,数组
数组是指同样的数据类型组合起来,用一个名称表示。
1维数组:数组名[0]~[n]
2维数组:数组名[0,0]~[m,n]
3维数组:如立方体[高,长,宽]
标签名:可用中文。
下标:整数常数、字(双字)软元件、标签(字、双字、位串)有或无符号、
表达式(只能通过ST语言指定)。
相关问答
求教!西门子数控车床基本编程代码?
字...⑵SINUMERIK802D系统该系统属于中低档系统,其特点是:全数字驱动,中文系统,结构简单(通过PROFIBUS连接系统面板、I/O模块和伺服驱动系统),调试方便。具...
新人求教:欧姆龙plc中SFT指令如何应用?
SFT是位移动指令,编程手册有介绍。我这边简单说说。SFT指令盒的最上面一条线是指令运行许可,比如SFTW5W5,这条指令未执行时W5中16个位都是0.当最上面一条线ON...
三菱PLC程序SFTLP怎么输入?
这是三菱的位左移指令,脉冲型,你输入SFTLPX001M10K1D100,当然SFTLP这后面的你可以改成你所需要的位和寄存器这是三菱的位左移指令,脉冲型,你输入SFTLPX0...
欧姆龙PLC移位寄存器SFT有断电保持功能吗?就是通过移位实现那些有顺序的控制?
要断电保持的话就要用保持寄存器H,还有上电不要把SFT复位,要不保持也没用要断电保持的话就要用保持寄存器H,还有上电不要把SFT复位,要不保持也没用
【三菱PLC中SFTLS000S001K8K1怎么理解】作业帮
[最佳回答]将S000传送到S001——S008的最低1位中,高1位溢出.
西门子PLCS7-200梯形图指令符号的意思?
西门子PLCS7-200中的梯形图指令符号主要用于控制电路的逻辑操作。这些符号通常由一个字母和一个或多个线段组成,具体含义取决于指令的类型和操作数。以下是一...
三菱plc中sflp是什么指令?
指令是SFTL,是左移位指令。SFTLP中的P是边沿触发,前面条件一直接通时,该移位仅执行一次。SFTLPM80M0K20K0----------最后的K0代表每次移动几位,你写K0就代...
【求下列PLC指令的作用①ALTPY10;②DMOVD22D22;③PLSYK2K5Y1...
[最佳回答]①ALTP交替输出指令X0为1时Y0置位当X0再次为1时Y0复位②DMOV传送指令将D22里的数值传送到D22注地址一样时PLC采集显示的为最后地址里的数...
三菱plcsftlm41m42k3c1是什么意思?
sflt是位左移指令;指令执行时,m42、m43、m44这3个左移,左移的位数决定于c1的数,m41补充低位。例如c1的数是1,则执行指令后m42、m43、m44左移1位,m44就溢...s...
学ST语言难不难?学编程难不难?
[回答]了变频器的基本结构、变频调速的基本原理、变频器的基本运行功能、参数预置和操作、变频器的安装、抗干扰处理、变频驱动系统的...由于书后附有实...