当前位置:文档之家› SCL指令

SCL指令

SCL指令
SCL指令

欧姆龙PLC指令集

基本指令 位指令 SET OK RSET OK SETA批量置位OK RSTA批量复位OK 注意所填的数值为&0-65535或者#0-FFFF,注意加上前面的符号。 SETB OK RSTB OK 自锁指令 KEEP OK 定时器指令 编号0-4095 100ms TIM OK 注意是100ms, 数值形式要加#,TIM 0 #50 = 100ms*50 = 5s 10ms TIMH 1ms TMHH 注意定时器编号避免重复,1个号只能作为一个类型的定时器。 累计定时器100ms TTIM 特殊定时器指令 以下的定时器号是CIO,W,A,H,D等等,与上面的两种定时器号不同,需要注意。 使用是不要在其他地方占用已经使用的定时器号,如定时器号为W3,则其他地方就不要再输出W3.0,W3.1等等,否则会引起未知的错误。 长定时器 100ms TIML 操作数SV是双字32位,注意传送的时候要用MOVL,传送双字, 多输出定时器指令 100ms MTIM 关于定时器,计数器的SV,PV值 其中使用的是BCD码格式,BCD码的意思是使用16进制的数据来代表10进制的数据,所以定时器中的数据都是用“# ”来表示的。

CNT OK 编号0-4095 计数值BCD数据 可逆计数器(可加可减计数器)CNTR 定时器计数器复位指令CNR 将状态位变为0 当前值变为9999 顺序控制指令步进指令 SNXT STEP 步进结束时,仅需指定一个空的W地址即可。 常用功能指令传送指令 MOV 单字传送 MOVL 双字传送 MVN 取反传送 MVNL 取反双字传送 MOVB 位传送(用来操作D区域的) MOVD 数字传送(最多4个D) XFER 块传送(批量传送,一一对应) BSET 块设定(批量传送,一对多) 自加自减指令 ++ ++L 双字 -- --L 双字

在西门子PLC中使用SCL语言编程的技巧

在西门子PLC中使用SCL语言编程的技巧

在西门子PLC中使用SCL语言编程的技巧 前言:两年半前我就在工控网上发表了有关SCL编程的知识#lt;#lt;在 S7300400型PLC中使用高级语言编程#gt;#gt;,但发表完后,即使我自己都从没有把任何使用SCL编写的程序用到实际控制中,当时的感觉是使用SCL编程到处受限,没有STL语言灵活和强大。直到最近使用施耐德的Unity软件编程,并使用这种已经国际标准化的文本语言(等同于西门子的SCL语言),才体会到它的优点:#lt;1#gt;、程序容易阅读,便于诊断和维护;#lt;2#gt;、程序容易在不同厂家之间的PLC之间转换。西门子的STL语言是强大,但难于阅读,编写程序也需要异常小心,其最强大的可能是它的寄存器寻址(类似于一些计算机高级语言中的地址指针),SCL没有这个功能,那就多费一些程序代码来实现同样的功能,程序是否优秀更应该看重程序的架构和提高程序生产效率的标准化,好的PLC程序不应该只有自己明白,而是让更多的人明白。在西门子PLC中使用SCL语言的场合一般是编写标准功能块FB,其编程方式和西门子的其他编程语言,如梯形图Lad、语句表STL是完全不同的,同时为了实现程序的国际标准化,即为了方便的将程序代码移植到不同厂家的PLC系统上,尽量不要在SCL中使用西门子独有的功能块。 1、在FB块中使用结构编写FB块的准则,就是其使用的内部变量尽量与外部隔离,除了像PLC的新启动/重启动标志,以及一些方波/脉冲波等全局变量可以在FB块中使用外,其他的任何全局变量都不应该在FB内部使用,即使是自定义结构也应该在FB中单独定义,在FB块中使用结构应该在静态类型变量中定义, 如下:VAR // Static Variables IM:STRUCT //Data structure of Internal Flags H1_AFCountImp:BOOL:=False; // Aux Flag Counter Impulse H1_CountImp:BOOL:=False; // Counter Impulse H1_ELCountMV:BOOL:=False; // Endless Counter Maximum Value

SCL示例

示例一:控制传送带 下图显示了以电气方式激活的传送带。在传送带的开始端有两个按钮开关: S1 用于启动,S2 用于停止。在传送带的末端也有两个按钮开关: S3 用于启动,S4 用于停止。从任何一端都可启动或停止传送带。 实施 下表列出了所用变量的定义: 以下 STL 程序说明了如何实现此任务: SCL IF "StartSwitch_Left" OR "StartSwitch_Right" THEN "MOTOR_ON" := 1; END_IF; IF "StopSwitch_Left" OR "StopSwitch_Right" THEN

"MOTOR_OFF" := 1; 按下启动开关“StartSwitch_Left”或“StartSwitch_Right”时,将启动传送带电机。按下停止开关“StopSwitch_Left”或“StopSwitch_Right”时,将停止传送带电机。

示例二:检测传送带的传送方向 下图所示为配有两个光电屏蔽(PEB1 和 PEB2)的传送带。光电屏蔽用于检测包裹在传送带上的传送方向。 实施 下表列出了所用变量的定义: 以下 STL 程序说明了如何实现此示例: SCL IF "LS1" = 1 AND NOT "LS2" = 0 THEN "LEFT" = 1; IF "LS2" = 1 AND NOT "LS1" = 0 THEN "RIGHT" := 1; IF "LS2" = 0 THEN "RIGHT" := 0; IF "LS1" = 0 THEN "LEFT" = 0;

