3UCS PADsys
(感知、执行与决策一体化系统)
目录
3.6. FINS协议通信(Omron PLCs)[../padsys/fins.dll]
3.7. EtherNet/IP(Rockwell/Allen-Bradley PLCs < AB PLCs>)[plceip.dll,仅专业版支持]
3.8. Fanuc CNC的读写[../padsys/focas/dlls]
3UCS PADsys即感知、执行与决策一体化系统旨在对企业运营尤其是工厂运转的各类信息的感知并交由决策系统智能决策,然后将决策指令下发给各执行单元,最终实现全厂自动化、企业智能化之目标。
PADsys分为两个层级:工厂级的深度感知执行与决策和企业级的泛在感知执行与决策,都分别拥有独立的感知执行单元PA(Perception感知、Action执行)和智能决策单元D(Decision决策)。
决策单元D以决策表引擎为支撑,辅以AI,实现免编程逻辑控制PLC(Programless Logic Control),达到可编程控制PLC(Programable Logic Control)同样的目的,省去程序费时费力的程序设计环节,让智能化控制更加简单便捷。
工业协议支持包括但不局限于MQTT(包括MQTTSN)、Modbus、Open Protocol、PLCS12、OPC、OPC UA、Serial Port、MTConnect、SNMP、PROFINET、NC-LINK等协议,并提供接口方便动态增加其他未知协议。
MQTT端口默认配置为TCP/UDP:998(MQTT/MQTTSN);web socket:996;
[MQTT](3UCS xPlus配置文件i3ubi.ini之MQTT节)
# MQTT section (tcp ports)
mqtt_iface = eth0
mqtt_port = 998
mqtt_tls_port = 997
mqtt_ws_port = 996
mqtt_ws_tls_port = 995
# MQTT-SN section (udp port)
mqttsn_iface = eth0
mqttsn_port = 996
PADsys是以PA单元(<Ubiquitous/Deep>Perception感知、<Accurate>Action执行)和D单元(<Intelligent>Decision决策)为支撑、工业协议为基础的设备深度感知AI辅助智能决策执行系统。
设备数据采集与驱动是使用设备支持的相关通信协议发出的读写指令来实现的,对应的配置文件为padsys.conf,默认位置为3UCS Server安装目录3UCS/padsys/下,配置格式如下:
<?xml version="1.0" encoding="UTF-8"?>
<pad clientid="devices">
<device id="itemtrans" remark="item transport between machine">
<pa proto="modbus" active="1" devaddr="1" ip="127.0.0.1" port="502">
<item id="1" name="m0s" cycle="5" funcode="1" valtype="BIT" startaddr="0" count="1"/>
<item id="2" name="m0o" cycle="5" funcode="5" valtype="BIT" startaddr="0" count="1"/>
<item id="3" name="m1s" cycle="5" funcode="1" valtype="BIT" startaddr="1" count="1"/>
<item id="4" name="m1o" cycle="5" funcode="5" valtype="BIT" startaddr="1" count="1"/>
<item id="5" name="tts" cycle="5" funcode="1" valtype="BIT" startaddr="2" count="1"/>
<item id="6" name="tto" cycle="5" funcode="5" valtype="BIT" startaddr="2" count="1"/>
<item id="7" name="ths" cycle="5" funcode="1" valtype="BIT" startaddr="3" count="1"/>
<item id="8" name="tho" cycle="5" funcode="5" valtype="BIT" startaddr="3" count="1"/>
<item id="9" name="p0s" cycle="5" funcode="1" valtype="BIT" startaddr="4" count="1"/>
<item id="10" name="pcs" cycle="5" funcode="1" valtype="BIT" startaddr="5" count="1"/>
<item id="11" name="p1s" cycle="5" funcode="1" valtype="BIT" startaddr="6" count="1"/>
<item id="12" name="mw" cycle="5" funcode="15" valtype="BIT" startaddr="0" count="2"/>
<item id="13" name="pw" cycle="5" funcode="15" valtype="BIT" startaddr="4" count="3"/>
</pa>
<d name="item_trans" table="item_trans" cycle="10" cron="0 */6 * * * * ?">
<triggers>
<trigger _x_="updated" oneshot="1"/>
<trigger _x_="changed" cond="||"/>
</triggers>
<rules><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="item_trans.xml"/></rules>
<inputs m0sd="${m0s}" p0sd="${p0s}" thsd="${ths}" ttsd="${tts}" m1sd="${m1s}" p1sd="${p1s}" pcsd="${pcs}"/>
<outputs m0od="m0o" m1od="m1o" thod="tho" ttod="tto"/>
</d>
</device>
</pad>
PAD标识该服务器系统,其clientid在整系统唯一,MQTT消息映射中对应topic标识该系统
device为设备单元,对应于物理设备(机台、机床、注塑机、中转车、传送带、电表、传感器等)
a) id为device识别id,用于整个系统唯一标识,MQTT消息映射中对应topic标识设备。
b) active使能该设备单元,默认为1,激活对该设备采集/控制;
PA为设备device不同通信协议集,对应于设备不同协议的数据采集与更新,每台设备可以有多个PA来配置不同的通信协议。
a) protocol为使用的协议,如modbus、open protocol等;
b) subproto用来增强协议功能,比如modbus在使用TCP转RTU是仍然使用tcp协议,此时需置subproto="rtu"来告诉系统使用的是modbus rtu而不是modbus tcp;
c) devaddr为设备地址,不同协议或厂家表示的含义不一样,比如modbus中其表示slaveid,可有些厂家设备用来区分目标地址,实现产品内部不同的功能;
d) serialport(串口,缺省值为baudrate="9600" databits="8" stopbits="0" flowctl="0" parity="2" bufsize="512"),IP/port为设置该通信协议的网络地址,不同协议对应不同配置,有的协议还有更详细的配置,参见各通信协议部分的说明; cyclebase用来调整cycle周期基数,默认值为1000ms,如需求中希望cycle小于1秒,可以将其设置为100ms或其他(eg:cyclebase="100" ); timeout为socket读写超时timeout值,默认值为100ms,可根据需要设置(eg:timeout="500", 设为500ms)。
e) active使能该协议,默认为1,激活使用该协议设备的配置点元采集/控制;
f) iotkey部分协议使用支持
item为对应设备的采集项或控制项,采集点位,采集数据的元单位,比如一个温度数据、一个电压数据等供数据的读写使用;
a) id/name唯一标识,应保证各设备中唯一性,id缺省为该项顺序号(起始序号为1),切勿设置与其他项顺序号冲突的id值(除非该PA点位项全部设置id),name是该项在整个系统的标识,MQTT消息映射中对应topic标识该项,不同协议参数意义不相同;
b) cycle为时间间隔触发参数,用于配置该项的读写周期,以cyclebase为基础,以cyclebase=1000ms默认值为例,cycle值设为30表示该项间隔30ms读写一次;
c) cron为该项读写CronTrigger触发配置机制,可以按cron方式设置定时读写;
d) valtype为该项的值的类型,基础类型有8位UINT8、16位UINT16、32位integer、float、string等,不同协议支持的类型也有差异,详见相关协议说明;
e) funcode/cmd该项对应的指令,不同通信协议不一样,详见相关协议的说明;
f) startaddr/count该项对应指令读写的起始地址与数量(该参数类型数量,非字节个数),当读取多个数据(count>1)时,该点位值取读取的数组值中第1个,及$n[0],其它数值存储在数组中,供非读写项引用,引用方法为$n[i],其中n代表为该项的id,i为数组值标号,起始标号为0,比如count=10,标号范围为0~9,系统loglevel设为5时会将数组值打印到log文件中;
g) delay主要用于modbus的IO输入输出场景,某些IO需要delay才能正常响应,(eg:delay="50");
h) expr为非读写项配置的计算表达式,该项不需使用指令读取设备数值,而是依耐于其他项读取的数值通过数学运算获取,表达式计算在一些设备的数据采集中发挥不可替代的作用,比如有些型号的电表采集出来的电能需要经过二次计算才是真实的值;目前表达式支持+ - * / % ^ ! | || & && (),sqrt(double), pow(double,double), lg(double), ln(double), sin(double), cos(double)等运算;例如expr="sqrt($1)"中$n代表id=n的点位值,上面的表达式意思就是对id=1的点位值进平方根运算,作为该项的点位值;亦可取该点位项的子值,子值以中括号[]表明,可以是数字序号或“tms”(该项状态最近变更的时间)“etms”(该项当前状态持续时长)[时间单位为毫秒ms],如expr="$1[10]"中$1[10]代表id=n项读取的数组之中第11个值(数组起始编号为0),expr="$1[tms]"将取值该项状态最近变更的时间。
d为对应设备的决策配置,包括决策触发机制triggers、决策规则表rules、决策输入变量inputs、决策输出变量outputs;
|
属性名 |
说明 |
|
cyclebase |
循环时间周期ms,缺省1000ms |
|
cycle |
时间间隔触发之触发间隔周期,缺省为0,不使用时间间隔触发 |
|
triggerIntervalMS |
触发间隔最小时间间隔,单位ms,缺省值50ms |
a) 触发triggers分为cron(CronTrigger,可在d元素属性值配置cron,亦可配置多个独立的trigger)、cycle(时间间隔触发,d元素属性值)、输入变量(inputs)更新/变化/特定值触发几种;输入变量触发配置变量触发条件(变量名="条件",eg: dbread="updated",可以用“_x_”代替所有输入变量,eg: _x_="updated",变量条件updated表示有更新就触发,changed表示该变量值有发生变化才处罚,若条件为其他设定条件,则对该变量进行运算为真时触发,支持的条件配置与决策表单元格的相同,eg: dbread="1", dbread="!= 2|3|4", dbread="< 6", dbread="[] 2,3", tmread="!= (NULL)",“>”“<”分别用“>”“<”代替),同时还可以配置频次(oneshot为1时仅启动后触发一次)/各触发变量的关系(cond默认为“与”关系,即该触发器配置的各变量条件均为真时触发,亦可配置为“或”关系,即cond="||",此时配置的任意变量条件为真时均会触发决策运算,亦可配置为复合的关系,比如cond="(${dbread}&&${tmread})||${dbchg}",dbread与tmread条件均为真会触发,dbchg条件为真时亦会触发),
b) rules决策表是决策运算的规则,每次运算都会检查该表,通过使用决策表引擎,无需额外程序设计,引擎自动根据输入变量按照决策表拟定的规则运算,并可以结合AI人工智能做出相应的输出,类似于可编程控制器PLC,只是减去的繁琐的PLC程序设计。该表使用xLogicDesigner工具设计,如下图所示为item_trans的决策表, item_trans.xml的决策表如下: 决策表参数说明:从机台M0通过传送装置T传送给M1,m0s、m1s、tts分别为机台M0、M1、传输机T夹器的状态(1夹紧、0松开),p0s、pcs、p1s为传输机T位置状态(p0s为1时T位于M0侧位置,pcs为1时T位于中间过渡暂停位置,p1s为1时T位于M1侧),tts为传输机运转状态,m0o、m1o、tho和tto分别为机台M0、M1、传输机夹器和传输机运转对应的操作指令。

