PICCX指令集及程序设计技巧

合集下载

PLC欧姆龙的基本操作指令及常用程序设计

PLC欧姆龙的基本操作指令及常用程序设计
4
总之,梯形图结构沿用继电器控制原理图的形式,采用 了常开触点、常闭触点、线圈等图形语言,对于同一控制 电路,继电控制原理与梯形图输入、输出信号基本相同, 控制过程等效。 例:
5
5.1.1 逻辑取及线圈驱动指令
逻辑取及线圈驱动指令为LD、LDN和=。 LD(Load):取指令。用于网络块逻辑运算开始的常开触点与母线
(2)并联的=指令可连续使用任意次;
(3)在同一程序中不能使用双线圈输出,即同一元器件 在同一程序中只使用一次=指令;
(4)LD、LDN、=指令的操作数为:I、Q、M、SM、T、C、 V、S和L。T、C也作为输出线圈,但在S7-200PLC中输出 时不是以使用=指令形式出现。
7
5.1.2 触点串联指令
多为128个)物理输出点被立即置位,同时,相应的输出映像寄存器的内容也
被刷新。
用法:SI
bit, N
例: SI
Q0.0, 2
(4)RI,立即复位指令

用立即复位指令访问输出点时,从指令所指出的位(bit)开始的
N个(最多为128个)物理输出点被立即复位,同时,相应的输出映像
寄存器的内容也被刷新。
(1)S,置位指令
将位存储区的指定位(位bit)开始的N个同类存储器位置位。
用法: S
bit, N
例 (: 2)R,S复位指令Q0.0, 1
将位存储区的指定位(位bit)开始的N个同类存储器位复位。当用复位
指令时,如果是对定时器T位或计数器C位进行复位,则定时器位或计数
器位被复位,同时,定时器或计数器的当前值被清零。
例: LDI I0.2
注意:bit只能是I类型。
(2)=I,立即输出指令

欧姆龙PLC编程指令篇

欧姆龙PLC编程指令篇
保持KEEP 上升沿微分DIFU 下降沿微分DIFD
置位SET 复位RSET 多位置位SETA 多位复位RSTA 单一位置位SETB 单一位复位RSTB 指令助记符 结束END 空操作NOP
联锁IL 联锁解除ILC 多联锁区别保持MILH 多联锁区别释放MILR 多联锁解除MILC
跳转JMP 跳转结束JME 条件跳转CJP FOR循环FOR 循环终止BREAK
输入比较指令 (带符号)
LD,AND,OR+=+S LD,AND,OR+<>+S LD,AND,OR+<+S LD,AND,OR+<=+S LD,AND,OR+>+S LD,AND,OR+>=+S
输入比较指令 (双字长,带符号) LD,AND,OR+=+SL LD,AND,OR+<>+SL LD,AND,OR+<+SL LD,AND,OR+<=+SL LD,AND,OR+>+SL LD,AND,OR+>=+SL
有进位双字BCD加法+BCL 无进位带符号二进制减法- 无进位带符号双字二进制减法
-L 有进位带符号二进制减法-C 有进位带符号双字二进制减法
-CL 无进位BCD减法-B 无进位双字BCD减法-BL 有进位BCD减法-BC 有进位双字BCD减法-BCL 带符号二进制乘法* 带符号双字二进制乘法*L
BCD乘法*B 双字BCD乘法*BL 带符号二进制除法/ 带符号双字二进制除法/L
求补COM 双字求补COML
指令助记符 算术处理APR
位计数器BCNT
指令助记符
LD,AND,OR+= LD,AND,OR+<> LD,AND,OR+< LD,AND,OR+<=
LD,AND,OR+>

PLC欧姆龙的基本操作指令及常用程序设计

PLC欧姆龙的基本操作指令及常用程序设计

PLC欧姆龙的基本操作指令及常用程序设计PLC(Programmable Logic Controller),中文名可编程控制器,是一种以微处理器为核心,可存储程序控制、逻辑操作、序列控制和定时控制等运算的工业数字控制器。

PLC广泛应用于工厂、机器设备、输配电自动化等各种领域的自动化控制中。

PLC的操作指令又称为PLC的指令集,是PLC软件编程的基本元素。

欧姆龙是PLC市场上的知名品牌,今天我们将介绍欧姆龙PLC的基本操作指令及常用程序设计。

指令集介绍欧姆龙PLC的指令集分为以下几个部分:I/O控制指令I/O控制指令是最基本的指令,主要用于PLC的输入和输出信号的处理。

指令名功能描述IN 读取输入信号OUT 输出控制信号SET 置位指定位RST 复位指定位NOT 取反指定位运算控制指令运算控制指令包含各种运算符和运算指令,可进行基本运算和逻辑运算,包括加减乘除、与或非等运算。

指令名功能描述ADD 两数相加SUB 两数相减MUL 两数相乘DIV 两数相除MOD 两数取模AND 两数按位与OR 两数按位或XOR 两数按位异或NOT 操作数取反计数器控制指令计数器控制指令主要用于制作计算某个量的计数器程序,通常包括计数器的设置、清除、增加、减少等操作。

指令名功能描述SET 设置计数器CLR 清除计数器INC 计数器递增DEC 计数器递减定时器控制指令定时器控制指令主要用于制作测量时间的的程序,通常包括定时器的设置、清除、开始、停止等操作。

指令名功能描述TIM 开启定时器TOF 定时器到达时间RST 清除定时器移位指令移位指令主要用于实现数据的移位操作,包括左移、右移、循环移位等操作。

指令名功能描述SLW 左移指定位数SRW 右移指定位数ROL 左旋指定位数ROR 右旋指定位数SLO 变量绕环移位SRO 变量绕环移位常用程序设计除了上述指令集外,欧姆龙PLC还支持多种常用程序设计方式。

下面简要介绍常用程序设计方式的概念和使用方法。

plc编程方法

plc编程方法

plc编程方法PLC编程方法。

PLC(可编程逻辑控制器)是一种专门用于工业控制的计算机,它可以根据预先设定的逻辑程序和控制规则,对生产设备进行自动化控制。