如果光电屏蔽“PEB1”的信号状态为“1”同时光电屏蔽“PEB2”的信号状态为“0”,则传送带上的包裹向左移动。如果光电屏蔽“PEB2”的信号状态为“1”同时光电屏蔽“PEB1”的信号状态为“0”,则传送带上的包裹向右移动。 //当两个光电屏蔽的信号状态均为“0”时,则向左或向右传送的指示灯将熄灭。

通过调试器如何在线测试S7-SCL 源代码

通过调试器如何在线测试 S7-SCL 源代码?
推荐文档: 西门子工程师推荐本文档!
描述: 调试器帮助对 S7-SCL 源代码进行一个简单调试,如果在编译 S7-SCL 源代码过程没有错误发生,能够通过利用 断点找出程序逻辑错误,并在运行时监视 S7-SCL 代码的函数功能。过程如下面表格中描述:
1 过程: . 1 在 S7-SCL 编辑器中通过"Tools > Settings..." 打开"Settings"对话框,选择 "Compiler"选项,激活创建诊断信息项,确认并退出。
图 01 注意: 在这种情况下, 测试所必需的参考数据在编译过程自动创建, 这增加了程序内存的要求,同时自动化系统运 行时间也会加长。
2
通过"Debug > Operation > Test operation",改变 CPU 在测试模式下。 注意: 在这种模式下, 所有的调试功能通过 PG/PC 可以不受限制地使用, 这大大加长了 CPU 的循环周期。如果 CPU 是在测试模式,必须确认 CPU 或者生产能够允许循环周期的变长。例如,在这种情况下,由于通过程序控制 的语句状态在每个周期都被要求得到,导致 CPU 的循环周期变长。

3 4 5 6
通过 "File > Save"或者工具栏保存按钮保存程序。 通过"File > Compile" 或者通过工具栏编译按钮编译程序。 通过"Target system > Load" 或者通过工具栏下载按钮下载程序到 CPU 中。 放光标在要调试的程序行位置, 通过菜单"Debug > Set breakpoint"。 在 S7-SCL 语句旁边,断点显示为一个有颜色的小圆点。 7 如果对一个 FB 功能块有多个实例,必须对特定实例定义特定功能,即处理 前需要定义相应的背景 DB 块。
通过"Debug > Call environment blocks...",在下图 02 中选择背景 DB 块并确认。
图 02 这种情况下,此背景块对应的功能块被调用时,背景块也开始执行。
8 通过"Debug > Edit breakpoints..." 选项,点击打开数据块,选择相应 DB,如 图 02 所示并确认。

西门子SCL编程练习

西门子SCL编程:Word_To_Bit/Bit_To_Word 本文档用于帮助刚刚开始学习西门子SCL编程语言的朋友们!希望对大家有所用处! BXL 2012-11-13 一、Word_To_Bit例程 FUNCTION FC102:VOID TITLE = 'Block Title' VERSION: '1.0' AUTHOR: BXL KNOW_HOW_PROTECT // Block Parameters VAR_INPUT InVal:WORD; END_VAR VAR_OUTPUT OutVal0:BOOL; OutVal1:BOOL; OutVal2:BOOL; OutVal3:BOOL; OutVal4:BOOL; OutVal5:BOOL; OutVal6:BOOL; OutVal7:BOOL; OutVal8:BOOL; OutVal9:BOOL; OutVal10:BOOL; OutVal11:BOOL; OutVal12:BOOL; OutVal13:BOOL; OutVal14:BOOL; OutVal15:BOOL; END_VAR BEGIN