c) inputs为输入变量,属性名为决策表inputs类型列的列名,属性值为表达式,表达式可使用该设备PA项变量名name,格式为${变量名};
d) outputs为输出变量,属性名为决策表outputs类型列的列名,属性值为PA项中Action项变量名name;
MODBUS是一种国际标准的通讯协议,用于不同厂商之间的设备交换数据(一般是工业用途), MODBUS协议又分串口协议MODBUS RTU、MODBUS ASCII和后来发展的MODBUS TCP三种模式:其中前两种(MODBUS RTU,MODBUS ASCII)所用的物理硬件接口都是串行(Serial)通讯口(RS232,RS422,RS485)。而MODBUS TCP模式,该模式的硬件接口就是以太网(Ethernet)口了,也就是我们电脑上一般用的网络口了。
3UCS提供MODBUS TCP协议与串口协议,同时提供串口TCP透传支持,即使用IP网络通信但MODBUS协议仍然使用串口COM通信协议。
<pa proto="modbus" devaddr="1" ip="192.168.1.12" port="502" cyclebase="500"></pa>
<pa proto="modbus" devaddr="2" ip="127.0.0.1" port="502" subproto="rtu"></pa>
<pa proto="modbus" devaddr="1" serialport="COM2"></pa>
点位读写的配置参数
|
参数名 |
说明 |
|
funcode |
1(读线圈),2(读离散输入),3(读保持寄存器),4(读输入寄存器),5(写单个线圈),6(写单个保持寄存器),15(写多个线圈),16(写多个保持寄存器) |
|
Valtype |
数据类型,同时表明数据长度,count值以该数据长度为基础;bit(1位),uint16(1个寄存器,16位),integer(2个寄存器,32位),float(2个寄存器,32位),double(4个寄存器,64位),string(字符);例如, funcode="1" valtype="bit" count="5",读5个线圈,而funcode="3" valtype="float" count="5"读10个寄存器。 |
|
startaddr |
数据起始地址 |
|
offset |
地址相对于startaddr偏移,仅读写单个寄存器(funcode取值3,4时有效)可为0,1,默认为0,当取值1时,count只能取值1, |
|
count |
读写数据的个数,offset取值为1时count取值只能为1 |
|
delay |
写操作延时,单位ms毫秒 |
|
Bytesorder |
"ABCD", "DCBA","BADC","CDAB" |
示例如下:
<item id="1" name="cpu" cycle="5" funcode="3" valtype="float" startaddr="0" offset="1" count="1" delay="0"/>
The M-Bus (Meter Bus) was developed to fill the need for a system for the networking and remote reading of utility meters, for example to measure the consumption of gas or water in the home。
PA配置IP地址与端口及设备地址devaddr即可;item项亦可配置设备地址devaddr,此项数据采集与处理时将使用该项配置的设备地址devaddr。
MBus处理单元会将该设备的数据一次性读取并保存在数组中,跟其它处理单元相同,仅第一个数据用于该点位的运算处理,其它数据供其它点位从数组中取得;其相关详细信息保存于该项detail内供查看分析处理。
<pa proto="mbus" devaddr="1" ip="192.168.1.12" port="1502" cyclebase="500"></pa>
<item id="1" name="cpu" devaddr="1" cycle="5" funcode="read" valtype="float" delay="0"/>
Open Protocol is an interface for building applications for remote control or data subscription of controllers. It is platform independent and can be implemented on Linux, PLC, printers, and all Windows platforms for example. The Open Protocol supports both serial and Ethernet connection.
主要支持的设备厂商有Atlas Copco、Desoutter等。
<pa proto="openprotocol" devaddr="1" ip="192.168.1.100" port="5056"></pa>
Open Protocol消息分订阅推送消息(15,61,7404,7406,7410等)和主动读取/写入的点位消息。
订阅类消息将以归类于sys,topic类似于devices/desoutter01/sys/61,对应详细信息的topic为devices/desoutter01/sys/61/detail。
点位读写的配置参数funcode参见Open Protocol specification 、Desoutter Protocol Manual等,acquire申明该点位为采集(感知,true)项,还是驱动执行(写入,false)项。
<item id="1" name="keepalive" cycle="10" funcode="9999"/>
<item id="2" name="psetdo" cycle="5" acquire="false" funcode="18"/>
<item id="3" name="psetbatchsize" cycle="5" acquire="false" funcode="19"/>
<item id="4" name="distool" cycle="5" acquire="false" funcode="42"/>
<item id="5" name="entool" cycle="5" acquire="false" funcode="43"/>
<item id="6" name="vin" cycle="5" acquire="false" funcode="50"/>
<item id="7" name="poscostart" cycle="5" acquire="false" funcode="200" param="5"/>
<item id="8" name="poscoreset" cycle="5" acquire="false" funcode="200" param="8"/>
西门子PLC的读写主要通过TCP/IP方式实现,通信协议采用S7,配置好IP地址、Rack (0..7)、Slot (1..31)及端口即可。(printinfo="1"可将当前PA连接信息输出至log文件中)
<pa proto="s7" ip="127.0.0.1" rack="0" slot="2"></pa>
In addition to the IP Address, that we all understand, there are two other parameters that index the unit : Rack (0..7) and Slot (1..31) that you find into the hardware configuration of your project, for a physical component, or into the Station Configuration manager for WinAC.
There is however some special cases for which those values are fixed or can work with a default as you can see in the next table.
|
|
Rack |
Slot |
|
|
S7 300 CPU |
0 |
2 |
Always |
|
S7 400 CPU |
Not fixed |
Follow the hardware configuration |
|
|
WinAC CPU |
Not fixed |
Follow the hardware configuration |
|
|
S7 1200 CPU |
0 |
0 |
Or 0, 1 |
|
S7 1500 CPU |
0 |
0 |
Or 0, 1 |
|
CP 343 |
0 |
0 |
Or follow Hardware configuration. |
|
CP 443 |
Not fixed |
Follow the hardware configuration. |
|
|
WinAC IE |
0 |
0 |
Or follow Hardware configuration. |
与LOGO! 0BA7 /S7 200 via CP243通信还需设置额外的参数,It’s possible, but uncomfortable, to connect to a S7300 PLC using these functions as well. To do this, use 0x0100 as Local TSAP and follow the next formula for the Remote TSAP.
|
Connection Type |
Value |
Remark |
|
PG |
0x01 |
PG (the programming console), |
|
OP |
0x02 |
OP (the Siemens HMI panel) |
|
S7 Basic |
0x03..0x10 |
S7 Basic (a generic data transfer connection) |
点位读写的配置参数:
funcode分别为readarea,writearea, readmultivars,writemultivars, dbread,dbwrite, mbread,mbwrite, ebread,ebwrite, abread,abwrite, tmread,tmwrite, ctread,ctwrite等,各类型可读写参见下表:
|
|
CPU |
CP |
DRIVE |
|||||
|
|
300 |
400 |
WinAC |
Snap7S |
1200 |
1500 |
343/443/IE |
SINAMICS |
|
DB Read/Write |
O |
O |
O |
O |
O |
O(3) |
- |
O |
|
EB Read/Write |
O |
O |
O |
O |
O |
O |
- |
O |
|
AB Read/Write |
O |
O |
O |
O |
O |
O |
- |
O |
|
MK Read/Write |
O |
O |
O |
O |
O |
O |
- |
- |
|
TM Read/Write |
O |
O |
O |
O |
- |
- |
- |
- |
|
CT Read/Write |
O |
O |
O |
O |
- |
- |
- |
- |
|
Read SZL |
O |
O |
O |
O |
O |
O |
O |
O |
|
Multi Read/Write |
O |
O |
O |
O |
O |
O |
- |
O |
|
Directory |
O |
O |
O |
O |
- |
- |
O |
(2) |
|
Date and Time |
O |
O |
O |
O |
- |
- |
- |
O |
|
Control Run/Stop |
O |
O |
O |
O |
- |
- |
(1) |
O |
|
Security |
O |
O |
O |
O |
- |
- |
- |
- |
|
Block Upload/Down/Delete |
O |
O |
O |
- |
- |
- |
O |
O |
Snap7S = Snap7Server
(1) After the “Stop” command, the connection is lost, Stop/Run CPU sequence is needed.
(2) Tough DB are present and accessible, directory shows only SDBs.
(3) See S71500 Notes
读写配置数值类型,数值类型valtype缺省为integer,readarea/writearea需指定读写的area,area值可以是pe,pa,mk,db,ct,tm,读写db时无论是使用readarea/writearea还是dbread/dbwrite都需指定dbnumber(0~0xffff),配置示例如下:
<item name="dbread" funcode="dbread" startaddr="0" count="1" dbnumber="3" cycle="5"/>
<item name="mbread" funcode="mbread" startaddr="0" count="1" cycle="5"/>
<item name="ebread" funcode="ebread" startaddr="0" count="1" cycle="5"/>
<item name="abread" funcode="abread" startaddr="0" count="1" cycle="5"/>
<item name="tmread" funcode="tmread" startaddr="0" count="1" cycle="5"/>
<item name="ctread" funcode="ctread" startaddr="0" count="1" cycle="5"/>
<item name="readarea" funcode="readarea" area="db" dbnumber="3" startaddr="0" count="1" cycle="5"/>
【S7 1200/1500 Notes】
An external equipment can access to S71200/1500 CPU using the S7 “base” protocol, only working as an HMI, i.e. only basic data transfer are allowed.
All other PG operations (control/directory/etc..) must follow the extended protocol.
Particularly to access a DB in S71500 some additional setting plc-side are needed.
1. Only global DBs can be accessed.
2. The optimized block access must be turned off.
3. The access level must be “full” and the “connection mechanism” must allow GET/PUT.
Let’s see these settings in TIA Portal V12
DB property
Select the DB in the left pane under “Program blocks” and press Alt-Enter (or in the contextual menu select “Properties…”)
Uncheck Optimized block access, by default it’s checked.

