- 脚本
D脚本
脚本 全局D脚本
扩展脚本
D脚本 —— 特定的某个画面内执行的脚本
全局D脚本 —— 在所有画面执行的脚本
扩展脚本 —— 触摸屏不支持的通讯设备上,
通过写扩展脚本代码来实现通讯。
- LS区
Memory Link 触摸屏被动 (触摸屏不支持直接通讯的)
通讯方式
Direct Access 触摸屏主动 (触摸屏支持通讯的)
数据类型:
|
数据类型 |
常量输入 |
|
|
最小 |
最大 |
|
|
Bin16 |
0 |
65535 |
|
Bin32 |
0 |
4294967295 |
|
Bin16+/- |
-32768 |
32767 |
|
Bin32+/- |
-2147483648 |
2147483647 |
|
BCD16 |
0 |
9999 |
|
BCD32 |
0 |
99999999 |

如上图所示:
用户真正可以使用的区域是:LS0276 ~ LS2031 LS2096 ~ LS8999两个区域。
- LS0000 ~ LS0020
|
内部地址 |
描述 |
|
LS0000 |
当前画面号 |
|
LS0001 |
错误状态 |
|
LS0002 |
时钟的当前“年”值 |
|
LS0003 |
时钟的当前“月”值 |
|
LS0004 |
时钟的当前“日”值 |
|
LS0005 |
时钟的当前“时间”值 |
|
LS0006 |
状态 |
|
LS0007 |
保留 |
|
LS0008 |
切换到画面 |
|
LS0009 |
画面显示ON/OFF |
|
LS0010 |
时钟的年份预设值 |
|
LS0011 |
时钟的“月份”设置 |
|
LS0012 |
时钟的“日”设置值 |
|
LS0013 |
时钟的“时间”设置 |
|
LS0014 |
控制 |
|
LS0015 |
保留 |
|
LS0016 |
窗口控制 |
|
LS0017 |
窗口编号 |
|
LS0018 |
窗口显示位置(X坐标) |
|
LS0019 |
窗口显示位置(Y坐标) |
- LS2032 ~ LS2047
|
地址 |
描述 |
|
LS2032 |
通用继电器信息 |
|
LS2033 |
基本画面信息 |
|
LS2034 |
保留 |
|
LS2035 |
1秒钟二进制计数器 |
|
LS2036 |
显示扫描时间 |
|
LS2037 |
通讯周期 |
|
LS2038 |
显示扫描计数器 |
|
LS2039 |
通讯错误代码 |
|
LS2040 |
令牌分辨率速率最大值 |
|
LS2041 |
令牌分辨率速率当前值 |
|
LS2042 |
保留 |
|
LS2043 |
|
|
LS2044 |
|
|
LS2045 |
|
|
LS2046 |
|
|
LS2047 |
各个地址的详情-特殊继电器
- 通用继电器信息(LS2032)