OutVal0:=(InVal AND 16#0001)=16#0001; OutVal1:=(InVal AND 16#0002)=16#0002; OutVal2:=(InVal AND 16#0004)=16#0004; OutVal3:=(InVal AND 16#0008)=16#0008; OutVal4:=(InVal AND 16#0010)=16#0010; OutVal5:=(InVal AND 16#0020)=16#0020; OutVal6:=(InVal AND 16#0040)=16#0040; OutVal7:=(InVal AND 16#0080)=16#0080; OutVal8:=(InVal AND 16#0100)=16#0100; OutVal9:=(InVal AND 16#0200)=16#0200; OutVal10:=(InVal AND 16#0400)=16#0400; OutVal11:=(InVal AND 16#0800)=16#0800; OutVal12:=(InVal AND 16#1000)=16#1000; OutVal13:=(InVal AND 16#2000)=16#2000; OutVal14:=(InVal AND 16#4000)=16#4000; OutVal15:=(InVal AND 16#8000)=16#8000; END_FUNCTION 二、Bit_To_Word例程FUNCTION FC122:VOID TITLE = 'Block Title' VERSION: '1.0' AUTHOR: BXL KNOW_HOW_PROTECT // Block Parameters VAR_INPUT InVal0:BOOL; InVal1:BOOL; InVal2:BOOL; InVal3:BOOL; InVal4:BOOL; InVal5:BOOL; InVal6:BOOL; InVal7:BOOL; InVal8:BOOL; InVal9:BOOL; InVal10:BOOL; InVal11:BOOL; InVal12:BOOL; InVal13:BOOL; InVal14:BOOL; InVal15:BOOL;

西门子PLC中使用SCL语言编程的技巧

在西门子PLC中使用SCL语言编程的技巧 前言:两年半前我就在工控网上发表了有关SCL编程的知识<<在S7300400型PLC中使用高级语言编程>>,但发表完后,即使我自己都从没有把任何使用SCL编写的程序用到实际控制中,当时的感觉是使用SCL编程到处受限,没有STL语言灵活和强大。直到最近使用施耐德的Unity软件编程,并使用这种已经国际标准化的文本语言(等同于西门子的SCL语言),才体会到它的优点:<1>、程序容易阅读,便于诊断和维护;<2>、程序容易在不同厂家之间的PLC之间转换。西门子的STL语言是强大,但难于阅读,编写程序也需要异常小心,其最强大的可能是它的寄存器寻址(类似于一些计算机高级语言中的地址指针),SCL没有这个功能,那就多费一些程序代码来实现同样的功能,程序是否优秀更应该看重程序的架构和提高程序生产效率的标准化,好的PLC程序不应该只有自己明白,而是让更多的人明白。在西门子PLC中使用SCL语言的场合一般是编写标准功能块FB,其编程方式和西门子的其他编程语言,如梯形图Lad、语句表STL是完全不同的,同时为了实现程序的国际标准化,即为了方便的将程序代码移植到不同厂家的PLC系统上,尽量不要在SCL中使用西门子独有的功能块。 1

1、在FB块中使用结构编写FB块的准则,就是其使用的内部变量尽量与外部隔离,除了像PLC的新启动/重启动 标志,以及一些方波/脉冲波等全局变量可以在FB块中使用外,其他的任何全局变量都不应该在FB内部使用,即使是自定义结构也应该在FB中单独定义,在FB块中使用结构应该在静态类型变量中定义, 如下: VAR H1_CountImp:=Imp; 2、在SCL中替代Set/Reset指令的方法 SCL中不存在Set/Reset指令,或者说也没有必要使用。在SCL中,不使 用排他条件Else的条件语句就是一个Set/Reset指令。 如下编程: IF THEN Variable name:=1; END_IF; 其等同于: (S) 2

欧姆龙PLC知识

欧姆龙PLC知识

————————————————————————————————作者:————————————————————————————————日期:

SCL2指令应用案例 条件:变送器的输出信号为0-10V,对应温度为-100--200摄氏度;CP1H的模拟量输入量程设置为0-10V, 分辨率选择6000 目的:使用SCL2指令将模拟量转换得到的数据0-6000(BIN)对应缩放到-100--200(BCD)摄氏度显示 输出。 程序如下: SCL2控制字解释: 200:CP1H的模拟量输入通道1 D100:偏移量(带符号BIN)详见下图 D101:ΔX(带符号BIN)详见下图 D102:ΔY(BCD)详见下图 D200:转换结果通道 结果:程序执行后就可以实现0-6000(BIN)转换到-100--200(BCD)摄氏度显示了。 注:因为BCD数是以十六进制来表示十进制数据的,因此对应的温度值应该用16进制方式去监视。例如:当200CH中的数据是&4000(即6.66V电压输入),那么用十六进制监控数据D200应该显示#100。 &符号表示十进制数;#表示十六进制数。

SCL指令应用案例 条件:变送器的输出信号为0-10V,对应压力为0-400MPa;CP1H的模拟量输入量程设置为0-10V,分辨 率选择6000。 目的:使用SCL指令将模拟量转换得到的数据0-6000(BIN)对应缩放到0-400MPa(BCD)显示输出。 程序如下: 结果:程序执行后就可以实现0-6000(BIN)转换到0-400(BCD)的压力值了。 注:因为BCD数是以十六进制来表示十进制数据的,因此对应的压力值应该用16进制方式去监视。例如:当200CH中的数据是&3000(即5V电压输入),那么用十六进制监控数据D200应该显示#200。 &符号表示十进制数;#表示十六进制数。 使用CPM1A-AD041的模块采集模拟量4-20ma的信号,该模拟量信号取自一位移传感器信号,代表一个0-100mm的距离,要怎么才能把输入通道里 的数据转换成所对应的这个距离值呢?

浅谈西门子PLC的SCL语言编程

浅谈西门子PLC的“SCL语言”编程 随着现代工控技术的不断发展,可能很多使用过PLC的技术人员都有这么一个感受:传统的‘梯形图’编程方式在面对越来越复杂的控制要求时,已显得力不从心。 其实,现在很多大品牌的中高级PLC都支持国际电工委员会IEC61131标准中规范的五种编程语言的混合编程,即梯形图(LD)、结构化文本(ST)、流程图(SFC)、指令表(IL)和功能块(FB)。在这五种编程语言中,我认为梯形图+结构化文本是一种不错的组合,用梯形图写逻辑控制,用结构化文本写计算,这样可以加快编程效率并且使程序的可读性大大提高。而流程图编程则非常适用于一些“顺序控制”场合。至于指令表和功能块,我个人认为实用性并不太大。 西门子S7系列PLC在国内工控领域中使用很广,它的编程软件Step7默认情况下只支持梯形图和指令表编程,但通过安装“S7-SCL”软件包和“S7-Graph”软件包可实现结构化文本和流程图编程。下面,笔者就结合自己的一些使用经验介绍一下如何在Step7中用结构化文本编程。 一、 什么是结构化文本编程 结构化文本是一种类似于计算机高级语言的编程方式,它的语法规范接近计算机中的PASCAL语言。具体的语法规则大家可参考西门子的相关手册,在此就不做详细介绍。下图为Step7中的SCL编程界面:

二、 S7-SCL软件包的安装 在Step7 中,结构化文本编程被称为结构化控制语言(Structured Control Language),缩写为SCL. Step7 V5.3的软件包中已包含了S7-SCL软件包,在安装Step7 V5.3时,系统会提示是否要安装S7-SCL,把复选框打钩即可,见下图: Step7 V5.3的软件包里包含了SCL 软件包和流程图编程软件包 S7-GRAPH

欧姆龙PLC指令的列表

CP1H: 1指令助记符: 装载LD装载非LD NOT与AND与非AND NOT或OR或非OR NOT 与装载AND LD或装载OR LD非NOT条件ON UP条件OFF DOWN 2指令助记符: 输出OUT输出非OUT NOT保持KEEP上升沿微分DIFU下降沿微分DIFD 置位SET复位RSET多位置位SETA多位复位RSTA单一位置位SETB单一位复位RSTB 3指令助记符: 结束END空操作NOP联锁IL联锁解除ILC多联锁区别保持MILH多联锁区别释放MILR 多联锁解除MILC跳转JMP跳转结束JME条件跳转CJP FOR循环FOR循环终止BREAK 下一个循环NEXT 4指令助记符:定时器TIM 5编辑指令:数据移位指令,递增/递减指令,四则运算指令,转换指令,逻辑指令,特殊算术指令,表格数据处理指令,数据控制指令。 6指令助记符 移位寄存器SFT可逆移位寄存器SFTR字移位WSFT算术左移ASL算术右移ASR循环左移ROL循环右移ROR一个数字左移SLD一个数字右移SRD左移N位NASL双字左移N 位NSLL右移N位NASR双字右移N位NSRL 7指令助记符 二进制递增++双字二进制递增++L二进制递减--双字二进制递减--L BCD递增++B,双字BCD递增++BL,BCD递减--B,双字BCD递减--BL 8指令助记符 无进位带符号二进制加法+,无进位带符号双字二进制加法+L,有进位带符号二进制加法+C,有进位带符号双字二进制加法+CL,无进位BCD加法+B,无进位双字BCD加法+BL,有进位BCD加法+BC,有进位双字BCD加法+BCL,无进位带符号二进制减法-无进位带符号双字二进制减法-L,有进位带符号二进制减法-C,有进位带符号双字二进制减法-CL,无进位BCD减法-B,无进位双字BCD减法-BL,有进位BCD减法-BC 有进位双字BCD减法-BCL,带符号二进制乘法*,带符号双字二进制乘法*L,BCD乘法*B,双字BCD乘法*BL,带符号二进制除法/,带符号双字二进制除法/L,BCD除法/B 双字BCD除法/BL 9指令助记符 BCD→二进制BIN,双字BCD→双字二进制BINL,二进制→BCD BCD 双字二进制→双字BCD BCDL 二进制求补NEG,数据译码MLPX,数据编码DMPX,ASCⅡ转换码ASC, ASCⅡ→HEX HEX 10指令助记符 逻辑与ANDW,双字逻辑与ANDL,逻辑或ORW,双字逻辑或ORWL,异或XORW 双字异或XORL,求补COM,双字求补COML 11指令助记符 算术处理APR,位计数器BCNT 12指令助记符 浮点数→16位FIX,浮点数→32位FIXL,16位→浮点数FLT,32位→浮点数FLTL

SCL使用说明

SuperComEdit V4.xx / SCL2008V2.xx 使 用 说 明 本说明书可能与发布的软件略有区别 2008.06

第一章安装与设置 (3) 1.1 安装软件 (3) 1.2 连接显示屏与电脑——串口通讯 (3) 1.3 连接显示屏与电脑——以太网通讯 (3) 1.4 设置——串口通讯 (5) 1.4 设置——网络通讯 (6) 1.5 NTP协议,网络自动时钟校准 (7) 第二章运行界面 (8) 2.1 工具栏 (8) 2.2 节目表 (9) 2.3 节目属性 (9) 2.4 模拟显示区 (9) 第三章参数设置 (11) 3.1 显示屏硬件的驱动特性 (11) 3.2 显示屏的大小、颜色等首选项 (11) 第四章制作节目 (13) 4.1 添加节目 (13) 4.2 节目的播放时间和改变区域大小 (13) 4.3 定时播放节目和设定区域间隔 (13) 4.4 添加Flash动画、Word文档和图片 (14) 4.5 删除节目、删除待播放的文件 (15) 第五章发送节目及远程管理 (16) 5.1 整理数据 (16) 5.2 多套节目管理(目录管理) (16) 5.3 上传文件 (16) 5.4 使用SD卡(SuperComm) (17) 第六章设计时钟显示版面 (18) 6.1 背景文字 (18) 6.2 时钟项 (18) 6.3 倒计时项 (18) 6.4 温、湿度 (19) 6.5 串口数据 (19) 第七章运行信息、升级操作及安全机制 (20) 7.1 运行信息 (20) 7.2 升级操作 (20) 7.3 安全机制 (21)

第一章安装与设置 1.1 安装软件 运行 SCEditSetup.exe/SCL2008Setup.exe程序,屏幕上出现如下的窗口: 点击 [Next],按照提示选择,或全部使用默认项,即可将 SuperCommEdit/SCL2008Edit 程序安装到计算机中,并自动生成快捷方式SuperComm/SCL2008。 安装完后,可以调整节目区域的大小和试着制作节目,但在将制作好的节目发送到显示屏上播放前,还需要连接显示屏与计算机,并且在节目制作软件里对通讯相关的参数进行设置。 1.2 连接显示屏与电脑——串口通讯 如果是采用串口进行通讯,则使用2、3交叉的通讯线连接计算机的RS232串口和显示屏的RS232串口,或连接显示屏的RS422/RS485串口。 1.3 连接显示屏与电脑——以太网通讯 显示屏可以采用以太网方式访问,也可以采用串口进行通讯。 下面两个图片标示了RJ45水晶头的第1脚位置以及EIA/TIA的布线标准中规定的两种双绞线的线序568A和与568B。 如果计算机与显示屏直接连接,网线的一头采用568A标准,另一头采用568B标准制作水晶头。

欧姆龙PLC编程入门[1]

PLC初级培训教材 第一章电气系统及PLC简介 一、设备电气系统结构简介设备电气系统一般由以下几部分组成 1、执行机构:执行工作命令 陶瓷行业中常见的执行机构有:电动机(普通、带刹车、带离合)、电磁阀(控制油路或气路的通闭完成机械动作)、伺服马达(控制调节油路、气路的开度大小)等。 2、输入元件:从外部取入信息 陶瓷行业中常见的输入元件有:各类主令电器(开头、按扭)、行程开关(位置)、近接开关(反映铁件运动位置)、光电开关(运动物体的位置)、编码器(反映物体运动距离)、热电偶(温度)、粉位感应器粉料位置)等。 控制中心:记忆程序或信息、执行逻辑运算及判断 常见控制中心部件有各类PLC、继电器、接触器、热继电器、等。 电源向输入元件、控制中心提供控制电源;向执行机构提供电气动力。 二、简单的单台电动机电气系统 例:一台星——角启动的鼠笼式电动机的电气系统 1、一次线路图 2、二次线路图 A B C T Q JC1 R R JC1 SJ JC1 JCJ JCJ JCJ SJ JCY JCJ A JCY 执行 机构 电源 输入 元件 控制中心