Protection
Select the CPU project in the left pane and press Alt-Enter (or in the contextual menu select “Properties…”)
In the item Protection, select “Full access” and Check “Permit access with PUT/GET ….” as in figure.
Mitsubishi主要提供COM通信(FX系列)及MC通信(QL,iQR系列)方式的读写
1) FX系列提供直接COM(缺省配置baudrate="9600" databits="7" stopbits="1" flowctl="0" parity="2" bufsize="512")口方式与TCP透传方式,协议配置为proto="melsec" subproto="fx" 分别指明COM口编号与ip地址与端口即可,示例如下:
<pa serialport="COM1" proto="melsec" subproto="fx"></pa>
<pa ip="127.0.0.1" port="502" proto="melsec" subproto="fx"></pa>
FX点位读写的配置参数的funcode复杂些,并且X,Y地址编号为8进制,即只能取值0~7,10~17,20~27之类,主要有
a) [Y(0~177),M(0~1023,8000~8255),S(0~999),T(0~255),C(0~255)]readcoil,writecoil;
b) [X(0~177),Y(0~177),M(0~1023,8000~8255),S(0~999),T(0~255),C(0~255)]readbit,writebit;
c) [D(<16bit>0~511,<32bit>8000~8255),T(<16bit>0~255),C(<16bit>0~199,<32bit>200~255)]readreg,writereg;
d) [Y(0~177),M(0~1023)]readpls,writepls;
e) [Y(0~177),M(0~1023,8000~8255),S(0~999),T(0~255),C(0~255)]rstcoil;
f) [D(<16bit>0~511,<32bit>8000~8255)]read,write;
g) [X(0~177),Y(0~177),M(0~1023,8000~8255),S(0~999),T(0~255),C(0~255)]forceon,forceoff,该类操作为单节点,故count参变量为,设置不起作用。
点位读写示例如下:
<item name="DR" cycle="5" funcode="Read" valtype="UINT16" startaddr="D123" count="16"/>
<item name="YR" cycle="5" funcode="ReadCoil" valtype="UINT8" startaddr="Y10" count="16" remark="X,Y is 8 end-on,0~7,10~17,20~27"/>
2) MC通信(QL,iQR系列)的读写分为位(1bit)/字(16bit)单位,协议配置为proto="melsec" subproto="fx" ,需指定PLC系列,可以是QL或iQR,并指定ip地址及端口(缺省为9600),示例如下:
<pa ip="127.0.0.1" port="9600" proto="melsec" subproto="mc" PLCSerie="QL" remark="QL,iQR"></pa>
MC协议点位读写的配置参数funcode为read,write,通过地址来识别类型,具体参见各型号PLC的软元件代码说明[MELSEC通讯协议参考手册.pdf 126page],点位读写示例如下:
<item id="1" cycle="5" name="DR" funcode="Read" valtype="UINT16" startaddr="D123" count="16" ControllerType="1010"/>
FINS is an inter-PLC protocol which allows hardware layer independent exchange of data between PLCs. Omron PLCs support the exchange of data over serial lines, TCP, UDP and bus systems. FINS is a client server protocol where a client sends requests to a remote server and processes their answer.
<pa proto="fins" ip="10.10.10.160" port="9600" local_net="0x01" local_node="0x32" local_unit="0x00" remote_net="0x01" remote_node="0x64" remote_unit="0x00"></pa>
点位读写的配置参数:
Funcode:0101 memory area read, 0102 memory area write
Startaddr为多段式,分别为地址类型、起始地址位置[对于位类型,可带位偏移(以“.”与地址隔开)]以空格分隔。例如startaddr="CIO 00.12"表示CIO Area的地址0000且位偏移至12(位基地址为00)的数据;startaddr="CNT 0000"表示Counter Area的地址为0000的数据。
valtype值可为:"uint16", "integer","float", "int16", "int32", "bcd16", "bcd32", "bcd16_0" , "bcd16_1", "bcd16_2" , "bcd16_3", "bcd32_0" , "bcd32_1", "bcd32_2" , "bcd32_3", "double", "bit", "bit_forced", "word_forced",count为valtype类型的数量。
<item id="1" name="med_pos1" cycle="5" funcode="0101" startaddr="CIO 00.12" valtype="bit" count="1"/>
<item id="2" name="med_pos2" cycle="5" funcode="0101" startaddr="CNT 0000" valtype="BCD32" count="1"/>
|
Area |
Range |
|
CIO Area |
CIO 0000 to CIO 6143 |
|
Work Area |
W000 to W511 |
|
Holding Area |
H000 to H511 |
|
Auxiliary Area |
A000 to A959 (See note 1.) |
|
Timer Area |
TIM0000 to 4095 |
|
Counter Area |
CNT0000 to 4095 |
|
DM Area |
D00000 to D32767 |
|
EM Area |
E00000 to E32767 (See note 2.) |
【Note】
1. Data cannot be written to words A000 to A447 in the Auxiliary Area.
2. A maximum of 13 banks in the EM Area can be used. For details regarding the EM Area, refer to the operation manual for the PC that is used.
处理器型号: PLC(plc5, plc, slc, slc500),LGX_PCCC(lgxpccc, logixpccc, lgxplc5, logixplc5, lgx-pccc, logix-pccc, lgx-plc5, logix-plc5),MLGX800(micrologix800, mlgx800, micro800),MLGX(mricrologix, mlgx),LGX(compactlogix, clgx, lgx, controllogix, contrologix, flexlogix, flgx)。
Path:当CPU类型为PLC时,有path时表明是使用了 DTH+桥的数据点;当CPU类型为LGX时,path是必备的属性。
elem_type:指定element type,代替element size。 支持LGX, MLGX800(??)
lint/ulint (64-bit integer),dint/udint(32-bit integer),int/int(16-bit integer),sint/usint(8-bit interger),bool(bit boolean),bool array ( bit array),real(32-bit float),lreal(64-bit float),string(string ,elem_size 88, type AB_TYPE_STRING),short string(short string ,elem_size 256??, type AB_TYPE_SHORT_STRING)
elem_size:指定element 的大小, 字节数量。
name:数据点名称,在PLC, LGX_PCCC, MLGX上前两个字符决定了数据类型。 (如下表,暂时不可用)
|
第一字符 |
第二个字符 |
elem_size |
elem_type |
说明 |
|
[Bb] |
* |
1 |
AB_TYPE_BOOL |
boolean数值 |
|
[Cc] |
* |
6 |
AB_TYPE_COUNTER |
计数器 |
|
[Ff] |
* |
4 |
AB_TYPE_FLOAT32 |
32位浮点数 |
|
[Nn] |
* |
2 |
AB_TYPE_INT16 |
16位整数 |
|
[Rr] |
* |
6 |
AB_TYPE_CONTROL |
控制点 |
|
[Ss] |
[Tt] |
84 |
AB_TYPE_STRING |
字符串 |
|
[Ss] |
[^Tt] |
2 |
AB_TYPE_INT16 |
状态数值 |
|
[Tt] |
* |
6 |
AB_TYPE_TIMER |
计时器 |
elem_count:数组长度。
<pa proto="ab_eip" cpu="ControlLogix" path="1,4" cyclebase="1000" ip="10.10.10.160" port="">
<item id="1" cycle="5" name="test1" funcode="read" valtype="uint" elem_size="4" elem_name="Test" startaddr="0" count="10"/>
Fanuc的通信使用的是其提供的官方focas协议,当配置HSSB为1时将使用focas的HSSB通信模式。
<pa proto="focas" timeout="500" ip="127.0.0.1" port="502"></pa>
点位读写的配置参数中数据类型默认为integer,
|
参数名 |
说明 |
|
funcode |
rdparam(读参数),rdmacro(读宏参数),rdpmcrng(读保持寄存器),rdalarm(读报警), |
|
numbercode |
数据代码,可以是直接的代码,比如6712读取生产总量,6751读取运行总时长,6753读取切削总时长,这些参数可以从设备文档或操作人机界面配置处获取。 |
|
Valtype |
数据类型,默认为integer |
<item id="1" cycle="10" name="rundurtm" funcode="rdparam" numbercode="6751"/>
<item id="2" cycle="5" name="cutdurtm" funcode="rdparam" numbercode="6753"/>
<item id="3" cycle="5" name="totalproductm" funcode="rdmacro" numbercode="3901"/>
<item id="4" cycle="5" name="maxis" funcode="rdpmcrng" numbercode="7711" remark="30,31"/>
<item id="5" cycle="5" name="totalproduct" funcode="rdparam" numbercode="totalproduct"/>
TOYO C07058P,网络通信规格: 连接器形状(RJ-45)、接口(100BASE-TX/10BASE-T 自动识别)、IP 地址(固定 IP 地址 例:192.168.1.201)、端口号码(8200)。
【注】 现状 固定 IP 地址在/etc/hosts 文件中设定。 (例) 192.168.1.201 tstation; 且端口号码在/etc/services 文件中设定。 (例) 8200 tstation;将来预定通过画面设定。PLCS-12 以太网通信规格上的限制:1.Part6 互换的监视数据(最多 64 项目)未对应 →输出监视数据项目数最多为 96 项; 2.控制台要求画面时,成型机侧自动转移画面 →为了提供屏幕硬拷贝及 png 数据转换。
<pa proto="plcs12" devaddr="1" ip="192.168.1.238" port="8200">
系统会自动接收TOYO主动发送的系统消息以及通过发生指令回传的消息(消息内容为逗号分隔的组合数据,系统会自动将其分拆成对应项存储于时序数据库中供后续处理)。
点位读写的配置参数中指令由funcode、cmd组合,funcode可以为0()、1();cmd可以是45(成型运转状态),47(回传生产管理数据),35(回传成型条件),37(生产管理的设定数据通过成型机发送),详见C07058P PLCS-12监视软件_以太网通信规格书.pdf
<item id="1" name="runstatus" valtype="string" cycle="30" funcode="0" cmd="45"/>
<item id="2" name="formcd" valtype="string" cycle="3600" funcode="0" cmd="35"/>
<item id="3" name="prodmg" valtype="string" cycle="3600" funcode="0" cmd="37"/>
<item id="4" name="prodset" valtype="string" cycle="3600" funcode="0" cmd="47"/>
DLT645为多功能电能表通信协议,分为1997、2007两个版本,本系统提供了两个版本的兼容,可通过串口通讯或网口透传通讯。PA配置串口或IP地址/端口及设备地址devaddr即可;item项亦可配置设备地址devaddr,此项数据采集与处理时将使用该项配置的设备地址devaddr。
地址域由 6 个字节构成,每字节 2 位 BCD 码,地址长度可达 12 位十进制数。每块表具有唯一的 通信地址,且与物理层信道无关。当使用的地址码长度不足 6 字节时,高位用“0”补足。 通信地址 999999999999H 为广播地址,只针对特殊命令有效,如广播校时和广播冻结等。广播命令 不要求从站应答。 地址域支持缩位寻址,即从若干低位起,剩余高位补 AAH 作为通配符进行读表操作,从站应答帧的地址域返回实际通信地址。 地址域传输时低字节在前,高字节在后。
<pa devaddr="000000000001" serialport="COM2" proto="dlt645" cyclebase="1000"></pa>
<pa devaddr="000000000CB1" serialport="COM2" proto="dlt645" cyclebase="1000"></pa>
|
Rulertype |
说明 |
|
|
powerct |
总有功功率 |
|
|
volta |
A相电压 |
|
|
voltb |
B相电压 |
|
|
voltc |
C相电压 |
|
点位读写的配置参数通过funcode、rulertype进行识别与区分,rd97、wr97分别是1997版本协议电表数据的读写,rd07、wr07分别是2007协议版本电表的读写:
<item id="1" cycle="5" name="rd07volta" funcode="rd07" rulertype="volta" valtype="float"/>
<item id="2" cycle="5" name="rd07voltb" funcode="rd07" rulertype="voltb" valtype="float"/>
<item id="3" cycle="5" name="rd07voltc" funcode="rd07" rulertype="voltc" valtype="float"/>
<item id="4" cycle="5" name="rd07power" funcode="rd07" rulertype="powerct" valtype="float" remark=""/>
<item id="5" cycle="5" name="rd97volta" funcode="rd97" rulertype="volta" valtype="float"/>
<item id="6" cycle="5" name="rd97voltb" funcode="rd97" rulertype="voltb" valtype="float"/>
<item id="7" cycle="5" name="rd97voltb" funcode="rd97" rulertype="voltc" valtype="float"/>
<item id="8" cycle="5" name="rd97power" funcode="rd97" rulertype="powerct" valtype="float"/>
item项亦可配置设备地址devaddr,此项数据采集与处理时将使用该项配置的设备地址devaddr。
工业协议与MQTT互通,其topic为{clientid}/{device_id}/{item_name}/{param}/{extparam},支持MQTT的方法如Subscribe/Publish。例如:下列topic示例均有效:
“devices/desoutter01/psetdo”
“devices/desoutter01/sys/7408”
“devices/desoutter01/sys/1”
“devices/desoutter01/sys/14”
“devices/desoutter01/sys/60”
“devices/desoutter01/sys/7402”
“devices/desoutter01/sys/7408”
“devices/desoutter01/sys/15”
“devices/desoutter01/sys/61”
“devices/desoutter01/sys/7410/detail”
“devices/desoutter01/_pa_//csvpath”
“devices/posco01/rs”
“devices/posco01/sys/conn”
……
<mqtt function="subscribe" next="controller_psetsub" expr="devices/%{station_code}/sys/14"/>
<mqtt function="publish" topic="devices/%{station_code}/poscostart" delay="2000" expr="1" />
当publish某topic的值为“_pa_”时请求该项立即读取(采集)该topic对应项的数据,下面的语句就是请求立即读取/采集itemtrans的m0s数据:
<mqtt function="publish" topic="devices/ itemtrans /m0s" delay="2000" expr="_pa_" />
关于更改PA配置,可以使用publish,topic结构中的{item_name}使用“_pa_”代替,完整结构为{clientid}/{device_id}/_pa_/{proto}/{参变量},即第三个参数为“_pa_”,指明更新的参数为PA的配置参数,{proto}为需要配置PA对应的协议,为空时表示该device的首个PA,当设备配有多个PA协议时更改非第一个PA时应指明协议,例如“devices/desoutter01/_pa_/openprotocol/csvpath”,“devices/posco01/_pa_/modbus/ip”等。
xPlus(XOne)客户端启动/停止MQTT使用下面的语句
<mqtt function="start"/>
<mqtt function="stop"/>
配置相关控件接收MQTT状态:
<mqtt function="config" name="status" expr="mqtt_status"/>如果expr(控件名)缺失则自动设置当前控件作为接收MQTT状态的控件,当未设置状态接收控件时系统自动将其发送给主程序处理,此时(目前)XOne会显示该状态。
配置客户端的MQTT参数语句如下:
<mqtt function="config" name="host" expr="192.168.0.1"/>
<mqtt function="config" name="port" expr="1883"/>
3UCS NoSQL(XDB)是基于google的LevelDB二次开发的时序数据库,并提供SQL语法支持,在i3uBI.ini的main节配置了iotdb=..\xdb\iot.conf,系统会自动将本系统相关获取到的数据存储于该数据库中。
ID为记录插入的时间ms(毫秒)值,score为ID的分钟值即Value(ID)/6000。
iot数据库拥有key“topic”,immsg数据库拥有key“recvfrom”“sendto”
查询语句类似于MySQL语句,默认倒序查询,select [columns] from [table] where [where] order by order limit [limitstr] key [keystart] score [score]
limit的offset可略去即limit 0,100;limit 100;limit ,100都合法,都是取前100条记录
score可以指定score_start,score_end;例如score 0,100000;score 10000;score ,1000000均合法,另外可以使用时间值来设置score,例如score 1 hour ago 表示查询一小时前的;score ,1 hour ago表示查询现在至一小时前的记录;score 2021-05-01表示查询2021-05-01之前的记录
示例:
select * from iot;
select * from iot where topic='xxx';
select * from iot limit 0,100 score ,4 week ago
select %{dev_data[columns]} from iot where topic='%{dev_data[dev_type]}/%{dev_data[dev_id]}/%{dev_data[data_id]}/%{dev_data[data_param]}' limit 0,100 score ,4 week ago
select * from iot limit 100 score now();
select * from iot where topic='%{mqtt_topic}' limit 0,100 score now(),2021-05-05 20:10
select * from iot where topic='devices/desoutter01/sys/61/detail' and key='%{YU5A4A554012100410003818643410}'
系统提供了类似于决策表引擎的mqttrule.xml(PADsys目录中,该表使用xLogicDesigner工具设计),系统在将数据存储于XDB的同时会调用该引擎做数据预处理并将处理后的数据保存至预设的关系型数据库中。
CronTriggers往往比基于cycle周期的SimpleTrigger更有用,比如您需要基于日历的概念,而非SimpleTrigger完全指定的时间间隔,复发的触发工作的时间表。使用CronTrigger,你可以指定触发的时间表如“每星期五中午”、或“每个工作日9:30时”、甚至“每5分钟一班”、逢星期一星期三星期五上午9:00和10:00扽等。
Cron Expressions(cron的表达式)被用来配置CronTrigger实例。 cron的表达式是字符串,实际上是由七子表达式,描述个别细节的时间表。这些子表达式是用空格分开的,各子表达式分别代表:Seconds, Minutes, Hours, Day-of-Month, Month, Day-of-Week, Year (可选字段)。例 "0 0 12 ? * WED" 在每星期三下午12:00 执行。
个别子表达式可以包含范围, 例如,在前面的例子里("WED")可以替换成 "MON-FRI", "MON, WED, FRI"甚至"MON-WED,SAT".“*” 代表整个时间段。
每一个字段都有一套可以指定有效值,如
Seconds (秒) :可以用数字0-59 表示,
Minutes(分) :可以用数字0-59 表示,
Hours(时) :可以用数字0-23表示,
Day-of-Month(天) :可以用数字1-31 中的任一一个值,但要注意一些特别的月份
Month(月) :可以用0-11 或用字符串 “JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV and DEC” 表示
Day-of-Week(每周):可以用数字1-7表示(1 = 星期日)或用字符口串“SUN, MON, TUE, WED, THU, FRI and SAT”表示
“/”:为特别单位,表示为“每”如“0/15”表示每隔15分钟执行一次,“0”表示为从“0”分开始, “3/20”表示表示每隔20分钟执行一次,“3”表示从第3分钟开始执行
“?”:表示每月的某一天,或第周的某一天
“L”:用于每月,或每周,表示为每月的最后一天,或每个月的最后星期几如“6L”表示“每月的最后一个星期五”
“W”:表示为最近工作日,如“15W”放在每月(day-of-month)字段上表示为“到本月15日最近的工作日”
“#”:是用来指定“的”每月第n个工作日,例 在每周(day-of-week)这个字段中内容为"6#3" or "FRI#3" 则表示“每月第三个星期五”
1)Cron表达式的格式:秒 分 时 日 月 周 年(可选)。
|
字段名 |
允许的值 |
允许的特殊字符 |
|
秒 |
0-59 |
, - * / |
|
分 |
0-59 |
, - * / |
|
小时 |
0-23 |
, - * / |
|
日 |
1-31 |
, - * ? / L W C |
|
月 |
1-12 or JAN-DEC |
, - * / |
|
周几 |
1-7 or SUN-SAT |
, - * ? / L C # |
|
年 (可选字段) |
empty, 1970-2099 |
, - * / |
“?”字符:表示不确定的值
“,”字符:指定数个值
“-”字符:指定一个值的范围
“/”字符:指定一个值的增加幅度。n/m表示从n开始,每次增加m
“L”字符:用在日表示一个月中的最后一天,用在周表示该月最后一个星期X
“W”字符:指定离给定日期最近的工作日(周一到周五)
“#”字符:表示该月第几个周X。6#3表示该月第3个周五
2)Cron表达式范例:
每隔5秒执行一次:*/5 * * * * ?
每隔1分钟执行一次:0 */1 * * * ?
每天23点执行一次:0 0 23 * * ?
每天凌晨1点执行一次:0 0 1 * * ?
每月1号凌晨1点执行一次:0 0 1 1 * ?
每月最后一天23点执行一次:0 0 23 L * ?
每周星期天凌晨1点实行一次:0 0 1 ? * L
在26分、29分、33分执行一次:0 26,29,33 * * * ?
每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?