1、标识名
标识名不区分大小写。标识名中不能使用保留字及实际软元件等字符串。
2、注释是以表示注释的开始的“(”及表示结束的“)”围住部分。
3、数据类型
ST程序中可用的数据类型如下
BOOL,INT,DINT,REAL,STRING (’…'或 “…”),ARRAY,STRUCT
数组要素的指定编号从0 开始计数
D1:=1; tanka[D1]:=1200;
4、软元件
a、 可直接使用软元件,如D1000,X0A0、DX0(直接输入)。
b、 变址修饰
Z2:=1;
D0Z2:=K0; (D0Z2表示D1)
c、位指定
D0.0 = TRUE; (将D0 软元件的第0位置为ON。 )
W0.F = FALSE; (
将W0 软元件的第15 位置为OFF。
)
d、 位数指定
通过将位软元件的4 位、8 位、12 位...作为1 位数进行位数指定,在位软元
件中可以处理单字数据或者双字数据。
K4X0 := D0; (将从X0 软元件开始的16 位作为整数型(INT)使用,代入
D0
)
Wtest := K1X0; (将从X0 软元件开始的4 位代入单字型标签Wtest 中。)
Dwtest := K5X0; (将从X0 软元件开始的20位代入双字型标签Dwtest 中)
5、 ST程序的表达式
a、运算符列表
(),函数(), (指数,如tei**shisuu ), NOT, * ,/ ,MOD (余数), + , -,
比较 < , > , <= , >= , = , <>
逻辑积 AND , &
XOR , OR
b、控制语句(关键字需大写)
(a) IF 条件语句
IF <布尔表达式> THEN
<语句 ···>
END_IF;
IF <布尔表达式> THEN
<语句1···>
ELSE
<语句2···>
END_IF;
IF <布尔表达式1> THEN
<语句1···>
ELSIF <布尔表达式2> THEN
<语句2···>
ELSIF <布尔表达式3> THEN
<语句3···>
END_IF;
(b)CASE 条件语句
CASE <整数表达式> OF
<整数选择值1>: <语句1 ···>
<整数选择值2>: <语句2 ···>
·
·
·
<整数选择值n>: <语句n ···>
ELSE
<语句n+1 ···>
END_CASE;
CASE D100 OF
1: <语句1 ···>
2: <语句2 ···>
3: <语句3 ···>
3,4: <语句4 ···>
ELSE
<语句5 ···>
END_CASE;
(注:整数选择值只能指定无K指定的10进制数,不使用EXIT语句)
©循环语句
FOR idx:=0 TO 100 BY 1 DO

END_FOR;
WHILE W100 < (W2-100) DO
W100 := W100 + 1;
END_WHILE;
REPEAT
D1 := D1 + 1;
UNTIL D1 < 100
END_REPEAT;
(d)其它控制语句
RETURN; RETURN语句用于中途结束功能块内的程序·ST程序。
EXIT; EXIT语句是只能在ST程序的循环语句中使用的语句,使循环回路中
途结束。
6、使用FB 块

  1. 设置FB变量(FB标识)
    选择输入输出类型,选择标识的类型。类型有以下4种:
    ·输入变量… 从FB外部输入的变量
    ·输出变量… 输出到FB外部的变量
    ·输入输出变量… 具有输入及输出功能的变量
    ·“空栏”… FB内部使用的变量
    2)调用:FB1( I_Test := D0,O_Test := D1,IO_Test := D100); 输出变量的记述可以
    省略。可以将FB块拖到程序中。
    7、MELSEC函数
    1)软元件的输出
    BOOL OUT_M(BOOL EN,BOOL D);
    2)低速型定时器
    BOOL TIMER_M(BOOL EN, BOOL TCoil, ANY16 TValue);
    TS:定时器触点;TC:定时器线圈;TN/T:定时器当前值
    IF M0 THEN
    TIMER_M (M1,TC0,K10);
    END_IF;
    (*M0=ON且M1=ON时,开始计数。 *)
    (*M0=ON且M1=OFF时,清除计数。 *)
    (*M0=OFF且M1=ON时,停止计数。计数值不被清除。 *)
    (*M0=OFF且M1=OFF时,停止计数。计数值不被清除。 *)
    3)高速型定时器
    BOOL TIMER_H_M(BOOL EN, BOOL TCoil, ANY16 TValue);
    4)计数器
    BOOL COUNTER_M(BOOL EN, BOOL CCoil, ANY16 CValue);
    CS:计数器触点;CC:计数器线圈;CN/C:计数器当前值
    5)软元件的复位
    BOOL RST_M(BOOL EN, ANY_SIMPLE D);
    6)相同的 16 位数据块传送
    BOOL FMOV_M(BOOL EN, ANY16 S1, ANY16 n, ANY16 D); (D起的n 点
    =S1
    )
    7)n位左移,将指定的BIN16位数据向左移动n位。
    BOOL SFL_M(BOOL EN, ANY16 n, ANY16 D);
    SFL_M(X0, K4, D100); 将D100 的数据向左移动4 位
    8)智能功能模块1字数据读取
    从指定的智能功能模块·特殊功能模块内的缓冲存储器的指定的地址对指定
    点数的数据进行读取。
    BOOL FROM_M(BOOL EN, ANY16 n1, ANY16 n2, ANY16 n3, ANY16 D);
    (*如果执行条件X0变为ON,则从输入输出编号040~05F中安装的智能功
    能 *)
    (*模块的缓冲存储器的地址10读取1字到D0 中。 *)
    FROM_M(X0, H4, K10, K1, D0);
    9)智能功能模块2字数据读取
    从指定的智能功能模块·特殊功能模块内的缓冲存储器的指定的地址对指定
    点数X2 的数据进行读取。
    BOOL DFRO_M(BOOL EN, ANY16 n1, ANY16 n2, ANY16 n3, ANY32 D);
    (*如果执行条件X0 变为ON,则从输入输出编号040~05F中安装的智能 *)
    (*功能模块的缓冲存储器的地址602,603 中读取2字数据至DwResult。 *)
    DFRO_M(X0, H4, K602, K1, DwResult);
    10)智能功能模块1字数据写入
    将从指定的软元件算起n3 点的数据写入到指定的智能功能模块·特殊功能模
    块内缓冲存储器的指定的地址以后。
    BOOL TO_M(BOOL EN, ANY16 S1, ANY16 n1, ANY16 n2, ANY16 n3);
    (*如果执行条件X0 变为ON,则将3 写入到输入输出编号040~05F中安装的智能 *)
    (*功能模块的缓冲存储器的地址0中。 *)
    TO_M(X0, K3, H4, K0, K1);
    11)智能功能模块2字数据写入
    将从指定的软元件算起n3×2 点的数据写入到指定智能功能模块·特殊功能
    模块内的缓冲存储器的指定地址以后。
    BOOL DTO_M(BOOL EN, ANY32 S1, ANY16 n1, ANY16 n2, ANY16 n3);
    (*如果执行条件X0 变为ON,则将0 写入到输入输出编号040~05F中安装的智能 *)
    (*功能模块的缓冲存储器地址41,42 中。 *)
    DTO_M(X0, K0, H4, K41, K1);
    12)对指定的值进行以e为底的自然指数运算
    BOOL EXP_E_MD(BOOL EN, REAL S1, REAL D);
    13)时钟数据的读取
    BOOL DATERD_MD(BOOL EN, ANY16(7) D);
    D[0]:年(公历: 1980~2079);D[1] 月(1~12) ;D[2] 日(1~31) ;D[3] 时(0~
  2. D[4] 分(0~59) ;D[5] 秒(0~59) ;D[6] 星期(0~6)
    (ARRAY [0…6] OF ANY16 )
    14)时钟数据的写入
    BOOL DATEWR_MD(BOOL EN, ANY16(7) S);
    8、IEC函数
    1)DINT_TO_REAL、BOOL_TO_DINT、BOOL_TO_INT、DINT_TO_BOOL、
    DINT_TO_INT、DINT_TO_REAL、
    INT_TO_BOOL 、INT_TO_DINT 、INT_TO_REAL 、REAL_TO_DINT 、
    REAL_TO_INT
    2)绝对值ABS
    3)对指定的数据的自然指数进行运算。 REAL EXP( REAL S1 );
    4)在指定的数据之间进行除法运算,并对其余数进行运算。
    BOOL MOD_E( BOOL EN, ANY_INT S1, ANY_INT S2, ANY_INT D1 );
    9、PID 控制指令
    “不完全微分PID运算”和“完全微分PID运算”是相互独立的,因此可以
    同时执行。
    1)完全微分
    PIDINIT S S:PID控制数据起始数据。使用软元件点数2+10xn
    数据区 内容 备注
    +0 总环路数
    +1 一次扫描中的执行环路数
    +2 PID运行方式(正0/反) 回路1
    +3 采样周期(Ts)1~6000(10MS)
    +4 比例常数(kp)1~10000(0.01)
    +5 积分常数(Ti)1~32767(100MS)
    +6 微分常数(Td)0~30000(10MS)
    +7 过滤系数0~100(%)
    +8 操作值下限(MVLL)-50~2050
    +9 操作值上限(MVHL)-50~2050
    +10 操作值变化率(deltaMVL)0~2000
    +11 过程值变化率(deltaPVL)0~2000