3、上图看出,二次回路图中为实现延时控制,要使用一个时间继电器,而在 陶瓷行业中,星——角启动控制可说是一种非常简单的例子,若在陶瓷生产设备上全部采用继电器类来实现生产过程的自动控制,要使用许多的继电器、时间继电器等其它一些电气产品,而该类产品占空间大,且运行不是十分可靠。 三、PLC简介 1、可编程序控制器 早期的PLC只能做些开关量的逻辑控制,因而叫PLC,但近年来,PLC采用微 处理器作为中央处理单元,不仅有逻辑控制功能,还有算术运算、模拟量处理甚至通信联网功能,正确应称为PC,但为了与个人计算机有所区别,仍称其为PLC。 2、PLC的特点 1>、灵活、通用 控制功能改变,只要改变软件及少量的线路即可实现。 2>、可靠性高、抗干扰能力强 ①硬件方面:采用微电子技术开关动作由无触点的半导体电路及大规模集成电路完成, CPU与输入输出之间,采用光电隔离措施,隔离了它们之间电的联系。 ②软件方面:有自身的监控程序,对强干扰信号、欠电压等外界环境定期检查,有故障 时,存现状态到存储器,并对其封闭以保护信息;监视定时器WTD,检查程序循环状态,超出循环时间时报警;对程序进行校验,程序有错误进输出报警信息并停止执行。 3>、使用简单 采用自然语言——梯形图语言编程方式,编程容易,更改方便。输入输出接口可以与各种开关、传感器、继电器、接触器、电磁阀连接,接线简单。 4>、功能强、体积小 纵向——PLC不仅可能完成各种条件控制,还能完成模/数、数/模转换并进行数字运算,可以完成对模拟量的控制;横向——可以控制一台至几台设备,还可实现远距离控制;重量轻,体积小,便于安装。 3、PLC控制思路 以前面的星——角起动二次回路为例。 按控制等效电路可分为三个部分:输入部分、输出部分及控制部分。 1>、输入部分: 接收由各种主令电器发出的操作指令及由各种反映设备状态信息的输入元件传来的各种状态信息。PLC的一个输入点单独对应一个内部继电器,当输入点与输入用的公用脚COM接