PLC编程方法是指在使用PLC时,如何进行程序编写和逻辑控制的方法和技巧。

下面将介绍几种常见的PLC编程方法。

首先,我们来介绍基于梯形图的PLC编程方法。

梯形图是一种直观、易于理解的图形化编程方法,它使用横向排列的逻辑线圈和纵向排列的控制步骤,来描述程序的逻辑关系和执行顺序。

在梯形图中,我们可以通过连接不同的逻辑元件(如继电器、传感器、执行器等)来实现各种逻辑控制功能。

梯形图编程方法适合于简单的逻辑控制任务,如启停控制、定时控制等。

其次,我们来介绍基于指令列表的PLC编程方法。

指令列表是一种基于文本的编程方法,它使用一系列的指令和参数来描述程序的执行流程和控制逻辑。

在指令列表中,我们可以通过编写各种逻辑指令(如逻辑运算、比较、跳转等)来实现复杂的控制功能。

指令列表编程方法适合于需要精细控制和复杂逻辑的应用场景,如自动化生产线、机械加工等。

另外,我们还有基于功能块的PLC编程方法。

功能块是一种将程序分解为多个独立的逻辑单元,并通过连接这些功能块来实现整个控制系统的编程方法。

在功能块编程方法中,我们可以将不同的功能模块(如启动模块、停止模块、计时模块等)进行组合和调用,从而实现复杂的控制逻辑和功能。

功能块编程方法适合于需要模块化和可重用性的控制系统,如自动化装配线、工业机器人等。

总的来说,不同的PLC编程方法各有特点,可以根据具体的应用场景和控制要求来选择合适的编程方法。

在实际应用中,我们可以根据控制任务的复杂程度、编程人员的经验和设备的特点来灵活选择和组合不同的编程方法,以实现高效、稳定和可靠的控制系统。

希望通过本文的介绍,读者能够对PLC编程方法有一个初步的了解,并能够根据实际情况选择合适的编程方法,提高工业控制系统的自动化水平和生产效率。

PLC编程方法的不断发展和创新,将为工业自动化领域带来更多的可能性和机遇。

PLC编程语言入门,常用指令集汇总分享

PLC编程语言入门,常用指令集汇总分享

PLC编程语言入门,常用指令集汇总分享一、西门子PLC编程语言PLC的编程语言包括以下五种:梯形图语言(LD)、指令表语言(IL)、功能模块图语言(FBD)、顺序功能流程图语言(SFC)及结构化文本语言(ST)。

不同型号的PLC编程软件对以上五种编程语言的支持种类是不同的,早期的PLC仅仅支持梯形图编程语言和指令表编程语言。

目前的PLC对梯形图(LD)、指令表(STL)、功能模块图(FBD)编程语言都以支持。

比如,SIMATIC STEP7 MicroWIN V3.2。

(1)梯形图在西门子PLC实际编程使用情况中中,梯形图语言是PLC程序设计中最常用的编程语言。

它是与继电器线路类似的一种编程语言。

由于电气设计人员对继电器控制较为熟悉,因此,梯形图编程语言得到了广泛的欢迎和应用。

梯形图编程语言的特点是:与电气操作原理图相对应,具有直观性和对应性;与原有继电器控制相一致,电气设计人员易于掌握。

梯形图编程语言与原有的继电器控制的不同点是,梯形图中的能流不是实际意义的电流,内部的继电器也不是实际存在的继电器,应用时,需要与原有继电器控制的概念区别对待。

(2)指令表松下PLC编程指令表编程语言是与汇编语言类似的一种助记符编程语言,和汇编语言一样由操作码和操作数组成。

在无计算机的情况下,适合采用PLC手持编程器对用户程序进行编制。

同时,指令表编程语言与梯形图编程语言图一一对应,在PLC编程软件下可以相互转换。

指令表表编程语言的特点是:采用助记符来表示操作功能,具有容易记忆,便于掌握;在手持编程器的键盘上采用助记符表示,便于操作,可在无计算机的场合进行编程设计;与梯形图有一一对应关系。

其特点与梯形图语言基本一致。

(3)功能模块图语言(FBD)功能模块图语言是与数字逻辑电路类似的一种PLC编程语言。

采用功能模块图的形式来表示模块所具有的功能,不同的功能模块有不同的功能。

功能模块图编程语言的特点:功能模块图程序设计语言的特点是:以功能模块为单位,分析理解控制方案简单容易;功能模块是用图形的形式表达功能,直观性强,对于具有数字逻辑电路基础的设计人员很容易掌握的编程;对规模大、控制逻辑关系复杂的控制系统,由于功能模块图能够清楚表达功能关系,使编程调试时间大大减少。

西门子PLC编程指令集大全,看完必有收获!

西门子PLC编程指令集大全,看完必有收获!

西门子PLC编程指令集大全,看完必有收获!西门子PLC编程指令包括:位逻辑指令,比较指令,转换指令等14个,相信很多初学的朋友们对这些指令了解的不是很全面,有些指令符号并不理解是什么意思。