+12 回路2

(1) 采样周期就是执行PID运算的周期。
每次执行PID 运算指令 时,将一次扫描的测定时间累加到至上一次扫描测定
时间中。
当累计值达到或超出设置采样周期时,执行相应环路的PID运算。
(2) 用于PID运算的采样周期的测定值以10ms 为单位进行舍取。
例如,如果采样周期设置为50ms,测定值为57ms,则以50ms 为采样周期
PID运算;如果测定值为64ms,则以60ms 为采样周期执行PID运算。
正0 运行方式:PV>SV=>MV增大
根据所设置的SV(设置值)和PV(测定值)执行PID运算:
PIDCONT S PID运算。使用软元件点数10+18xn P63
+0 初次处理标识W 通用数据设置区
+1 res
+2 res
+3 res
+4 res
+5 res
+6 res
+7 res
+8 res
+9 res
+10 设置值(SV)W 0 至2000 SV设置区 环路1
+11 测定值(PV)W -50 至2050
+12 自动操作值(MV)R -50 至2050
+13 过滤后的测定值(PVf)R -50 至2050
+14 手动操作值(MVman)W -50 至2050
+15 手动/自动选择(MAN/AUTO)W 0 自动!!!不是0/1
+16 报警(ALARM)R/W
+17~+27RES
+28 环路2