欧姆龙(omron)PLC指令

编程指令 顺序输入指令 顺序输出指令 顺序输出指令 定时器和计数器指令比较指令 数据传送指令 指令助记符 装载LD 装载非LD NOT 与AND 与非AND NOT 或OR 或非OR NOT 与装载AND LD 或装载OR LD 非NOT 条件ON UP 条件OFF DOWN 指令助记符 输出OUT 输出非OUT NOT 保持KEEP 上升沿微分DIFU 下降沿微分DIFD 置位SET 复位RSET 多位置位SETA 多位复位RSTA 单一位置位SETB 单一位复位RSTB 指令助记符 结束END 空操作NOP 联锁IL 联锁解除ILC 多联锁区别保持MILH 多联锁区别释放MILR 多联锁解除MILC 跳转JMP 跳转结束JME 条件跳转CJP

FOR循环FOR 循环终止BREAK 下一个循环NEXT 指令助记符 定时器 TIM 编辑指令 数据移位指令 递增/递减指令 四则运算指令 转换指令 逻辑指令 特殊算术指令 特殊算术指令 表格数据处理指令 数据控制指令 指令助记符 移位寄存器SFT 可逆移位寄存器SFTR 字移位WSFT 算术左移ASL 算术右移ASR 循环左移ROL 循环右移ROR 一个数字左移SLD 一个数字右移SRD 左移N位NASL 双字左移N位NSLL 右移N位NASR 双字右移N位NSRL 指令助记符 二进制递增++ 双字二进制递增++L 二进制递减-- 双字二进制递减--L BCD递增++B 双字BCD递增++BL BCD递减--B 双字BCD递减--BL 指令助记符 无进位带符号二进制加法+ 无进位带符号双字二进制加法+L