|
位 |
描述 |
|
bit0 |
每个通讯周期进行ON/OFF切换。 |
|
bit1 |
当基本画面或窗口切换后,该位将被置ON,直到切换完成变成OFF |
|
bit2 |
只有当发生通讯错误时才置ON。 |
|
bit3 |
在上电显示初始画面时置ON。 |
|
bit4 |
通常为ON。 |
|
bit5 |
通常为OFF。 |
|
bit6 |
当清除备份SRAM时置ON。(仅板载备份SRAM) |
|
bit7 |
当使用D脚本时,在发生BCD错误时置ON。 |
|
bit8 |
当使用D脚本时,在发生零错误时置ON。 |
|
bit9 |
当不能向备份SRAM传输配方时置ON。 |
|
bit10 |
当不能用控制字地址触发从PLC到SRAM传输配方数据时置ON。此外,如果通过特殊数据显示器(配方)从PLC进行数据传输,当使用传输完成位地址时,在数据不能从PLC->内部寄存器或PLC->SRAM上进行传输时,该位置ON。 |
|
bit11 |
当通过特殊数据显示器(配方)在SRAM ←→ 内部寄存器之间传输时,该位置ON。 |
|
bit12 |
当使用D脚本时,如果发生了来自memcpy( )或地址偏移指定读取的通讯错误时,该位将被置ON |
|
bit13 |
当[串口操作]设置为读取发送函数、接收函数、控制、状态变量和接收数据的大小时,该位置ON。 |
|
bit14 |
在执行扩展脚本的[文本操作]函数时,该位置ON。 |
|
bit15 |
保留 |
- 基本画面信息(LS2033)
|
位 |
描述 |
|
bit0 |
每个通讯周期进行ON/OFF切换。 |
|
bit1 |
当基本画面或窗口切换后,该位将被置ON,直到切换完成变成OFF |
|
bit2 ~ 15 |
保留 |
- 1秒钟二进制计数器(LS2035)
上电后即开始每秒钟加1。数据以BIN格式保存。
- 显示扫描时间(LS2036)
显示画面上的第一个部件到最后一个部件所需的时间。数据以Bin格式保存,以ms为单位。当对目标部件的所有处理均已完成时数据会得到更新。数据的初始值为 "0"。该值有+/-10 ms的误差。
- 通讯周期时间(LS2037)
对映射到系统数据区的地址(PLC或其他设备)进行扫描,从扫描开始到结束的时间。数据以Bin格式保存,以10ms为单位。当对系统数据区和目标设备的所有处理均已完成时数据会得到更新。数据的初始值为 "0"。该值有+/-10 ms的误差。
当多台控制器/PLC连接到一台人机界面时,只能将系统数据区分配给一台控制器/PLC。
- 显示扫描计数器(LS2038)
每次当显示画面上设置的部件进行处理时计数器会增加一次。数据以BIN格式保存。
- 通讯错误代码(LS2039)
当发生通讯错误时,它以Bin格式保存最后显示的通讯错误代码。
- 令牌分辨率速率最大值(LS2040)
仅在串行多重连接过程中使用。通过多台连接人机界面的令牌数据包(PLC的一个命令权限)进行一个周期的传输所需时间的最大值。单位为10毫秒。每次更改最大值或切换画面时都更新数据。该数据的初始值为“0”。有±10ms的误差。
- 令牌分辨率速率当前值(LS2041)
仅在串行多重连接过程中使用。通过多台连接人机界面的令牌数据包(PLC的一个命令权限)进行一个周期的传输所需时间的当前值。单位为10毫秒。每次更改最大值或切换画面时都更新数据。该数据的初始值为“0”。有±10ms的误差。
- LS9000 ~ LS9999
|
内部地址 |
描述 |
详情 |
|
LS9000 - LS9063 |
显示历史图数据 |
历史数据编号和数据值 |
|
LS9100 - LS9199 |
脚本处理 |
脚本错误代码 |
|
LS9200 ~ |
CSV数据传输功能 |
由条件名称查找功能传输的CSV数据文件的文件号数量 |
|
LS9210 - LS9229 |
保留 |
保留 |
|
LS9230 ~ |
VM模块串行鼠标功能 |
串行鼠标触摸状态和坐标 |
|
LS9235 ~ |
触摸坐标 |
触摸人机界面画面上的坐标 |
|
LS9240 - LS9271 |
保留 |
保留 |
|
LS9272 - LS9274 |
MAC地址 |
MAC地址 |
|
LS9280 - LS9299 |
保留 |
保留 |
|
LS9300 ~ |
安全功能 |
安全级别 |
|
LS9310 ~ |
星期 |
星期 |
|
LS9320 - LS9349 |
保留 |
保留 |
|
LS9350 ~ |
RGB 2通道串行鼠标功能 |
触摸RGB模块串行鼠标的状态和坐标 |
|
LS9370 - LS9399 |
保留 |
保留 |
|
LS9400 ~ |
通讯周期 4个驱动程序 x 32台控制器*2 |
控制器/PLC的通讯周期 |
|
LS9528 ~ |
保留 |
保留 |
|
LS9550 ~ |
通讯扫描ON/OFF控制 4个驱动程序 X 32台控制器*2 |
控制器/PLC通讯扫描ON/OFF |
|
LS9558~ |
保留 |
保留 |
|
LS9560~ |
通讯扫描ON/OFF状态 4个驱动程序 X 32台控制器*2 |
控制器/PLC通讯扫描状态 |
|
LS9568 |
保留 |
保留 |
|
LS9800 - LS9815 |
报警轮询周期信息 |
启用扩展报警时实际测量的轮询时间和每块的平均时间 |
|
LS9920 - LS9999 |
保留 |
保留 |
- CSV数据传输功能(LS9200、LS9201)