BOOL S_PIDINIT(EN,ANT16 s);
将使用回路数的PID 控制用数据,批量地登录到CPU 模块内部,置为可以进行
PID控制状态
将n 中指定的回路No.的运算参数变更为s 中指定的软元件编号以后存储的
PID控制用数据
BOOL PIDPRMW(BOOL EN,ANY16 n,ANY16 S);
n:变更的回路,S:存储变更的PID 控制用数据的软元件的起始编号
BOOL PIDCONT(EN,ANY16 s);
s:输入输出数据区域中分配的软元件的起始编号
(1) 执行 PIDCONT指令时进行采样周期的计测及PID运算。
(2) PIDCONT指令以s 中指定的软元件编号以后设置的输入输出数据区域的设
置值 (SV)、测定值
(PV) 为基础进行 PID 运算,将运算结果存储到输入输出数据区域的自动操作
量 (MV) 区域中。
(3) 在经过了采样周期的设置时间后的最初的 PIDCONT 指令执行时进行
PID运算。
2)不完全微分
S_PIDINIT S S:PID控制数据起始数据 使用软元件点数10+14xn P54
数据区 内容 备注
+0 总环路数
+1 一次扫描中的执行环路数
+2 PID运行方式(正0/反) 回路1
+3 采样周期(Ts) 1 至6000 (单位: 10ms)
+4 比例常数(kp) 1 至10000 (单位: 0.01)
+5 积分常数(Ti) 1 至32767 (单位: 100ms)
+6 微分常数(Td) 0 至30000 (单位: 10ms)
+7 过滤系数 0 至100(%)
+8 操作值下限(MVLL) -32768 至32767
+9 操作值上限(MVHL) -32768 至32767
+10 操作值变化率(deltaMVL)-32768 至32767
+11 过程值变化率(deltaPVL)-32768至32767
+12 0
+13 微分增益(Kd) 0 至32767 (单位: 0.01)
+14 0
+15 0

