紫外工控论坛

 找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 2258|回复: 1

[分享] Logix5550 指令集

[复制链接]
hunter_love 发表于 2012-5-4 22:09:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

一、运算顺序:级别从高到低,同级别从左到右
1、        ACS反余弦、ASN反正弦、ATN反正切、、COS余弦、DEG弧度转换成角度、FRD(BCD码转换成整数)、LN自然对数、LOG以10为底的对数、RAD角度转换成弧度、SIN正弦、SQR平方根、TAN正切、TOD整数转换成BCD
2、        **指数
3、        -(取反)、NOT位补码
4、        *乘、/除
5、        〈 小于、〈=小于或等于、 〉大于、 〉=大于或等于 、=等于
6、        -(减)、+加
7、        AND按位与
8、        XOR按位异或
9、        OR按位或

位指令        用于监视和控制位状态
XIC        检查是否闭合指令:当第一位被置位时使能输出    ︳ ︴
XIO        检查是否断一开指令:当第一位被清零时使能输出   ︳/ ︴
OTE        输出激励指令:为真时置位或为假时清零数据位 ()
OTL        输出锁存指令::使数据位置位(保持),直到被一条OUT指令清零(L)
OTU        输出解锁指令::清零数据位(U)
ONS        一次启动指令:梯级条件是置位状态且存储位为清零状态时,ONS置位存储位,直到梯级条件变为清零状态。,在该指令前一般有一条输入指令 [ONS]。
OSR        上升沿一次启动指令:每次梯级条件从清零变为置位时,OB置位一个扫描周期。梯级条件从清零变为
置位时,存储位SB置位直到梯级条件变为清零状态
OSF        下升沿一次启动指令:每次梯级条件从置位变为清零时,OB置位一个扫描周期。梯级条件从清零变为
置位时,存储位SB置位直到梯级条件变为清零状态
计时器和计数器指令:计时器的时间基都是1毫秒
TON        延时导通计时器:非保持计时器指令:PRE为延时预置值,ACC为累加值,EN为使能位,TT为计时位,
DN完成位
TOF        延时断开计时器:非保持计时器指令:PRE为延时预置值,ACC为累加值,EN为使能位,TT为计时位,
DN完成位
RTO        保持导通计时器:保持计时器指令:PRE为延时预置值,ACC为累加值,EN为使能位,TT为计时位,DN
完成位,当使能时,开始计时,中断时ACC不请零,下次使能时,在原有的ACC基础上加,直到PRE。此
后DN一直保持直到该计时器被复位为止
CTU        加计数:PRE为延时预置值,ACC为累加值,CN为使能位,DN完成位,OV溢出位。当使能N次后,DN置
1,        继续使能DN一直保持置位直到该计数器被复位为止。当计数超过上限值时,OV置1,然后从下限值
2,        重新计数
CTD        减计数:PRE为延时预置值,ACC为累加值,CD为减计数使能位,UN为下溢出位,DN完成位。当使能N次
后,DN置1,继续使能DN一直保持置位直到该计数器被复位为止。当计数超过下限值时,UN置1,然后
从上限值重新计数。
RES        复位:用于复位TIMER、COUNTER、CONTROL结构。用于清ACC,TT,DN,不要用其清TOF计时器。
输入输出指令
MSG        与另一模块进行数据交换
GSV        获取控制器状态信息
SSV        设置控制器状态信息
比较指令
CMP        根据表达式进行数值比较:执行表达式中指定的算术运算比较
EQU        测试二值是否相等:测试源A的值与源B的值是否相等
GEQ        测试一个值是否大于或等于另一个值:测试源A的值是否大于或等于源B的值
GRT        测试一个值是否大于另一个值:测试源A的值是否大于源B的值
LEQ        测试一个值是否小于或等于另一个值:测试源A的值是否小于或等于源B的值
LES        测试一个值是否小于另一个值:测试源A的值是否小于源B的值
LIM        测试一个值是否在另两个值范围之内:比较测试值是否在下限和上限值范围内
MEQ        通过屏蔽测试二值是否相等:比较通过屏蔽的源值和比较值的结果。输入立即数作为屏蔽值,屏蔽位
中的一个1意味数据可以通过,在屏蔽位中的一个0意味数据被阻止。通过屏蔽的源数据(SOURCE)与
通过屏蔽的比较数据(COMPARE)相等,则梯级输出条件被置1
NEQ        测试一个值是否不等于另一个值:测试源A的值与源B的值是否相等。
计算/算术指令
CPT        计算表达式:执行表达式中定义的算术运算,EXP为表达式,DEST为结果。
ADD        两个值相加:使源A操作数与源B操作数相加,结果存于目的单元内
SUB        两个值相减:使源A操作数与源B操作数相减,结果存于目的单元内
MUL        两个值相乘:使源A操作数与源B操作数相乘,结果存于目的单元内
DIV        两个值相除:使源A操作数与源B操作数相除,结果存于目的单元内
SQR        计算一个值的平方根:计算源操作数的平方根,计算结果存目的单元内。在源数为负数时,在计算平
方根前先计算其绝对值。
NEG        对一个数值取反:改变源操作数的符号并存结果于目的单元内。
传送/逻辑指令:传送并且改变数据位
MOV        复制数值:复制源操作数到目的单元,源操作数不变
MVM        复制一个整数的指定部分:复制源操作数到目的单元,允许部分数据被屏蔽,源操作数不变。当指令
被使能时,MVM指令通过屏蔽传送或阻止源数据位,屏蔽位的一个1值意味着位数据可以通过,屏蔽位
的一个0值意味着位数据被阻止,输入立即数作为屏蔽值。目的单元的数据在最初为11111111,屏蔽位
某位为0时,对应目的单元保持原值1
BTD        在整数内或整数之间传送数据位:复制源操作数的指定位,并传送这些位到适当的位置,并把这些位
写到目的单元内。目的单元内的其余部分保持不变。当指令被使能时,复制来自源操作数的位到目的
单元内,该位组由源位(位组的低位位号)和长度(要复制的位的数量)确定,目的位确定目的单元
内开始的低位号,源操作数保持不变。如果位字段扩展的长度超过目的单元的边界,则指令不存在超
出的位。SOU B源位;;DEST B目的位;LENGTH长度
CLR        清零一个数值:清零目的单元的所有位,清零后目的单元为999999
AND        按位逻辑与运算:执行源A与源B操作数的按位与运算,结果存目的单元内,若使用混合整型数据类
型,用0值填充小整数数据的高位。
OR        按位逻辑或运算:执行源A与源B操作数的按位或运算,结果存目的单元内
XOR        按位逻辑异或运算:执行源A与源B操作数的按位异或运算,结果存目的单元内
NOT        按位逻辑非运算:执行源A与源B操作数的按位非运算,结果存目的单元内
数组(文件)/综合指令:对数据的数组进行操作
FAL        对数组内的数进行算术、逻辑、移位、函数运算:执行存储在数组内数据的算术、逻辑、移位、和函数运算。用位置值(POS)提供整个数组的顺序级数。
EN:使能位,表FAL被使能
DN:当指令处理完最后一个元素时(POS=LIN)完成位被置位
ER:在计算表达式时发生溢出(SV被置位)则错误位被置位
LEN:指定FAL指令操作的数组内元素的数量
POS:位置值包含指令正访问的当前元素的位置。CONTROL:运算的控制结构体
LENGTH:要处理的数组元素的数量
POSITION:数组内当前元素的位置,(一般为0)
MODE:对数组内元素的操作模式,选择增量(INC)、整体(ALL)、或输入一个数值
DEST:目的单元
EXPRESSION:表达式
FSC        搜索并比较数组内数值:一个元素一个元素的比较数组内的值,对于逻辑运算,用户必须在表达式内
说明。若FSC指令被使能,且比较结果为真,则指令置发现位(FD)及其位置位(POS),表明指令发
现的比较为真的数组位置。
COP        复制一个数组的内容到另一个数组:复制源操作数的数值到目的单元,源操作数不变。字节数量=长度
*(目的单元数据类型的字节数),COP指令为不写出数组的未尾。对存储器内的相邻的数据进行操
作,且执行存储器内字节到字节的直接复制。
FLL        用指定的数据填充数组:用源值填充一个数组内的元素。源保持不变。填充字节的数量是:字节数=长
度*(目的单元数据类型的字节数),对存储器内的相邻的数据进行操作
AVE        计算数值内的一组数值的平均值:
SRT        按上升顺序排序数组内的一维数据:以上升的顺序对数值内的一维数组进行排序。
STD        计算数值内的一组数值的标准偏差:计算数组中一维数组内一组值的标准偏差,存储结果于目的单元
数组(文件)/移位指令:用数组(文件)/移位指令修改数组内数据的位置
BSL/R        每次完成对位数组中一位的装载、移动或卸载操作:使数组内的指定位向左(右)移动一个位置,当
指令被使能时,把指定位的最高位卸载到卸载位UL),其余的位向左(右)移动一个位置,并且装截
位地址于数组的位0内。对连续存储单元单元进行操作。
FFL/U        按相同的顺序装截或卸载数据:FFL指令复制源值到FIFO内,用FFL和FFU指令存储数据,并且可按先进
/先出的顺序取回数据。当使用该指令对时,FFL和FFU指令建立了一个异步移位寄存器。当指令被使能
时,FFL指令把源值装入由位置值(POS)确定的FIFO内的位置,每次指令被使能装载一个数值,直到
FIFO满为止。源操作数和FIFO用相同的数据类型。FFL指令对连续存储单元进行操作。FFU指令卸载
FIFO的位置0(第一位置)的数值并存放该值于目的单元。FIFO内的其余数据向下移动一个位置。FFU
指令一起按选进/先出的顺序存储和返回数据。当指令被使能时,FFU指令从FIFO的第一个元素卸载数
据并存放该值于目的单元,指令每次被使能时卸载一个数值,直到FIFO栈空为止。如果FIFO为空,则
FFU指令向目的单元返回0值。
LFL/U        按相反的顺序装截或卸载数据:LFL指令复制源值到LIFO内,用LFL和LFU指令存储数据,并且可按后进
/先出的顺序取回数据。当使用该指令对时,LFL和LFU指令建立了一个异步移位寄存器。当指令被使能
时,LFL指令把源值装入由位置值(POS)确定的LIFO内的位置内,每次指令被使能装载一个数值,直
到LIFO栈满为止。源操作数和LIFO用相同的数据类型。LFL指令对连续存储单元进行操作。LFU指令卸
载LIFO的位置值(POS)内的0值于该位置,LFU和LFL指令一起按后进/先出的顺序存储和返回数据。
LIFO必须和目的单元数据类型一致。当指令被使能时,LFO指令从LIFO的位置值(POS)内的数值并存
该值于目的单元,指令每次被使能时都卸载一个数值并用0值替换该值,直到LIFO栈空为止。如果LIFO
为空,则LFU指令返回0值到目的单元。
顺序器指令:监控一致性且重复性操作
SQI        顺序器输入指令:检测SQO/SQI顺序器指令对何时完成一步。当指令被使能时,SQI指令通过屏蔽使源
元素与一个数组元素作相等的比较SQI指令对连续存储器单元进行操作。输入立即数作为屏蔽值。
SQO        顺序器输出指令:SQO指令设置SQO/SQI顺序器指令对下一步输出条件。当指令被使能时,SQO指令增加
位置值,通过屏蔽传送该位置内的数据,并把结果存入目的单元,若位置值(POS)〈长度值
(LEN),则指令返回到顺序器数组的开始处,并从位置值(POS)处继续执行。SQO指令对连续存储器
单元进行操作。输入立即数作为屏蔽值。
SQL        顺序器半装载指令:把参考条件装入顺序器数组内,当指令使能时,SQL指令增加位置值到顺序器数组
的下一个位置,并装载源数值到该位置。若完成位被置位或位置值(POS)〈长度值(LEN),则指令
设置位置值(POS)=1
程序控制指令:用程序控制指令改变程序的流程
JMP/ LBL        跳转到标号指令(JMP):当指令被使能时,JMP跳到其引用的LBL指令,控制器从该处继续继续执行:
当指令被禁止时,JMP不影响梯形图程序的执行。JMP可向前或向后跳转执行梯形图程序,向前跳转到
标号可通过略过部分梯形图逻辑直到需要的程序,从机时节省程序扫描时间。向后跳使控制器重复执
行梯形图逻辑。向后跳次数不要太多,否则看门狗定时器可能超时,因控制器不能到达程序的未尾,
而导致控制器故障。
LBL是具有同一标号名称的JMP指令的跳转目标,要确保LBL是其所在梯级的第一条指令。在一个程序
内标号名称必须是唯一的,标号名称可是:最多有40个字符,可包含字母、数字、和下划线。
JSR        跳转到子程序指令JSR:JSR、SBR和RET指令使逻辑执行转到程序中的独立的子程序,对子程序进行一
次扫描,然后返回到程序的转移点。
当指令被使能时,若有输入参数,JSR传递它的输入参数,并使执行转到子程序的第一梯级。SBR指令
接收输入参数并复制这些到指定的标签。JSR输入参数的数量和类型需与SBR指令相匹配。JSR输入参数
的数量比相应的SBR指令输入参数少,控制器出现主要错误,JSR输入参数的数量多没关系。
用户可使用SBR指令而不输入参数,表明其驻留的程序是子程序,不能把SBR放入主程序内。要返回参
数到JSR指令,必须使用RET指令结束子程序,一个子程序可有多条RET指令。子程序指令SBR、返回指
令RET。
JSR、SBR和RET指令通过数值把参数传入或传出子程序。需使用额外的执行时间和存储器来复制数值。
TND        暂停指令:当指令被使能,TND指令担当程序的未尾,若控制器扫描到一条TND指令,则控制器转移到
当前程序的结束处。若TND在一个子程序内,则控制返回到调用它的程序。若TND在一个主程序内,则
控制返回到当前程序的下一个程序。可在调试或故障诊断时使用TND指令使程序执行到一确定点。然后
在程序内进一步移动TND指令到需调试程序的新部分。
MCR        主控复位指令:成对使用,当MCR区域被使能时,在MCR区域内的梯级的为真或为假条件被正常扫描。
必须成对使用,不能在MCR区域内嵌套另一个MCR区域,不要跳转到MCR区域,
若MCR区域持续到程序的未尾,则不必在区域的结束处编制一条MCR指令。
UID        禁止用户中断指令:被使能时则继续执行当前任务,需不能被高优先级的任务中断,除非执行UIE指令
或到程序的未尾,UID指令不能能禁止一个故障子程序或故障任务。当指令被使能时,UID指令增加内
部计数器的数值,只要计数器的值不为零,当前执行的任务就不会被中断。
UIE        用户中断使能指令:被使能且内部计数器的值大于零,则计数器的值减少,当计数器的值等于零时,
当前执行的任务可再次被中断,此时执行任何先前被禁止中断的高优先级任务。
AFI        恒假指令:设置它的梯级输出条件为假
NOP        空操作指令:NOP的功能相当于占符位,编程时可放置NOP于梯级的任何地方,
当指令被使能时NOP执行空操作,当指令被禁止时,NOP指令也执行空操作。
循环/禁止循环指令:用FOR重复调用子程序,用BPK指令中断一个子程序的执行。
FOR        重复执行子程序:当指令被使能时,FOR重复执行子程序,直到索引值超过终止值。该指令不向子程序传
递参数。每次FOR执行子程序时,它都把每步大小加到索引值。不要在单次扫描循环太多次,重复次数太
多可引起控制器的看门狗超时,这会导致主要故障。
BRK        终止循环指令:中断被FOR指令调用的子程序的执行。当指令被使能时,BRK指令离开当前子程序并使控
制器返回到FOR指令的下一条指令。若存在嵌套的FOR指令,则BRK指令使控制返回到FOR指令的最内层。
RET        返回指令:返回到调用的FOR指令,FOR不使用操作数,FOR忽略用户输入到RET指令的任何参数。当使能
时,RET返回到FOR指令,FOR指令以每步大小为单位增加索引值,并再次执行子程序,若索引值超过终止
值,则FOR指令完成,而且程序执行转移到FOR指令的下一条指令。用户可用TND指令结束子程序的执行。
专用指令:执行特殊应用操作
FBC        文件位比较:当指令使能时,比较源数组内的位与参考数组内的位,并且记录每个不匹配的位号于结果
数组内。与DDT区别:每次DDT发现一个不匹配位,该指令改变参考位的值使之与原数组内的位匹配,而
FBC不改变参考位的值。
DDT        诊断检测:当指令使能时,比较源数组内的位与参考数组内的位,并且记录每个不匹配的位号于结果数
组内,而且改变参考数组内位的值,使其与相应的源数组内的位的数值相配。
DTR        数据传送指令:通过屏蔽传递源值并使其结果与参考值比较,同时也用屏蔽的源值覆盖参考值,用于下
一次比较,源值保持不变。
屏蔽操作数内的一个1意味着通过位数据,一个0意味着位数据被阻止。当通过屏蔽后的源值与参考值不
一致时,梯级输出条件为真一个扫描周期,若屏蔽的源值与参考值相同,则梯级输出条件为假。输入立
即数为作为屏蔽值。
PID        比例、积分、微分指令:接收来自模拟量输入模块的过程变量(PV),并通过模拟量输出模块调节控制
变量输出(CV),使能位(EN)表指令在执行状态PID通过防止CV输出达到其由MAXO和MINO设定的最大或
最小值时,积分项继续累加来自动避免积分饱和。累加的积分项保持不变,直到CV输出降到其最大上限
值以下,或升到其最小下限值以上,然后正常的积分累加值自动从新开始。
PID自动提供由软件手动模式到自动模式,或手动模式到自动模式的无冲击转换。要禁止微分平滑作用,可在配置制表栏中选择“禁止微分平滑(no derivative smoothing)”选项或在PID结构体中置位NDF位。
三角函数指令:用三角函数来进行算术运算
SIN        正弦指令:计算源操作数的正弦值(以弧度表示),存结果于目的单元内。源值必须大于或等于
-205887.4且小于205887.4,目的单元内的结果数值总大于或等于-1且小于或等于1
COS        余弦指令:计算源操作数的余弦值(以弧度表示),存结果于目的单元内,同上
TAN        正切指令:计算源操作数的正切值(以弧度表示),存结果于目的单元内。 源值必须大于或等于-102943.7且小于102943.7
ASN        反正弦指令:计算源操作数的反正弦值,存结果于目的单元内(以弧度表示)。源值必须大于或等于-1且小于或等于1,目的单元内的结果数值总大于或等于-2π且小于或等于2π。
ACS        反余弦指令:计算源操作数的反余弦值,存结果于目的单元内(以弧度表示)。源值必须大于或等于-1且小于或等于1,目的单元内的结果数值总大于或等于0且小于或等于π。
ATN        反正切指令:计算源操作数的反正切值,存结果于目的单元内(以弧度表示),源值必须大于或等于-1且小于或等于1,目的单元内的结果数值总大于或等于-π/2且小于或等于π/2。
高级算术指令:
LN        自然对数指令:计算源操作数的自然对数并存结果于目的单元内。源数值必须大于零,否则S:V被置
位。目的单元结果值大于或等于-87.33655且小于或等于88.72284.
LOG        以10为底的对数指令: 计算源操作数的以10为底的对数并存结果于目的单元内。源数值必须大于零,否
则S:V被置位。目的单元结果值大于或等于-37.92978且小于或等于38.53184.
XPY        X的Y次幂指令:计算源A(X)的源B(Y)次幂并存结果于目的单元。若源A是负数,则源B必须是一个整数值,否
则将发生次要错误.
数学转换指令:
DEG        转换弧度为角度:转换源值(以弧度表示)为角度并存结果于目的单元内。
RAD        转换角度为弧度:转换源值(以角度表示)为弧度并存结果于目的单元内。
TOD        转换整数值为BCD码:转换一个十进制的值(0≤源操作数≤99999999)为BCD码并存结果于目的单元内。
若输入源操作数为一个负数,则发生次要错误并清零目的单元。
FRD        转换BCD码为整数值:转换一个BCD码值为十进制值并存结果于目的单元内。
二、通用属性:因为算数状态标志变化非常迅速,在编程软件内的关键字不能动画显示实际的状态(不会显示不同的颜色)
下表显示整形数据类型存储S:N和S:C状态标志的位置
1、如果数据类型为SINT,最大值=+127,最小值=-128
S:C        7
S:N        6        5        4        3        2        1        0
2、        如果数据类型为INT,最大值=+32767,最小值=-32768
S:C        15
S:N        14        13        12        11        10        9        8        7        6        5        4        3        2        1        0
3、        如果数据类型为DINT,最大值=+2,147,483,647;最小值=-2,147,483,648。
S:C        31
S:N        30        28        27        26        25        24        …………        7        6        5        4        3        2        1
三、数据类型
数据类型        说明        范围
BOOL        1-位布尔值        0=清零、1=置位
SINT        1-字节整型数        -128~127
INT        2-字节整型数        -32,768~32,767
DINT        4-字节整型数        -2,147,483,648~2,147,483,647
REAL        4-字节浮点数        -3.402823E38~-1.1754944E-38(负值)以及0以及1.1754944E-38~3.402823E38(正值)
控制器将所有的立即数处理为DINT数据类型
四、预定义的结构体有
1、        AXIS:传动轴控制结构体,该结构体不支持数组,不能嵌入用户自定义结构体,并且不能通过JSR指令传送至其他程序。
2、        CONTROL:数组(文件)指令控制结构体。
3、        COUNTER:计时器指令控制结构体
4、        MESSAGE:MSG指令控制结构体,该结构体不支持数组,不能嵌入用户自定义结构体,并且不能通过JSR指令传送至其他程序。
5、        MOTION_GROUP:传动组控制结构体,该结构体不支持数组,不能嵌入用户自定义结构体,并且不能通过JSR指令传送至其他程序。
6、        MOTION_INSTRUCTION:运动指令控制结构体。
7、        PID:PID指令控制结构体。
8、        TIMER:计时器指令控制结构体。
五、数据类型转换:若在指令内使用混合数据类型的操作数,按以下转换。
1、        大整型数转换为小整型数:控制器截去大整型数的高位部分并产生溢出。
2、        SINT或INT转换为REAL:不丢失数据精度。
3、        DINT转换为REAL:数据精度丢失,这两种数据类型存储数据都是32位,但REAL数据类型的32位中还包含指数值。若丢失精度。控制器从DINT的最低有效位获取它。
4、        REAL转换为整型数:控制器对小数部分进行舍入并截取非小数部分的高位。若丢失数据,控制器置位溢出状态标志位。
舍入是指趋近于最近的偶数:小于.5  下舍入
等于.5  舍去小数,等于最接近的偶数.
大于.5  上舍入
如1.6(2)、 -1.6(-2), 1.5(2)、-1.5(-2), 1.4(1) 、-1.4(-1), 2.5(2) 、-2.5(-2)
不能对BOOL数据类型进行转换或将数据转换为BOOL数据类型。
六、其它关键字
1、S:FS(读):若这是在当前程序内进行的第一次正常程序扫描,则首次扫描标志位置位。
2、S:MINOR(读、写):若产生了至少一个最小故障时,最小故障标志位置位。只在由于程序运行而发生最小故障时,控制器才置位该位。对于其他不是由于程序运行南昌导致的最小故障,如电池短缺,控制器不会置位该位。
3、THIS(NA):THIS语句只在GSV和SSV指令访问TASK、PROGRAM或POUTINE时有效。使用THIS指定当前的TASK、PROGRAM或POUTINE。
4、关键字不分大小写。由于上述状态位不能快速改变,所以它们不能在编程软件内动态显示实际的状态。用户不能对关键字定义标签别名。
数组:把一组数据(具有相同数据类型)用同一名称组合在一起通过下标来标识单个元素。数组中的每个元素可是基本数据类型或结构体。下标规定了数组的维数,维数从零开始。数组最多三维。数组内元素总数为每维大小的乘积。Array3[2,3,4].5表引用Array3[2,3,4]内的第5位。
冰糖 发表于 2012-5-5 09:49:24 | 显示全部楼层
学习了,感谢分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


--------------------------------------------------------------------------------------------------------------------
本站是工控技术交流站点,论坛内容均为网络收集或会员所发表,并不代表本站立场,会员拥有该内容的所有权力及责任!
本站内容如有侵犯您的版权,请按下面方式联系本站管理员,我们将及时删除处理
管理员:冰糖 QQ:5483695(请直击主题), Mail:admin#ziwai.net(#改成@) 其它非本人.
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论!

QQ|Archiver|手机版|小黑屋|紫外工控论坛. ( 苏ICP备11032118号-1 )

GMT+8, 2024-5-2 14:07 , Processed in 0.500003 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表