有进位带符号二进制加法+C 有进位带符号双字二进制加法+CL 无进位BCD加法+B 无进位双字BCD加法+BL 有进位BCD加法+BC 有进位双字BCD加法+BCL 无进位带符号二进制减法- 无进位带符号双字二进制减法-L 有进位带符号二进制减法-C 有进位带符号双字二进制减法-CL 无进位BCD减法-B 无进位双字BCD减法-BL 有进位BCD减法-BC 有进位双字BCD减法-BCL 带符号二进制乘法* 带符号双字二进制乘法*L BCD乘法*B 双字BCD乘法*BL 带符号二进制除法/ 带符号双字二进制除法/L BCD除法/B 双字BCD除法/BL 指令助记符 BCD→二进制BIN 双字BCD→双字二进制BINL 二进制→BCD BCD 双字二进制→双字BCD BCDL 二进制求补NEG 数据译码MLPX 数据编码DMPX ASCⅡ转换码ASC ASCⅡ→HEX HEX 指令助记符 逻辑与ANDW 双字逻辑与ANDL 逻辑或ORW 双字逻辑或ORWL 异或XORW 双字异或XORL 求补COM 双字求补COML 指令助记符

西门子SCL语言编程总结

FUNCTION_BLOCK: 定义块号或者块的符号名称,若是符号,编译 SCL 代码前需要为符号名分配块号。 1.TITLE:显示在对象属性的备注中,建议和1中属性相同。 https://www.doczj.com/doc/7412360943.html,:输入与1中相同的名称。 3.VERSION:版本号0.0—15.5。 4.FAMILY:如果将功能库放入单独的功能库并在库内将功能块分成不同的组显示,为该功能块输入8个字符的名称。 5.AUTHOR:作者 6.KNOW_HOW_PROTECT:如果输入该属性将该功能块移植到别的项目之后无源文件无法用SCL 打开。 7.1.块头 2015年12月16日 18:52

块系统属性:适用于整个块; 1.参数系统属性:对应每个独立的参数。 2.一、系统属性: 系统属性是软件包内使用的相关接口属性。二、块的属性列表 2.块的属性 2015年12月16日 19:42

为“false”,则实例的块参数不能被回读。 注:属性需要小写 三、参数属性列表 系统属性影响意义默认值 S7_sample_time时间 响应若某个参数具有该系统属性,则它被自动地分 配调用循环OB的循环时间。当编译CFC图时,必 须选择选择框“更新取样时间”。 False S7_dynamic CFC若某个参数具有该系统属性,则它会自动地注 册用于CFC测试模式中的测试工作(监视)。 False S7_edit CFC它决定是否可以在SIMATIC管理器过程对象视图 内编辑该参数。 False S7_link CFC它决定在CFC图内是否可以互连参数。True S7_param CFC它决定在CFC图内是否可以设置该参数的值。True S7_visible CFC对于某个参数,如果该系统属性设置为 “false”,则在CFC图内,该参数不会显示在块 上。 True S7_qc该参数具有质量代码。False S7_contact该属性定义与SFC类型特定相关联的参数False S7_m_c OCM它决定在OS中是否可以控制或监视该参数False S7_shortcut OCM它包含有一个最长16个字符的参数标识符。在 OS中面板内也可以显示该名称(例如 Setpoint”)。 S7_string_0OCM该系统属性仅与BOOL型的输入参数(或者in/out 参数)有关。它具有一个最长16 字符的文本信 息,在面板中可以显示为操作员文本(例如 “Open valve”)。操作员选用该功能后,该参 数将置为0。 S7_string_1OCM该系统属性仅与BOOL型的输入参数(或者输入/ 输出参数)有关。它具有一个最长16 字符的文 本信息,在面板中可以显示为操作员文本(例 如“Close valve”)。操作员选用该功能后,该 参数将被置为值1。 S7_unit OCM它含有参数的单位,且最长可以为16 个字符。 该单位(例如“ mbar”)可以显示在CFC中块的 I/O的中。 S7_server服务 器该接口参数被分配给某个服务器。消息服务 器:S7_server: =“ alarm_archive”。 无服务 器调用

欧姆龙PLC指令的列表

欧姆龙PLC指令的列表 编程指令 顺序输入指令 顺序输出指令 顺序输出指令 定时器和计数器指令比较指令 数据传送指令 指令助记符 装载LD 装载非LD NOT 与AND 与非AND NOT 或OR 或非OR NOT 与装载AND LD 或装载OR LD 非NOT 条件ON UP 条件OFF DOWN 指令助记符 输出OUT 输出非OUT NOT 保持KEEP 上升沿微分DIFU 下降沿微分DIFD 置位SET 复位RSET 多位置位SETA 多位复位RSTA 单一位置位SETB 单一位复位RSTB 指令助记符 结束END 空操作NOP 联锁IL 联锁解除ILC 多联锁区别保持MILH 多联锁区别释放MILR 多联锁解除MILC 跳转JMP 跳转结束JME 条件跳转CJP