+16… 回路2
S_PIDCONT S PID运算。使用软元件点数10+23xn P61
+0 初次处理标识W 通用数据设置区
+1 res
+2 res
+3 res
+4 res
+5 res
+6 res
+7 res
+8 res
+9 res
+10 设置值(SV)W SV设置区 环路1
+11 测定值(PV)W
+12 自动操作值(MV)R
+13 过滤后的测定值(PVf)R
+14 手动操作值(MVman)W
+15 手动/自动选择(MAN/AUTO)W
+16 报警(ALARM)R/W
+17~+32RES
+33 环路2

10、其他
1)LDP, LDF
LDP 是上升沿脉冲运算开始指令,仅在指定位软元件的上升沿时 (OFF→ON)
导通。字软元件的位指定时,仅在指定位发生0→1 的变化时导通。
BOOL LDP(EN,Bit s);s 作为触点使用的软元件
2)实现DWORD_AS_WORD(ds, wLow, wHigh):
DMOV(TRUE,ds,K8M0);
MOV(TRUE,K4M0 ,wLow);
MOV(TRUE,K4M16,wHigh);
3)
SM400:总是ON
SM401:总是OFF
SM402:仅运行以后一次扫描时ON
SM403:仅运行以后一次扫描时OFF
SM409:0.01 秒时钟
SM410:0.1 秒时钟
SM411:0.2秒时钟
SM412:1秒时钟
SM413:2秒时钟
SM414:2n 秒时钟(n=SD414)
SM415:2n 毫秒时钟(n=SD415)
参考:
·三菱Q系列 结构化文本(ST)编程参考手册
·MELSEC-QLF结构体编程手册(结构化文本篇)
·MELSEC-QLF结构体编程手册(公共指令篇)
·MELSEC-QLF结构体编程手册(应用函数篇)
·MELSEC-QLF结构体编程手册(特殊指令篇)

Q 系列PLC ST 语言编程笔记相关推荐

  1. 三菱PLC程序 三菱F5U 系列PLC程序,ST语言编程,配触摸屏程序,恒压测试设备,可递增,可一直保持恒压,递增的阶梯和递增的先后顺序都可在触摸屏上设置

    三菱PLC程序 三菱F5U 系列PLC程序,ST语言编程,配触摸屏程序,恒压测试设备,可递增,可一直保持恒压,递增的阶梯和递增的先后顺序都可在触摸屏上设置,有监控曲线和历史记录,PLC采用ST语言进行 ...

  2. 三菱MR-JE-C伺服电机FB功能块(适用Q系列PLC) 流水线项目,16个MR-JE-C电机,为了加快编程速度,特意做的一个FB功能块

    三菱MR-JE-C伺服电机FB功能块(适用Q系列PLC) 流水线项目,16个MR-JE-C电机,为了加快编程速度,特意做的一个FB功能块,内部采用局部变量+全局缓冲区的方式进行编程,多次调用不冲突! ...

  3. 三菱Q系列PLC编程TCP Socket套接字程序

    三菱Q系列PLC编程TCP Socket套接字程序 用于和上位机通讯 支持掉线自动后自动重连 附详细注释和指令说明! 编号:969665940010231沉默物语

  4. 三菱服务器动力插头型号,三菱q系列plc可编程控制器型号及说明.pdf

    CPU 主机+ 电源模块+基板+扩展模块+模拟量模块+定位模块 三菱 Q 系列 PLC 可编程控制器型号及说明 型号 说明 [ CPU 模块] Q00JCPU 程序容量:8K 步 Q00JCPU-SE ...

  5. 三菱q系列 服务器,三菱中大型Q系列PLC介绍

    三菱PLC分为两大类:一是FX系列PLC,是整体是结构,主机里面集成了I/O等各种功能:二是Q系列PLC,采用模块化结构,通过被板总线插槽将CPU,I/O,特殊功能模块连接起来. 一QCPU介绍 QC ...

  6. 三菱PLC支持哪种OPC服务器,OPC-访问三菱Q系列PLC方法

    <OPC-访问三菱Q系列PLC方法>由会员分享,可在线阅读,更多相关<OPC-访问三菱Q系列PLC方法(6页珍藏版)>请在人人文库网上搜索. 1.技术主题-OPC访问三菱q系列 ...

  7. codesys工程ST语言学习笔记(五)打开压缩文件projectarchive失败,指定的工程不能被加载

    codesys解压文件projectarchive失败 不会编译程序或者建立工程的点击第一篇文章codesys工程ST语言学习笔记(一)建立工程与编译 不会编译程序或者建立工程的点击第一篇文章code ...

  8. plcst语言编程教程_PLC ST语言编程之我的心得-专业自动化论坛-中国工控网论坛...

    以前编程都是习惯用梯形图,每次编运算程序,都得写很多条运算程序.调试且不说,就光重复使用就得复制好几遍,还要一遍一遍的改寄存器地址,很是麻烦.一次偶然的机会,我用到了一款PLC可以使用ST 语言编程的 ...

  9. 三菱MR-JE-C伺服电机FB功能块(适用Q系列PLC) 流水线项目

    三菱MR-JE-C伺服电机FB功能块(适用Q系列PLC) 流水线项目,16个MR-JE-C电机,为了加快编程速度,特意做的一个FB功能块,内部采用局部变量+全局缓冲区的方式进行编程,多次调用不冲突! ...

  10. 三菱Q系列PLC连接多个国产触摸屏且通过液晶显示器以太网通信及常见问题解决办法

    CHNet-Q采用模块化设计,带通讯线.不占用PLC编程口,即编程软件/上位机软件通过以太网对 现场常见的问题: 现场的多个触摸屏Q系列PLC连接并且通过液晶显示器ModbusTCP通信,出现通过CH ...

