项目中使用 台达PLC+研控电机 的组合出现问题,现在改用汇川H3UPLC来处理,所以需要继续学习。以下记录主要针对此款PLC。
辅助继电器M/SM
一般用 M0-M499
保持用 M500-M1023 M1024-M7679
特殊用 M8000-M8511 SM0-SM1023
M8000 运行中接通(常开)
M8002 运行瞬间接通,常用于执行一次的初始化操作
M8012 100ms脉冲
M8030 电池发光二极管熄灯指令
M8033 停止时保持输出
M8034 输出全部禁止
M8039 恒定扫描
状态继电器S
没有采用STL编程方式时,可当作普通位元件
定时器T
100ms: T0-T191
100ms: T192-T199(子程序使用)
10ms:T200-T245
1ms: T256-T511
1ms累计型:T246-T249(停电保持)
100ms累计型:T250-T255(停电保持)
计数器C
一般用16b: C0-C99
保持用16b: C100-C199
一般用32b: C200-C219
保持用32b: C220-C234
保持用32b: C235-C255 高速
寄存器
一般用:D0-D199
保持用: D200-D511(可设置为非保持)
保持用: D512-D7999
特殊用:D8000-D8511
变址用:V0-V7 Z0-Z7 (类似V0+Z0可组合成32位)
保持用:R0-R32767
特殊用:SD0-SD1023
常数变址:MOV K5Z0 D10 将Z0的值加上5后,给寄存器D10。Z0的值不变。
文件寄存器
R0-R32767 掉电保存
标号
P0-P511 与LBL指令配套使用
常数
十进制:K表示 16Bit指令中,K为-32768到32767
十六进制:H表示 16Bit指令中,H为0000-FFFF
BCD:以4位二进制表示的数
32浮点数:E表示
标号和子程序
指针L用于跳转程序的入口地址和子程序启始地址的标识 L0-L127
指针I用于中断程序的启始地址标识
I00x(X0) I10x(X1) I20x(X2) I30x(X3) I40x(X4) I50X(X5)
x=0 上升沿中断 x=1 下降沿中断
I600 I700 I800 定时中断
I010 I020 I030 I040 I050 I060 高速计数器中断
标号/跳转指针P用于跳转程序的入口地址标识
子程序概述
子程序命名格式 SBR_xxx 中断子程序 INT_xxx CNC子程序 CNCxxx 运动控制子程序 MC_xxx
中断程序中不允许调用子程序
子程序中,变量类型为IN或OUT,表示参数和输出值
PLC程序开始运行时,默认为中断禁止状态。执行了EI语句后,中断功能允许;执行DI语句后,中断禁止。
编号 | 上升沿中断 | 下降沿中断 | 禁止中断 |
---|---|---|---|
X00 | I001 | I000 | M8050 |
X01 | I101 | I100 | M8051 |
X02 | I201 | I200 | M8052 |
X03 | I301 | I300 | M8053 |
X04 | I401 | I400 | M8054 |
X05 | I501 | I500 | M8055 |
X06 | I561 | I560 | M8080 |
X07 | I571 | I570 | M8081 |
当M8050之类寄存器为ON时,其对应的中断事件被禁止
定时中断
I6xx:M8056(禁止中断寄存器)
I7xx:M8057
I8xx:M8058
xx为1-99,例如I710=每10ms的定时中断
计数完成中断
与DHSCS的比较置位指令一起使用。
I010.I020.I030.I040.I050.I060.I070.I080 M8059(禁止中断寄存器)
脉冲完成中断
定位指令脉冲输出完成后产生中断并执行中断程序
端口号 | 中断编号 | 禁止中断 |
---|---|---|
Y00 | I502 | M8090 |
Y01 | I503 | M8091 |
Y02 | I504 | M8092 |
Y03 | I505 | M8093 |
Y04 | I506 | M8094 |
TCPSTA S1 S2 S3 S4 S5 D 获取TCP连接状态
IP地址为:S1.S2.S3.S4,当IP地址为127.0.0.1时,表示获取本地端口连接数
S5为端口号:当IP地址为127.0.0.1时,为本地端口
D连接状态:当为127.0.0.1时,为本地端口连接状态:-1 未监听 ;其它值:当前端口连接数 ;
当为其它IP地址,为远程服务器连接状态:
-1:未配置
0:关闭
1:侦听
2:连接请求
3:连接确认
4:连接建立
5:
6:
7:
8:
9:
10:
TCPCON S1 S2 S3 S4 S5 建立/关闭连接
以太网特殊寄存器
SM364 以太网处理繁忙
SM365 不在线
SM366 以太网功能停止:0启动 1停止
SD364 以太网从站侦听端口
SD365 不在线从站站号
SD369 超时时间(单位10ms),默认20
SD370-SD373: IP地址
MOV K4M100 D20 或 MOV D10 K4M80 其中K4M100表示将M100.M101.M102…M115共16个单元,组成一个字的单元进行读操作(M100作为字的Bit0…M115作为字的Bit15),这样可以提高编程效率。
备: 内部以4位为一组,K4表示4组,即16位
指令 | 功能 | 参数 | 说明 |
---|---|---|---|
LD | 常开接点 | ||
LDI | 常闭接点 | ||
AND | 串常开 | ||
ANI | 串常闭 | ||
OR | 并常开 | ||
ORI | 并常闭 | ||
LDP | 上升沿 | ||
LDF | 下降沿 | ||
INV | 取反 | ||
BLD | 指定位的状态 | S 源数 n 位 | BLD 16 3 结果为OFF ; BLD 16 4 结果为ON |
BLDI | |||
MEP | 上升沿导通 | 将运算结果脉冲化 | |
MEF | 下降沿导通 | ||
OUT | 驱动线圈 | ||
SET | 置位 | ||
RST | 清除 | ||
PLS | 上升沿ON | ||
PLF | 下降沿ON | ||
ALT | 交替ON/OFF | ||
BOUT | 某位置1,不保持 | S 源数据 n 位 | BOUT D100 2 ;当D100初始值为2#1010时,结果为2#1110。当条件OFF时,置位将被恢复 |
BSET | 某位置1,且保持 | ||
BRST | 某位置0,且保持 | ||
MC/MCR | 主控指令 | 第1个参数为层级N0-N7,第2个参数是?? | 程序块,当条件为OFF时,程序块内不执行 |
WDT | 监视器复位 | 软件狗 | |
CALL | 子程序调用 | 循环中可采用T192-T199或T246-T249作为定时器 | |
SRET | 子程序返回 | ||
SSRET | 子程序带条件返回 | ||
IRET | 中断程序完毕 | ||
EI | 中断许可 | ||
DI | 中断禁止 | ||
CJ | 条件跳转 | ||
LBL | 标号 | ||
CJEND | 条件跳转到程序结束位置 | ||
FOR | 循环开始 | 当前值小于条件时循环,即条件为2,则执行1次循环 | |
NEXT | 循环结束 | ||
LD= LD< LD<> LD> LD>= LD<= | 16位使用LD,32位使用LDD | ||
AND/OR | 与/或比较 | ||
LD& LD| LD^ | |||
AND& AND | AND^ | ||
OR& OR | OR^ | ||
FLD | 比较两操作数大小 | ||
LDZ | 绝对值比较 | 将S1与S2相减后结果的绝对值与S3的绝对值进行比较 | |
CMP | 数据比较 | 根据S1与S2的比较结果,设置D、D+1、D+2其中一个为ON | |
ECMP | 二进制浮点比较 | 同上,只是类型为浮点数 | |
ZCP/EZCP | 区间比较 | 根据S所处区间(S<S1,S1≤S≤S2,S>S2)置D,D+1,D+2,其中一个为ON | |
ADD | 二进制加 | 计算结果为0,则0标志(M8020)会置位 | |
SUB | 二进制减 | ||
MUL | 二进制乘 | 积大于16bit,需用到D的相邻高位 | |
DIV | 二进制除 | 商存放地址D,余数存放在D+1 | |
ABS | 计算绝对值 | ||
INC/DEC | 加1/减1 | ||
WAND/WOR/WXOR | 二进制逻辑与/或/异或 | ||
NEG | 二进制求补 | 对D进行逐位取反、再加1 | |
WSUM | 多数据求和 | WSUM D100 D120 K6 ; 将D100开始的6个元件求和,放入D120 | |
MEAN | 平均值 | ||
LIMIT | 上下限位 | [S1]>[S3]时,[S1]→[D]; [S2]<[S3]时,[S2]→[D]; [S1]≤[S3]≤[S2]时,[S3]→[D]。 | |
BZAND | 死区控制 | [S1]>[S3]时,[S3]-[S1]→[D]; [S2]<[S3]时,[S3]-[S2]→[D]; [S1]≤[S3]≤[S2]时,0→[D] | |
ZONE | 区域控制 | [S3]<0时,[S3]+[S1]→[D]; [S3]>0时,[S3]+[S2]→[D]; [S3]=0时,0→[D] | |
INT | 浮点取整 | ||
BCD | 二进制数据转换BCD数据 | BCD D200 K1Y0 ;将D200结果存于K1Y0中(Y0-Y3四个Bit元件) | |
BIN | BCD转二进制 | ||
DABIN | 10进制ASCII转BIN数值 | 将以ASCII值存储的数据转换出来,如2DH为-号,30H-39H为0-9 | |
将存储于S-S2的10进制ASCII转换为16位数据 S0.15-S0.8 万位,S0.7-S0 符号位,S1.15-S1.8 百位,S1.7-S1.0 千位,S2.15-S2.8 个位,S2.7-S2.0 十位 | |||
BINDA | BIN转ASCII码(与上相反) | ||
WTOB | 16位数据按8位分离 | S 源数据 D 目标地址 n 分离多少个 | 分离后的结果:高位置零,低位存于D及D1 |
BTOW | 与上相反 | ||
UNI | 将连续的16位数据的低4位结合在一起 | ||
DIS | 与上相反 | ||
ASCI | HEX->ASCII | ||
HEX | ASCII->HEX | ||
EMOV | 浮点传送 | ||
SMOV | 移位传送 | 将源数据中某xx位移至目标数据;M8168决定是按BCD还是BIN模式移位 | |
BMOV | 数据成批传送 | M8024=1时为反向传送 | |
FMOV | 一对多传送 | ||
CML | 数据取反传磅 | ||
ZPUSH | 变址寄存器批量保存 | 将变址寄存器的值保存到寄存器中 | |
ZPOP | 与上相反 | ||
ZRST | 批量数据复位 | 将D1至D2区间的变量全部清0 | |
SORT | 数据按列升序排列 | S表有m1行m2列,将其中第n列排序后存于D | |
SORT2 | 数据按行升降序排列 | M8165置ON,降序排列 | |
SER | 数据查找 | 返回多个值:相等个数.第一个相等序号… | |
FDEL | 数据表的数据删除 | 未读 | |
FINS | 数据表的数据插入 | 未读 | |
ROR/ROL | 循环右移/左移 | ||
RCR/RCL | 带进位循环右移/左移 | ||
SWAP | 上下字节交换 | ||
BON | ON位判断 | ||
SUM | ON位总数 | ||
RND | 产生随机数 | 0-32767 | |
XCH | 数据交换 | ||
RS | 串行数据传送 | ||
MODBUS | MODBUS通讯 | ||
CCD | 校验码 | ||
CRC | CRC校验码 | ||
LRC | LRC校验码 | ||
STR | BIN转字符串 | MOV K6 D0 ; MOV K2 D1 ;STR D0 D10 D20 ; 将D10中的数字转换为一共6个字符,带两个小数位的字符串。不足6个8位用前置空格。结果存于D20.D21.D22.D23。D23保存00H或0000H表示结束。 | |
VAL | ASCII转BIN | VAL D20 D10 D0 ; 将D20保存的字符串转换为数据保存于D0(无小数位),总位数D10,小数位数D11 | |
$+ | 字符串连接 | ||
LEN | 字符串长度 | ||
INSTR | 字符检索 | ||
LEFT/RIGHT/MIDR | 左取/右取/任意取 | ||
MIDW | 字符替换 | ||
$MOV | 字符传送 | ||
TCMP | 时钟数据比较 | 与内部实时时钟进行比较 | |
TZCP | 时钟区间比较 | ||
TADD/TSUB | 时钟加/减 | ||
HTOS/STOH | 时间转秒/秒转时间 | ||
TRD/TWR | 读/写PLC时钟 | ||
HOUR | 计时表 | 单位:小时 ; HOUR K2000 D300 Y10 ; 将持续小时存于D300,不满1小时的秒记录在D301,当D300达到2000小时后,Y10为ON,累计计时仍继续。重计时需D300.301清除为0 | |
TTMR | 获取按键时长 | ||
STMR | 特殊定时器 | 未理解 | |
DUTY | 定时脉冲 | 定时脉冲ON/OFF,输出目标地址M8335-M8339 | |
REF | 输入输出刷新指令 | 将S地址开始的n个元件状态立即更新;S地址必须为X或Y最低位为0的编号元件,例如X0,X10,Y20 | |
REFF | 输入滤波时间调整 | ||
现在的一个任务是通过EtherNet与基恩士相机通讯,获取视觉信息。