FOR循环FOR 循环终止BREAK 下一个循环NEXT 指令助记符 定时器 TIM 编辑指令 数据移位指令 递增/递减指令 四则运算指令 转换指令 逻辑指令 特殊算术指令 特殊算术指令 表格数据处理指令 数据控制指令 指令助记符 移位寄存器SFT 可逆移位寄存器SFTR 字移位WSFT 算术左移ASL 算术右移ASR 循环左移ROL 循环右移ROR 一个数字左移SLD 一个数字右移SRD 左移N位NASL 双字左移N位NSLL 右移N位NASR 双字右移N位NSRL 指令助记符 二进制递增++ 双字二进制递增++L 二进制递减-- 双字二进制递减--L BCD递增++B 双字BCD递增++BL BCD递减--B 双字BCD递减--BL 指令助记符 无进位带符号二进制加法+ 无进位带符号双字二进制加法+L 有进位带符号二进制加法+C 有进位带符号双字二进制加法+CL

SCL及DLL上位机编程应用实例培训教材

上海安浦鸣志自动化设备有限公司
Confidential

SCL上位机编程概述 编程示例
C++ VB C#
DLL介绍 Q/A
Confidential

SCL语言(Serial/Stream Command Language) 请求和应答均以回车符 '\r' 作为结尾
VB: "CC" & VBCR C/C#: "CC\r"
Confidential