保存条件名称查找功能传输的CSV数据的数量和文件编号。只有当搜索字符串与条件名称完全匹配时搜索才有结果。若在文件名中使用了空格,则表示是不同的文件名,并可能造成错误。当数据传输完成时,将显示已传输文件的状态和数量。最后传输的文件号码被写入GP内部寄存器特殊区LS9200和LS9201。(特殊区是只读的)
- 触摸坐标 (LS9200、LS9201)
保存一个显示画面上的触摸坐标。

- 触摸屏物理地址 (LS9272 -LS9274)
人机界面的MAC地址以十六进制格式保存在LS9272 - LS9274中,从第一个八位字节开始。
- USR区
USR00000 – USR29999 都是用户区,都可以使用
- 临时地址区
t:0000–t:0089 是临时地址区。用于变址或循环。等同于三菱中的Z0或V0
- 运算符
|
运算符 |
描述 |
详细 |
例子 |
|
+ |
加 |
将两个数据相加 |
b=2 + 1 → b=3 |
|
- |
减 |
将两个数据相减 |
b=2 - 1 → b=1 |
|
% |
取模 |
返回两个数据执行除法运算后的余数 |
b=5 % 3 → b=2 |
|
* |
乘 |
将两个数据相乘 |
b=5 * 3 → b=15 |
|
/ |
除 |
将两个数据相除 |
b=5 / 3 → b=1 小数后会没掉 |
|
= |
赋值 |
将右侧的值赋给左侧 |
a=3 b=a → b=3 |
|
<< |
左移 |
按右侧数字将左侧数据向左移 |
a=16 b=a<<2 → b=64 |
|
>> |
右移 |
按右侧数字将左侧数据向右移 |
a=16 b=a>>2 → b=4 |
|
& |
按位与 |
执行数据间的逻辑与 |
b=45 & 7 → b=5 |
|
| |
按位或 |
执行数据间的逻辑或 |
b=45 | 7 → b=47 |
|
^ |
按位异或 |
执行数据间的逻辑异或 |
b=45 ^ 7 → b=42 |
|
~ |
按位取反 |
按位取反(~) |
b= ~45 → b=18 |
区别1: % 求余数 / 求商。
区别2: = 赋值 == 判断是否相等
- 逻辑运算
|
运算符 |
描述 |
例子 |
|
AND |
逻辑与 |
c=(a and b) a≠0 b≠0 → c=1 其它情况 c=0 |
|
OR |
逻辑或 |
c= (a and b) a≠0 → c=1 b≠0 → c=1 a=0 b=0 → c=0 |
|
NOT |
非 |
b=not a 如果a=0 b=1, a≠0 b=0 |
|
< |
小于 |
|
|
<= |
小于等于 |
|
|
> |
大于 |
|
|
>= |
大于等于 |
|
|
<> |
不等于 |
|
|
== |
等于 |
- 条件表达式
- if – endif
- if - else – endif
- loop – endloop
loop(循环次数) //定义保存循环次数的临时地址。{[脚本表达式]break //可选的。用于中途退出循环体。} endloop //定义循环的终止。
例子:
[t:0000] = 100
loop ([t:0000]){[w:[#INTERNAL]LS0100]=[w:[#INTERNAL]LS0100]+1if ( [w:[#INTERNAL]LS0100] >10){break}endif}endloop
- break
在loop过程中退出loop ( )。
- return
函数处理终止,控制返回至函数的调用者。
立即取消主函数的处理并从主函数开始的地方重新开始。
- 常用内置函数
- Memset 等同于三菱FMOV
memset([写入地址]、写入数据、字数)
memset ([w:[PLC1]D0100], 0, 10)
将D0100至D0109的地址置“0”。
- Memcpy 等同于三菱BMOV
memcpy (复制目的地地址, 复制源地址, 字数量)
- _memcpy_EX
_memcpy_EX([复制目标地址]、[复制源地址]、字数)
- 参数1:寄存器地址+临时地址
- 参数2:寄存器地址+临时地址
- 参数3:数值、内部寄存器、临时地址(参数3的有效范围在1至640之间。)
[t:0000]=10, [t:0001]=20_memcpy_EX ([w:[#INTERNAL]LS0100]#[t:0000], [w:[PLC1]D0100]#[t:0001], 5)
将D120 – D124 复制到 LS0110 – LS0114