那么小编为了大家更好的学习,整理出西门子PLC指令大全,希望对大家有帮助!一、位逻辑指令1. -||- 常开接点(地址)2. -|/|- 常闭接点(地址)3. XOR 位异或4.-|NOT|- 信号流反向5. -( ) 输出线圈6. -(#)- 中间输出7. -(R) 线圈复位8. -(S) 线圈置位9. RS 复位置位触发器10. RS 置位复位触发器11. -(N)- RLO下降沿检测12. -(P)- PLO上升沿检测13. -(SAVE) 将RLO存入BR存储器14. MEG 地址下降沿检测15. POS 地址上升沿检测二、转换指令1. BCD_IBCD码转换为整数2. I_BCD 整数转换为BCD码3. I_DINT 整数转换为双整数4. BCD_DIBCD码转换为双整数5. DI_BCD 双整数转换为BCD码6. DI_REAL 双整数转换为浮点数7. INV_I 整数的二进制反码8. INV_DI 双整数的二进制反码9. NEG_I 整数的二进制补码10. NEG_DI 双整数的二进制补码11. NEG_R 浮点数求反12. ROUND 舍入为双整数13. TRUNC 舍去小数取整为双整数14. CEIL 上取整15. FLOOR 下取整三、比较指令1. CMP?R 实数比较2. CMP?I 整数比较3. CMP?D 双整数比较四、计数器指令1. S_CUD 加减计数2. S_CU 加计数器3. S_CD 减计数器4. -(SC) 计数器置初值5. -(CU) 加计数器线圈6. -(CD) 减计数器线圈五、逻辑控制指令1. -(JMP) 无条件跳转2.-(JMP) 条件跳转3. -(JMPN) 若非则跳转4. LABEL 标号六、数据块指令1. -(OPN) 打开数据块:DB或DI七、整数算术运算指令1. ADD_I 整数加法2. SUB_I 整数减法3. MUL_I 整数乘法4. DIV_I 整数除法5. ADD_DI 双整数加法6. SUB_DI 双整数减法7. MUL_DI 双整数乘法8. DIV_DI 双整数除法9. MOD_DI 回送余数的双整数八、浮点算术运算指令一基础指令1. ADD_R 实数加法2. SUB_R 实数减法3. MUL_R 实数乘法4. DIV_R 实数除法5. ABS 浮点数绝对值运算二扩展指令1.SQR 浮点数平方2. SQRT 浮点数平方根3. EXP 浮点数指数运算4. LN 浮点数自然对数运算5. SIN 浮点数正弦运算6. COS 浮点数余弦运算7. TAN 浮点数正切运算8. ASIN 浮点数反正弦运算9. ACOS 浮点数反余弦运算10.ATAN 浮点数反正切运算九、程序控制指令1. -(Call) 从线圈调用FC/SFC(无参数)2. CALL_FB 从方块调用FB3. CALL_FC 从方块调用FC4. CALL_SFB 从方块调用SFB5. CALL_SFC 从方块调用SFC6. -(MCR<) 主控继电器接通7. -(MCR>) 主控继电器断开8. -(MCRA) 主控继电器启动9. -(MCRD) 主控继电器停止10. -(RET) 返回十、赋值指令1. MOVE 赋值2. 移位和循环指令十一、移位指令1.SHR_I 整数右移2. SHR_DI 双整数右移3. SHL_W 字左移4.SHR_W 字右移5. SHL_DW 双字左移6. SHR_DW 双字右移十二、循环指令1.ROL_DW 双字左循环2. ROR_DW 双字右循环十三、状态位指令1. OV -||- 溢出异常位2. OS -||- 存储溢出异常位3. UO -||- 无序异常位4. BR -||- 异常位二进制结果5. ==0-||- 结果位等于'0'6. <>0-||- 结果位不等于'0'7. >0-||- 结果位大于'0'8.<0-||- 结果位小于'0'9. >=0-||- 结果位大于等于'0'10. <=0-||- 结果位小于等于'0' 十四、定时器指令1.S_PULSE 脉冲S5定时器2.S_PEXT 扩展脉冲S5定时器3. S_ODT 接通延时S5定时器4. S_ODTS 保持型接通延时S5定时器5. S_OFFDT 断电延时S5定时器6. -(SP) 脉冲定时器线圈7. -(SE) 扩展脉冲定时器线圈8. -(SD) 接通延时定时器线圈9. -(SS) 保持型接通延时定时器线圈10. -(SF) 断开延时定时器线圈十五、字逻辑指令1. WAND_W 字和字相'与'2. WOR_W 字和字相'或'3.WAND_DW 双字和双字相'与'4. WOR_DW 双字和双字相'或'5. WXOR_W 字和字相'异或'6. WXOR_DW 双字和双字相'异或。

PLC的基本逻辑指令及举例

PLC的基本逻辑指令及举例
I0.0
Q0.0
LD M0.0O M0.1ON M0.2A I0.0O I0.1= Q0.0
(a)梯形图
(b)语句表
网络1 触点旳并联电路举例
4 串联电路块旳并联连接指令
OLD(or load)
或块指令:用于串联电路块旳并联连接两个以上触点串联形成旳支路叫串联电路块
网络1 LPS、LRD、LPP指令使用举例3
LD M0.0LPS A M0.1LPSA M0.2LPSA M0.3= Q0.0
LPP= Q0.1LPP= Q0.2LPP= Q0.3
(a)梯形图
(b)语句表
(a)梯形图
(b)语句表
网络1 OLD指令使用举例
5 并联电路块旳串联连接指令
ALD(And Load)
与块指令 。 用于并联电路块旳串联连接 两条以上支路并联形成旳电路叫并联电路块
注意事项
在块电路开始时要使用LD和LDN指令 在每完毕一次块电路旳串联连接后要写上ALD指令 ALD指令无操作数
LD M0.0LPS A M0.1= Q0.0LPP = Q0.1
网络1
I0.0
M0.1
网络2 连续输出
I0.2
Q0.0
M0.3
T5
Q0.3
M0.4
Q0.1
LD I0.0 A M0.0 = Q0.0LD M0.1AN I0.2 = M0.3A T5 = Q0.3 AN M0.4 = Q0.1
(a)梯形图
(b)语句表
6. 置位、复位指令
LAD
STL
功能
置位指令
bit S N
S bit,N
从bit开始旳N个元件置1并保持
复位指令
bit R N

PLC程序设计步骤及编程技巧

PLC程序设计步骤及编程技巧

01001 01000
01000 01001
7.2.3 时间控制
00000 01000 00001
(a)启动优先型
01000
00000 HR00
HR00 00001
HR00 01000
(c)启动优先断电保持型
00000 00001 01000
01000
(b)停止优先型
00000 00001 HR01
图7-14 电动机正、反转主电路及控制电路
2.I/O分配
从图7-14可见,为满足控制要求,需要有3个按钮:正 转启动按钮、反转启动按钮和停止按钮。此外还需要控制电 动机正、反转的两个交流接触器,一个热继电器作为过载保 护。共需5个I/O点,其中3个输入,2个输出。
输入信号:正转启动按钮 SB1—00000; 反转启动按钮 SB2—00001; 停止按钮 SB3—00002。
图7-19 梯形图设计
7.3.3 送料小车控制
1.控制要求 如图7-20所示,有一辆送料车自动循环运料。
图7-20 送料车自动循环运料
小车处于起始位置时,CK0闭合;系统启动后, 小车在起始位置装料,20s后向右,到CK1位置时, CK1闭合,小车下料15s;小车下料后返回到起始位置, 再用20s的时间装料,其后向右运动到CK2位置,此时 CK2闭合,小车下料15s后返回到起始位置。以后重复 上述过程,直至有停车复位信号为止。
(3)对热继电器的处理
若PLC的输入点较富裕,热继电器的常闭触点可占 用PLC的输入点;若输入点较紧张,热继电器的信号可 不输入PLC中,而直接接在PLC外部的控制电路中。
7.3.2 三相异步电动机 的点动、长动控制
1.控制要求 电动机可以实现长动,也可以实现点动,具有短路、 失压、欠压和过载保护功能。 三相异步电动机的点动、长动继电器接触器控制电 路如图7-17所示。

plc应用指令实例与编程技巧

plc应用指令实例与编程技巧

plc应用指令实例与编程技巧PLC(可编程逻辑控制器)是一种广泛应用于工业自动化领域的控制设备。

它通过编程实现对机器、设备的自动控制和监控。

在PLC 的编程中,应用指令的选择和编程技巧的运用至关重要。

本文将介绍一些常用的PLC应用指令实例和编程技巧。

一、常用PLC应用指令实例1. LD指令:该指令用于将一个位地址的逻辑值(0或1)传送给一个位地址。

例如,当输入X0为1时,将其传送给输出Y0。

2. AND指令:该指令用于逻辑与运算,将两个位地址的逻辑值进行与运算,并将结果传送给一个位地址。

3. OR指令:该指令用于逻辑或运算,将两个位地址的逻辑值进行或运算,并将结果传送给一个位地址。

4. SET指令:该指令用于将一个位地址设置为1。

例如,当满足某个条件时,设置输出Y0为1。

5. RESET指令:该指令用于将一个位地址复位为0。

例如,当不满足某个条件时,复位输出Y0为0。

6. MOV指令:该指令用于将一个字地址的值传送给另一个字地址。

例如,将输入字地址D0的值传送给输出字地址D1。

7. ADD指令:该指令用于将两个字地址的值相加,并将结果存储到一个字地址。

8. SUB指令:该指令用于将两个字地址的值相减,并将结果存储到一个字地址。

9. MUL指令:该指令用于将两个字地址的值相乘,并将结果存储到一个字地址。

10. DIV指令:该指令用于将两个字地址的值相除,并将结果存储到一个字地址。

二、PLC编程技巧1. 合理划分程序块:将程序按功能划分为多个程序块,有利于提高程序的可读性和维护性。

例如,可以将IO读写、逻辑控制、报警处理等功能划分为不同的程序块。

2. 使用符号常量:将常用的地址和数值定义为符号常量,方便程序的修改和维护。

例如,可以将输入输出地址定义为常量,而不是直接写入具体的地址。

3. 添加注释:在程序中添加注释,对于复杂的逻辑和关键步骤进行说明,方便后续的调试和维护工作。

4. 合理使用计时器和计数器:在程序中合理使用计时器和计数器指令,可以实现一些时间控制和计数功能。

PICC软件编程方法和要点

PICC软件编程方法和要点

本手册分两部分:第一部分HI-TECH PICC C 的使用说明. 这里我们只讲述了PICC C与标准C的不同, 它不是一本C语言的教程, 并且我们假定你有C语言的基础.第二部分在伟福集成环境下使用PICC.讲述在伟福集成环境如可设置PICC, 简单的调试步骤. 更详细的说明请参阅伟福仿真器使用手册.关于如何在MPLAB下使用PICC C语言, 请参阅Microchip相应的手册.该软件是以Microhcip公司提供的PICC限7版(智能编译57 67 77 877)为准相关资料获取网站:M icrochip网址: Hi-tech 公司网址: 第一部分为了对PIC单片机有更好的支持,PICC在标准C的基础上作了一些扩充:定义I/O函数,以便在你的硬件系统中使用<stdio.h>中定义的函数。

用C语言编写中断服务程序用C语言编写I/O操作程序C语言与汇编语言间的接口1-1 与标准C的不同PICC只在一处与标准C不同:函数的重入。

因为PIC单片机的寄存器及堆栈有限,所以PICC不支持可重入函数。

1-2 支持的PIC芯片PICC 支持很多PIC单片机,支持PIC单片机的类型在LIB目录下的picinfo.ini文件中有定义。

1-3 PICC 包含一些标准库1-4 PICC 编译器可以输出一些格式的目标文件,缺省设置为输出Bytecraft的'COD' 格式和 Intel的'HEX'格式。

你可以用表1-1中的命令来指定输出格式。

表1-1格式名称描述PICC 命令文件类型Motorola HEX S1/S9 type hex file -MOT .HEX Intel HEX Intel style hex records(缺省) -INTEL .HEX Binary Simple binary image -BIN .BIN UBROF Universal Binary Image Relocatable Format -UBROF .UBR Tektronix HEX Tektronix style hex records -TEK .HEX American Hex format with symbols for American -AAHEX .HEX Automation HEX Automation emulatorsBytecraft .COD Bytecraft code format(缺省) n/a(缺省) .COD Library HI-TECH library file n/a .LIB1-5 符号文件PICC -G 命令用于生成符号文件,有了符号文件,你就可以进行源程序调试.命令格式为: PICC -16F877 -G test.c在使用仿真器时必须使用-G命令。

PICC编程技巧

PICC编程技巧

注:本组文章主要为网友CYPOK的论著,由我们收集整理,特对CYPOK表示感谢!1、PICC和MPLAB集成PICC和MPLAB集成:PICC有自己的文本编辑器,不过是DOS风格的,看来PICC的工程师要专业冷到酷底了...大家大可不必用它,如果你没什么癖好的话,你不会不用UltraEdit吧?1:建立你的工作目录:建议在C盘根目录下建立一个以A开头的文件夹做为工作目录.因为你会发现它总是在你查找文件时候第一个跳入你眼中.2:MPLAB调用PICC.(以MPLAB5.7版本为例子)启动MPLAB.在Project-->Install Language Tool:Language Suite----->hi-tech piccTool Name ---->PICC CompilerExecutable ---->c:hi-pic inpicc.exe (假如你的PICC是默认安装的)选Command-line最后OK.上面这步只需要设定一次,除非你重新安装了MPLAB.3:创建你的项目文件:(假如你实现用EDIT编辑好了一个叫AA.C的C代码文件)Project-->New Project-->File Name--->myc (假如我们把项目文件取名字叫MYC.PJT)右边窗口当然要选择中你的工作目录.然后OK.4:设定你的PICC工作参数:Project-->Edit Project上面4个栏目就用默认的,空的也就让它空着,无所谓的.需要修改的是:Development Mode---->选择你的PIC型号.当然要选择Mplab SIM Simulator让你可以用软件仿真.Language Tool Suite--->HI-TECH PICC上面的步骤,你可能会遇见多个提示条,不要管它,一路确定.下面是PICC编译器的选择项:双击Project Files窗口里面的MYC.HEX,出现一个选择拦目.命令很多,大家可以看PICC文本编辑器里面的HELP,里面有详细说明.下面就推荐几个常用也是建议用的:Generate debug info以及下面的2项.Produce assembler list file就在它们后面打勾即可,其它的不要管,除非你有特殊要求.5:添加你的C代码文件:当进行了前面几步后,按Add Node找到AA.C文件就OK了.6:编译C代码:最简单的一步:直接按下F10.编译完后,会出现各种调试信息.C代码对应的汇编代码就是工作目录里面的AA.IST,用EDIT打开可以看见详细的对比.7:其它,要是一切都没问题,那么你就可以调试和烧片了,和以往操作无异.2、如何从汇编转向PICC首先要求你要有C语言的基础。

plc基本逻辑指令及编辑方法

plc基本逻辑指令及编辑方法

plc基本逻辑指令及编辑方法
PLC的基本逻辑指令及编辑方法包括以下几个部分:
1. LD(读取):表示一个与输入母线相连的常开接点指令,用于常开接点接到母线上的逻辑运算起始。

2. LDI(读取反):表示一个与输入母线相连的常闭接点指令,用于常闭接点接到母线上的逻辑运算起始。

3. AND(与指令):用于单个常开接点的串联。

4. ANI(与非指令):用于单个常闭接点的串联。

5. OR(或指令):用于单个常开接点的并联。

6. ORI(或非指令):用于单个常闭接点的并联。

7. OUT:输出指令,目标元件是Y,M,S,T,C。

8. SET(置位指令):使动作保持。

9. RST(复位指令):使操作保持复位。

10. PLS(输入信号上升沿产生脉冲输出):目标元件为Y,M,但特殊辅助继电器不能作为目标元件。

11. PLF(输入信号下降沿产生脉冲输出):目标元件为Y,M,但特殊辅助继电器不能作为目标元件。

12. INV:该指令用于运算结果的取反。

此外,还有NOP(无操作指令)和END(结束指令)等基本逻辑指令。

以上信息仅供参考,如需了解更多信息,建议查阅PLC编程相关书籍或咨询专业人士。

plc基础知识指令

plc基础知识指令

plc基础知识指令PLC 基础知识指令在工业自动化控制领域,PLC(可编程逻辑控制器)扮演着至关重要的角色。

要掌握 PLC 的编程和应用,了解其基础知识指令是必不可少的。

PLC 的指令可以大致分为逻辑指令、算术运算指令、数据处理指令、流程控制指令等几大类。

逻辑指令是 PLC 编程中最基础也是最常用的指令。

其中包括常开触点、常闭触点和线圈指令。

常开触点就像是一个开关,当对应的条件满足时,电流可以通过;常闭触点则相反,在条件满足时,电流被阻断。

而线圈指令则用于控制输出设备的状态,比如让电机启动或者停止,让指示灯亮起或者熄灭。

算术运算指令在处理数据时非常有用。

比如加法指令、减法指令、乘法指令和除法指令。

这些指令可以对两个数值进行相应的运算,并将结果存储在指定的寄存器中。

假设我们要计算某个生产线上产品的总数,就可以使用加法指令不断累加。

数据处理指令能够帮助我们对数据进行操作和转换。

例如,数据传送指令可以将一个寄存器中的数据复制到另一个寄存器;数据比较指令则用于比较两个数据的大小或是否相等。

这在需要根据不同条件进行判断和控制的场景中经常用到。

流程控制指令决定了程序的执行顺序。

比如跳转指令,当满足特定条件时,程序可以跳过一段代码直接执行后面的部分;循环指令则可以让一段程序重复执行一定的次数或者直到满足某个条件为止。

接下来,我们详细了解一些具体的指令。

首先是位逻辑指令中的取反指令。

它的作用是将一个位的状态从 0变为 1 ,或者从 1 变为 0 。

比如说,原本一个输出点是接通的,使用取反指令后就会断开。

然后是定时器指令。

定时器就像是一个闹钟,我们设定一个时间值,当定时器开始计时,达到设定时间后,会产生相应的动作。

这在需要实现定时控制的场合,比如延迟启动设备、周期性动作等,非常实用。

计数器指令也是常用的指令之一。

它可以对输入脉冲进行计数,当计数值达到设定值时,触发相应的操作。

比如统计产品的数量,达到一定数量后进行报警或者其他处理。

plc的程序设计方法和技巧

plc的程序设计方法和技巧

plc的程序设计方法和技巧PLC(可编程逻辑控制器)是一种广泛应用于自动化控制领域的设备,它通过编写程序来控制工业过程中的各种机械和电气设备。

PLC程序设计是将控制要求转化为计算机可执行的指令集,以实现自动化控制系统的运行。

本文将探讨PLC程序设计的方法和技巧。

一、程序设计方法PLC程序设计的方法有很多种,常见的有梯形图(Ladder Diagram)、指令表(Instruction List)、功能块图(Function Block Diagram)、结构化文本(Structured Text)等。

不同的方法适用于不同的控制任务,选择合适的方法对于程序的编写和维护都非常重要。

1. 梯形图(Ladder Diagram)梯形图是一种图形化的PLC编程语言,它模拟了传统的继电器电路图。

梯形图程序由各种逻辑元件(如接触器、线圈等)和它们之间的连接线组成,通过逻辑元件之间的连接关系来表示控制逻辑。

梯形图简单直观,容易理解,适用于较小规模和简单的控制系统。

2. 指令表(Instruction List)指令表是一种类似于汇编语言的PLC编程语言,它使用指令和操作数的组合来描述控制逻辑。

指令表程序通常以文本的形式呈现,每一行表示一条指令。

指令表编程需要熟悉PLC的指令集和寄存器的使用,适用于对控制逻辑有较深理解的工程师。

3. 功能块图(Function Block Diagram)功能块图是一种图形化的PLC编程语言,它将控制逻辑表示为功能块之间的连接关系。

每个功能块代表一个特定的功能,如计算、比较、存储等。

功能块图程序由功能块、连接线和数据流组成,通过连接线将功能块连接在一起,实现控制逻辑的描述。

功能块图适用于较复杂的控制系统,可以方便地对程序进行模块化设计和重用。

4. 结构化文本(Structured Text)结构化文本是一种类似于高级编程语言的PLC编程语言,它使用类似于C语言的语法来描述控制逻辑。

PLC基本指令与编程2.ppt

PLC基本指令与编程2.ppt

LDI(load Inverse):常闭触点与母线连接指令(取反指令)。
目标元件为X、Y、M、S、T或C。
OUT(out):驱动线圈的输出指令(线圈驱动指令)。
目标元件为Y、M、S、T或C,不能对X使用。
示例: X0 Y0
LD X0 OUT Y0
X1 M0
M0 Y1
LDI X1 OUT M0 LD M0 OUT Y1
10.指针(P/I)
(1)分支用指针P 分支用指针编号为P0~P127,它是用来指定跳转指令(CJ)和 子程序调用指令(CALL)调用子程序的入口地址。
(2)中断用指针I 中断用指针编号为I0□□ ~I8□□,它是用来指示某个中断程序的 入口位置。
2.2 基本指令
1. LD、LDI、OUT指令
LD(load):常开触点与母线连接指令(取指令)。
2. PLC基本指令与编程(一)
2.1 编程元件
1.输入继电器(X)和输出继电器(Y)
(1)输入继电器
输入继电器用X来表示,其地址采用八进制编号,即X0~ X177,其中没有8和9。
输入继电器是用于接收和存储外部输入信号,其线圈只能通 过外部信号来驱动,而不能通过内部程序来驱动。
(2)输出继电器
输出继电器用Y来表示,其地址采用八进制编号,即Y0~ Y177,其中没有8和9。
输出继电器线圈只能通过程序驱动,用于驱动外部负载。
2. 辅助继电器(M)
PLC内部有许多辅助继电器,与中间继电器的作用类似。辅 助继电器线圈只能通过程序驱动,即只能用于内部编程,不 能直接驱动外部负载。
(1)通用辅助继电器 编号为M0~M499,其用法与输出继电器相同,不能直接 驱动外部电路。 (2)断电保持辅助继电器 PLC在运行中若突然发生断电,保持断电前的状态,断电保 持辅助继电器就是实现这种要求。 (3)特殊辅助继电器 编号为M8000~M8255。具有特殊功能(见附录C)

用PICC编译器开发PIC系列单片机的代码

用PICC编译器开发PIC系列单片机的代码

《用PICC编译器开发PIC系列单片机的代码》一. 前言目前在市场上应用最广泛的应该属于8位单片机,Microchip Technoloogy公司推出的8位PIC系列单片机目前在国内市场上深受用户欢迎,已经逐渐成为单片机应用的新潮流,但遗憾的是,目前国内介绍它的C语言开发工具的书籍和文章却比较少,而且用的人也不多,广大的程序员在用其开发的过程中都在慢慢摸索,可能会走一些弯路,笔者最近在用PIC 的C语言时就遇到了好些问题,在这里笔者想就最近一段时间用PIC的C语言的一些经验和广大的底层软件程序员做一下交流和介绍,希望本文对用PICC开发PIC系列单片机的人有所帮助。

目前在国内用的比较多的是Hi-Tech的HI-TECH PICC编译器,而且目前市场上一些国内的PIC单片机仿真器也开始支持HI-TECH PICC编译格式,因此本文主要以Hi-Tech的PICC 为基础介绍一下PIC的C语言的基本特点。

二. HI-TECH PICC的C语言开发工具的语言特点PICC的C语言按ANSI C来定义,并进行了C语言的扩展,PICC和ANSI C有一个根本的区别就是PICC不支持函数的递归调用,这是因为PIC单片机内的堆栈大小是由硬件决定的,资源有限,所以不支持递归调用。

它的数据也遵从标准C的数据结构,PICC的数据结构是以数据类型的形式出现的。

PICC编译器支持的数据类型有位类型(bit)、无符号字符(unsigned char)、有符号字符(signed char)、无符号整形(unsigned int)、有符号整形(signed int)、无符号长整型(unsigned long)、有符号长整型(signed long)、浮点(float)和指针类型等,需要注意的是,PICC支持的多字节数据都采用低字节在前,高字节在后的原则,即一个多字节数,比如int型,在内存单元中存储顺序为低位字节存储在地址低的存储单元中,高位字节存储在地址高的存储单元中,程序员在用union定义变量时一定要注意这一特点。

PLC的功能指令讲解图文,教你如何正确使用功能指令

PLC的功能指令讲解图文,教你如何正确使用功能指令

PLC的功能指令讲解图文,教你如何正确使用功能指令PLC的发展多用于顺序控制,利用定时器,计数器等的的组合取代一般的控制系统,带有功能指令的PLC,在使用价值,使用范围都会更广。

所以本章为大家介绍功能指令的概念。

功能指令表达的表示形式:一条指令是有一个指令名称,以及一个指令代码的(又叫功能号),不同的功能指令功能号不同。

然后一条指令还具有多个操作数:S表示源操作数,D表示目标操作数,n表示在指令中可能用到的常数。

一条指令再运行中用它的程序步来表示它的大小。

、指令执行形式:脉冲执行型连续执行型比如在图上这个梯形图中,MOVP表示脉冲执行型,当我们按下X000的时候就会把D10的数据传送到D12中,但是不管X000接通多久,这个指令只执行一次。

如果是MOV指令,当我们按下X001的时候,这个指令就会在每一个扫描周期中都把D10的数据给传送到D12中。

位软元件,组合位元件和字元件:只有处理ON / OFF状态的元件,称为位软元件,如X、Y. S等,其它处理数字数据的元件,例如T。

C. D. V. Z等,称为字软元件。

位元件由Kn加首元件号的组合,也可以处理数字数据,组成字元件,称组合位元代或位元件组合。

组合位元件的组合规律是以4位为一组组合成单元。

K1~ K4为16位运算K5~ K8为32位运算。

例如K1XO表示X3 ~X0的4位 X0为最低位。

K4M10表示M25 ~M10的16位组合,10为最低。

KBM100表示131~M100组成的32位组合,M100为最低位。

BCD变换指令:为了方便大家理解,我们还是以表格的的形式来显示:指令格式:该指令表示,当接通X000后把D0中的二进制码转换成BCD码,然后送到D5里面去。

在这里给大家补充一下BCD码是:BCD码亦称二进码十进数或二-十进制代码。

用4位二进制数来表示1位十进制数中的0~9这10个数码。

BIN码变换指令:我们以表格的的形式来显示:该指令表示的是把BCD码转换成二进制码PLC外接数字开关:这个数字开关接在X0~X17上,如果我们要把这个数字开关上的1234进行转换那么就要用到以下这条指令。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第二章PIC16C5X指令集及程序设计技巧第一节 PIC16C5X指令概述§2.1 PIC165X 指令概述PIC16C5X每条指令长12位,指令由操作码和操作数组成。

PIC16C5X共有33条指令,按操作分成三大类:1. 面向字节操作类2. 面向位操作类3. 常数操作和控制操作类全部指令如表2.1所示。

第二节 PIC16C5X 指令寻址方式§2.2 PIC16C5X 指令寻址方式PIC16C5X单片机寻址方式根据操作数的来源,可分为寄存器间接寻址、立即数寻址、直接寻址和位寻址四种。

一、寄存器间接寻址这种寻址方式通过寄存器F0、F4来实现。

实际的寄存器地址放在F4中,通过F0来进行间接寻址。

例: MOVLW 05H ; W=5MOVWF 4 ; W(=5)→F4MOVLW 55H ; W=55HMOVWF 0 ; W(=55H)→F5上面这段程序把55H送入F5寄存器。

间址寻址方式主要用于编写查表、写表程序,非常方便。

请参考§2.7程序设计技巧。

二、立即数寻址这种方式就是操作数为立即数,可直接从指令中获取。

例:MOVLW 16H ; 16H →W三、直接寻址这种方式是对任何一寄存器直接寻址访问。

对16C52/54/55/56来说,寄存器地址(5位)直接包括在指令中。

对PIC16C57,寄存器地址中高2位由(选Bank)由FSR<6:5>二位决定。

例: MOVWF 8 ; W→F8寄存器MOVF 8,W ; F8→W四、位寻址这种寻址方式是对寄存器中的任一位(bit)进行操作。

例: BSF 11,0 ; 把F11的第0位置为"1"。

第三节面向字节操作类指令§2.3 面向字节操作类指令这类指令共有18条,包括有数据传送、算术和逻辑运算、数据移位和交换等操作。

它们的操作都是在W数据寄存器f之间进行,其指令码结构为:高6位是指令操作码。

第6位d是方向位。

d=1,则操作结果存入f(数据寄存器),d=0,则操作结果存入W。

低5位是数据寄存器地址,可选中32个寄存器。

对于PIC16C57,则还要参考寄存器体选择器F4的bit5或bit6来选择存入哪一个寄存器体(bank0-bank3)。

表2.1 PIC16C5X 指令集注:(1)除GOTO指令外,任何有关写PC(F2)的指令(例如 CALL、MOVWF 2)都将会把PC 寄存器的第9位清零。

(2)若对I/O口寄存器进行操作,如"SUBWF 6,1",则使用的F6的值是当前B口上的状态值,而非B口输出锁存器里的值。

(3)指令"TRIS f"(f=5、6或7)将W寄存器中的内容写入f的I/O口控制寄存器中:"1" 关断对应端口的输出缓冲器,使其为高阻状态。

(4)当预分频器分配给RTCC后,任何对RTCC 寄存器(F1)写操作的指令都将使预分频器(Prescaler)清零。

第四节面向位操作指令§2.4 面向位操作指令这类指令共有4条,指令码基本结构为:高4位是操作码。

bit5-bit7是位地址(可寻址8个位),bito-bit4是寄存器地址。

第五节常数和控制操作类指令§2.5 常数和控制操作类指令这类指令共有11条,其指令码结构为:高4位是操作码,低8位是常数K。

高4位是操作码。

bit5-bit7是位地址(可寻址8个位),bito-bit4是寄存器地址。

第六节特殊指令助记符§2.6 特殊指令助记符PIC16C5X 的一些指令还可以用容易记忆的助记符来表示。

PIC15C5X的汇编程序PICASM可以认识这些助记符,在汇编时会将其转译成相应的PIC16C5X基本指令。

例如指令"BCF 3,0"(清零C)也可以写成CLRC,"BSF 3,0"(置C=1)也可写成SETC等。

表2.2列出了这些助记符及其相对应的PIC165X指令。

在后面的例子里,你将看到程序中使用了很多的特殊指令助记符。

特殊指令助记符容易记忆。

使用它程序可读性也较好。

但这取决于每个人的习惯,你可以只使用一部分你认为好记的助记符,甚至只用基本的指令助记符而不用特殊指令助记符来编写程序。

第七节 PIC16C5X程序设计基础§2.7 PIC16C5X程序设计基础上面我们已经详细介绍了PIC16C5X的每条指令。

现在我们来总结一下它们的几个特点:1、各寄存器的每一个位都可单独地被置位、清零或测试,无须通过间接比较,可节省执行时间和程序地址空间。

2、操作寄存器(F1-F7)的使用方法和通用寄存器的方法完全一样,即和通用寄存器一样看待。

这样使程序执行和地址空间都简化很多。

3、对于跨页面的CALL和GOTO操作,要事先设置F3中的页面地址位PA1、PA0,对于CALL来说,子程序返回后还要将F3的PA1、PAO恢复到本页面地址。

§2.7.1 程序的基本格式先介绍二条伪指令:(a)EQU──标号赋值伪指令(b)ORG──地址定义伪指令PIC16C5X一旦RESET后指令计数器PC被置为全"1",所以PIC16C5X 几种型号芯片的复位地址为:一般说来,PIC的源程序并没有要求统一的格式,大家可以根据自己的风格来编写。

但这里我们推荐一种清晰明了的格式供参考。

§2.7.2 程序设计基础一、设置I/O口的输入/输出方向PIC16C5X的I/O口皆为双向可编程,即每一根I/O 端线都可分别单独地由程序设置为输入或输出。

这个过程由写I/O控制寄存器TRIS f来实现,写入值为"1",则为输入;写入值为"0",则为输出。

三、比较二个寄存器的大小要比较二个寄存器的大小,可以将它们做减法运算,然后根据状态位C来判断。

注意,相减的结果放入W,则不会影响二寄存器原有的值。

例如F8和F9二个寄存器要比较大小:四、循环n次的程序如果要使某段程序循环执行n次,可以用一个寄存器作计数器。

下例以 F10做计数器,使程序循环8次。

五、"IF......THEN......"格式的程序下面以"IF X=Y THEN GOTO NEXT"格式为例。

六、"FOR......NEXT"格式的程序"FOR......NEXT"程序使循环在某个范围内进行。

下例是"FOR X=0 TO 5"格式的程序。

F10放X的初值,F11放X的终值。

七、"DO WHILE.........END"格式的程序"DO WHILE.........END"程序是在符合条件下执行循环。

下例是"DO WHILE X=1"格式的程序。

F10放X的值。

八、查表程序查表是程序中经常用到的一种操作。

下例是将十进制 0~9转换成7段LED数字显示值。

若以B口的RB0~RB6来驱动LED的a~g 线段,则有如下关系:设LED为共阳,则0-9数字对应的线段值如下表:PIC的查表程序可以利用子程序带值返回的特点来实现。

具体是在主程序中先取表数据地址放入W,接着调用子程序,子程序的第一条指令将W置入PC,则程序跳到数据地址的地方,再由"RETLW"指令将数据放入W返回到主程序.九、"READ......DATA,RESTORE"格式程序"READ......DATA"程序是每次读取数据表的一个数据,然后将数据指针加1,准备下一次取下一个数据。

下例程序中以F10被数据表起始地址,F11做数据指针。

十、延时程序如果延时时间较短,可以让程序简单地连续执行几条空操作指令"NOP"。

如果延时时间长,可以用循环来实现。

下例以F10计算,使循环重复执行100次。

延时程序中计算指令执行的时间和即为延时时间。

如果使用4MH振荡,则每个指令周期为1uS。

所以单周期指令执行时间为1uS,双周期指令为2uS。

在上例的LOOP循环延时时间即为:(1+2)*100+2=302(uS)。

在循环中插入空操作指令即可延长延时时间:延时时间=(1+1+1+1+2)*100+2=602(US)。

用几个循环嵌套的方式可以大大延长延时时间。

如下例用2个循环来做延时。

延时时间= [(1+2)*6+2+]+1+2+1+1 +*100+2=5502(US)十一、RTCC计数器的使用RTCC是一个脉冲计数器,它的计数脉冲有二个来源,一个是从RTCC引脚输入的外部信号,一个是内部的指令时钟信号。

可以用程序来选择其中一个信号源做为输入。

RTCC可被程序用作计时之用:程序读取RTCC寄存器值以计算时间。

当RTCC作为内部计时器使用时需将RTCC管腿接VDD或VSS,以减少干扰和耗电流。

下例程序以RTCC做延时。

这个延时程序中,每过256个指令周期RTCC寄存器增1(Prescaler=1:256),设芯片使用4MHz振荡,则:延时时间=256*256=65536(US)RTCC是自振式的,在它计数时,程序可以去做别的事,只要隔一段时间去读取它,检测它的计数值即可。

所以用RTCC做延时,在延时期间,程序还可以做别的事。

这是一般用软件来延时做不到的。

十二、寄存器体(Bank)的寻址对于PIC16C52/54/55/56,寄存器有32个,只有一个体(bank),故不存在体寻址问题,对于PIC16C57来说,寄存器则有80个,分为4个体(bank0-bank3)。

在§1.5.1中对F4(FSR)的叙述中已有提及。

F4的bit6和bit5是寄存器体寻址位,其对应关系如下:当芯片RESET后,F4的bit6、bit5都被清零,所以是指向Bank0。

下面的例子对Bank1和Bank2的30H及50H寄存器写入数据。

从上例中我们看到,对某一体(Bank)中的寄存器进行读写,首先要先对F4 中的体寻址位进行操作。

当然,芯片RESET后自动选择Bank0(bit6=0、bits=0),所以如果复位后读写,不需对PA1和PA0再操作。

只有当对Banko以外的寄存器体读写,才需先置PA1和PA0为相应的值。

注意,在例子中对30H寄存器(Bank1)和50H寄存器(Bank2)写数时,用的指令"MOVWF 10H"中寄存器地址写的都是"10H",而不是读者预期的"MOVWF 30H"和"MOVWF 50H",为什么?让我们回顾一下指令表。

相关文档
最新文档