通讯速率
每字节所需时间 = 1 / (波特率 / (起始位 + 数据位 + 停止位))
波特率 9600 19200 38400 57600 1.04 0.52 0.26 0.17 115200 0.087
每字节所需时间(ms)
发送一条指令并接收到响应所需的时间 影响数据接收时间的因素
数据发送 DSP处理 数据接收 操作系统调度
总字节数 = 地址+指令+参数+CheckSum+'\r' 例:1FL200000{XX+回车
Confidential

SCL Utility(只支持COM1~COM16) SCL Utility 2(开发中) 串口调试助手(只支持COM1~COM4) Access Port(前台+后台) Bus Hound (后台监控)
Confidential

设置基本参数(端口、波特率、数据位等) 打开端口 发送数据 接收数据 关闭端口
Confidential

精通SCL编程

例1 控制一台电机的启动与停止 1 首先定义一个全局变量数据块存贮你所需的变量 DATA_BLOCK GDI //定义一个数据结构 STRUCT Motor1_input:BOOL;//定义一个名叫做Motor1_input用于输入的变量变量类BOOL Motor1_On:BOOL;//定义一个叫做Motor1_On用于输出变量类型为BOOL Motor1_ Stop:BOOL; //定义变量Motor1_ Stop 类型BOOL 用于停止电机END_STRUCT BEGIN END_DATA_BLOCK 2编写输入函数体 FUNCTION Input :VOID //定义一个函数称称为Input,函数类型为VOID GDI.Motor1_input=I0.0; //把I0.0的值赋给变量Motor1_input GDI.Motor1_ Stop=I0.1; END_FUNCTION / /函数体结束 GDI.Motor1_input是条用前面定义的数据块里面的变量。 3编写输出函数 FUNCTION Output:VOID//定义一个输出函数 Q0.0:=GDI.Motor1_On;//将电机启动状态输出到Q0.0 END_FUNCTION //函数体结束 GDI.Motor1_On //调用之前定义在数据块里的变量 3编写控制函数 FUNCTION Motor_conter: VOID //定义控制函数 IF GDI.Motor1_input=TRUE THEN GDI.Motor1_On:=TRUE; // 当接收到启动命令时电机启动END_IF; IF GDI.Motor1_Stop=TRUE THEN GDI.Motor1_On:=FALSE; // 当接收到停止命令时电机停止END_IF; END_FUNCTION

欧姆龙PLC指令

4指令助记符:定时器TIM 5编辑指令:数据移位指令,递增/递减指令,四则运算指令,转换指令,逻辑指令,特殊算术指令,表格数据处理指令,数据控制指令。 6指令助记符 移位寄存器SFT可逆移位寄存器SFTR字移位WSFT算术左移ASL算术右移ASR循环左移ROL循环右移ROR一个数字左移SLD一个数字右移SRD左移N位NASL双字左移N 位NSLL右移N位NASR双字右移N位NSRL 7指令助记符 二进制递增++双字二进制递增++L二进制递减--双字二进制递减--L BCD递增++B,双字BCD递增++BL,BCD递减--B,双字BCD递减--BL 8指令助记符 无进位带符号二进制加法+,无进位带符号双字二进制加法+L,有进位带符号二进制加法+C,有进位带符号双字二进制加法+CL,无进位BCD加法+B,无进位双字BCD加法+BL,有进位BCD加法+BC,有进位双字BCD加法+BCL,无进位带符号二进制减法-无进位带符号双字二进制减法-L,有进位带符号二进制减法-C,有进位带符号双字二进制减法-CL,无进位BCD减法-B,无进位双字BCD减法-BL,有进位BCD减法-BC 有进位双字BCD减法-BCL,带符号二进制乘法*,带符号双字二进制乘法*L,BCD乘法*B,双字BCD乘法*BL,带符号二进制除法/,带符号双字二进制除法/L,BCD除法/B 双字BCD除法/BL 9指令助记符 BCD→二进制BIN,双字BCD→双字二进制BINL,二进制→BCD BCD 双字二进制→双字BCD BCDL 二进制求补NEG,数据译码MLPX,数据编码DMPX,ASCⅡ转换码ASC, ASCⅡ→HEX HEX 10指令助记符 逻辑与ANDW,双字逻辑与ANDL,逻辑或ORW,双字逻辑或ORWL,异或XORW 双字异或XORL,求补COM,双字求补COML 11指令助记符 算术处理APR,位计数器BCNT 12指令助记符 浮点数→16位FIX,浮点数→32位FIXL,16位→浮点数FLT,32位→浮点数FLTL 浮点数加法+F,浮点数减法-F,浮点数除法/F,浮点数乘法*F 浮点符号比较 LD, AND, OR+=F LD, AND, OR+<>F LD, AND, OR+F LD, AND, OR+>=F 浮点数→ASCⅡFSTR ASCⅡ→浮点数FVAL 12指令助记符

PID西门子PLC的SCL程序

PID控制算法的程序段,该程序是西门子PLC的SCL程序。带"_IN"与带"_OUT"的变量,如果前缀是一样的,要求连接同一个变量。这段程序已经在温度控制上运行通过了。 FUNCTION FC1 : VOID VAR_INPUT Run:BOOL; //True-运行,False-停止 Auto:BOOL; //True-自动,False-手动 ISW:BOOL; //True-积分有效,False-积分无效 DSW:BOOL; //True-微分有效,False-微分无效 SetMV:REAL; //手动时的开度设定值 SVSW:REAL; //当设定值低于SVSW时,开度为零 //测量值 PV:REAL; //设定值 SV:REAL; DeadBand:REAL; //死区大小 PBW:REAL; //比例带大小 IW:REAL; //积分带大小 DW:REAL; //微分带大小 dErr_IN:REAL; //误差累积 LastPV_IN:REAL; //上一控制周期的测量值 END_VAR VAR_OUTPUT MV:REAL; //输出开度

dErr_OUT:REAL; //误差累积 LastPV_OUT:REAL;//上一控制周期的测量值 END_VAR VAR //误差 Err:REAL; dErr:REAL; //误差累积 PBH:REAL; //比例带上限 PBL:REAL; //比例带下限 PVC:REAL; //测量值在一个控制周期内的变化率,即测量值变化速率 P:REAL; //比例项 I:REAL; //积分项 D:REAL; //微分项 END_VAR IF Run=1 THEN THEN Auto=1 IF SV>=SVSW THEN IF Err:=SV-PV; PBH:=SV+PBW; PBL:=SV-PW; THEN PV

SCL入门

SCL语言入门 SCL是一种类似PASCAL语言的S7高级编成语言,不包含在基本的STEP7定货号中,需另外购买,安装完SCL语言后.建立一个标准的STEP项目,并进入Sources目录 右键点击右部空白处插入SCL Source文件 然后双击SCL文件就进入了基本的SCL编程环境,接下来我们就以一个典型的工程为例子来说明SCL语言的功能,普通的STEP工程包括OB块,FB块,FC块,DB块以及互相之间的调用关系 DB块的标准程序 TITLE = 'Global parameters' VERSION : 1.1 Array AUTHOR : CD FAMILY : System STRUCT B_OFF: BOOL:=FALSE; // Const : FALSE flag B_ON: BOOL:=TRUE; // Const : TRUE flag B_TRASH: BOOL:=FALSE; // Trash : multi purpose BOOL variable N_BYTE_TRASH : BYTE:=B#16#0; // Trash : multi purpose BYTE variable N_WORD_TRASH: WORD:=W#16#0; // Trash : multi purpose WORD variable

N_DWORD_TRASH: DWORD:=DW#16#0; // Trash : multi purpose DWORD variable N_INT_TRASH: INT:=0; // Trash : multi purpose INT variable N_DINT_TRASH: DINT:=L#0; // Trash : multi purpose DINT variable F_TRASH: REAL:=0.0; // Trash : multi purpose REAL variable bFirstCycleOn: BOOL; // Bit that is true only during the first PLC cycle B_REPLACE: BOOL; // Bit to replace when making an application N_BYTE_REPLACE: BYTE; // Byte variable to replace when making an application N_WORD_REPLACE: WORD; // Word variable to replace when making an application N_DWORD_REPLACE: DWORD; // Double word variable to replace when making an application N_INT_REPLACE: INT; // Integer variable to replace when making an application N_DINT_REPLACE: DINT; // Double integer variable to replace when making an application F_REPLACE: REAL; // Real variable to replace when making an application END_STRUCT BEGIN END_DATA_BLOCK 定义完成后可以点击进行编译以生成DB 块.(以后其他块类似) FC 块的标准程序 TITLE = 'Analog input measurement' VERSION : '1.0' AUTHOR : JVa NAME : AI FAMILY : Standard VAR_INPUT nPIW: WORD; // PIW address where the AI is read fMinValue: REAL; // Scaling minimum value corresponding 0 V fMaxValue: REAL; // Scaling maximum value corresponding nominal voltage bMode: Bool; // Locking, i.e. enable simulation bMode END_VAR Var_IN_OUT END_VAR BEGIN // // The AI-channel is not read if simulation lock is ON // IF NOT bMode THEN // // Analog (=Integer) value 27648 corresponds the nominal value of voltage measurement fMeas:= (fMaxValue - fMinValue) * WORD_TO_INT(nPIW) / 27648.0 + fMinValue; END_IF; END_FUNCTION FB 块的标准程序

相关主题
文本预览
相关文档 最新文档