最新文章

  1. 百度,一面,二面知识点
  2. CentOS 6.6下双网卡共享上网配置
  3. oracle插入数据语句实例,oracle Insert 用法总结
  4. linux如何备份网站,linux怎么备份网站
  5. Java short 无符号右移_char类型byte类型或short类型进行无符号右移遇到的神奇问题...
  6. C/C++知识分享:C++常用内置函数你会几个,使用过几次呢?
  7. [已解决] org.hibernate.AnnotationException:未为实体类指定标识符
  8. 动态链接库的设计(DLL)
  9. y85手机Android密码,vivoy85忘记解锁密码怎么办?vivoy85解锁屏幕锁教程工具
  10. gbase oracle mysql_项目从Oracle数据迁移到GBase数据库时解决适配遇到的问题
  11. android 游戏摇杆ui,LayaBox实现2D游戏八方向虚拟摇杆
  12. 二维傅里叶变换的矩阵表示
  13. python爬虫区划代码表
  14. 服务器、网站被攻击了怎么办?
  15. C# Xml序列化Dictionary
  16. ArcGIS使用(二)ArcGIS加载天地图
  17. ajax实现文件的上传(局部刷新页面,文件上传)
  18. 氮化物 聚多巴胺修饰六方氮化硼|铁颗粒周期性填充的竹节状氮化硼纳米管|纳米氮化硼(BN)包覆的Al2O3复合粉|铜纳米线填充氮化硼纳米管
  19. 《硬件架构的艺术》读书笔记:Chapter 1 亚稳态的世界
  20. node.js的安装配置教程

热门文章

  1. Windows设置防火墙允许指定应用正常使用网络
  2. DJL 教程 1.1 什么是AI人工智能
  3. 07.JavaScript弹窗——alert、prompt、confirm
  4. 《计算机导论》学后感想,学习《计算机导论》后的感想.doc
  5. 魅族可以Android编程吗,魅族 - 融云开发文档
  6. LPDDR4 与 DDR4 与 LPDDR4x 内存:有何不同?
  7. 视频解析接口公众号对接教程
  8. 中国科学院计算机研究生面试,19年中科院信工所考研经验分享【初试+复试】
  9. android 仿饿了么地图,微信小程序仿饿了么地址定位、筛选与回传
  10. 查看服务器阵列卡型号6,怎么查看 dell 阵列卡型号#如何通过服务器自检画面的信息查看当前阵列卡的型号...