课程中心
HOME
课程中心
正文内容
plc编程代码手册 PLC编程通用规范,附实用技巧!
发布时间 : 2025-02-05
作者 : 小编
访问数量 : 23
扫码分享至微信

PLC编程通用规范,附实用技巧!

【导读】一套完整的PLC程序,并不仅仅是使系统能够运行起来这么简单,它也需要完整的注释、精良的架构、良好的可扩展性、完备的报警保护系统和运行前的系统模拟等。

(一)PLC编程的设计要求

一套完整的PLC程序,并不仅仅是使系统能够运行起来这么简单,它也需要完整的注释、精良的架构、良好的可扩展性、完备的报警保护系统、运行前的模拟系统。

1、简单性

使PLC程序尽可能简单。简单的含义就是尽可能的使用标准化的程序框架,尽可能使用简单的指令。

要想程序简单,从大的方面讲,要优化程序结构,用流程控制指令简化程序,从小的方面讲还要用功能强的指令取代功能单一的指令,以及注意指令的安排顺序等。

2、可读性

要求所设计的程序可读性要好。这不仅便于程序设计者加深对程序的理解,便于调试,而且,还要便于别人读懂你的程序,便于使用者维护。必要时,也可使程序推广。

要使程序可读性好,所设计的程序就要尽可能清晰。要注意层次,实现模块化,以至于用面向对象的方法进行设计。要多用一些标准的设计。

如遇特殊情况下采用语言编程,多数情况下请使用梯形图编程,方便阅读。

再就是I/O分配要有规律性,便于记忆与理解。必要时,还要做一些注释工作。内部器件的使用也要讲规律性,不要随便地拿来就用。

可读性在程序设计开始时就要注意。这不易完全做到。因为在程序调试的过程中,指令的增减,内部器件的使用变化,可能使原较清晰的程序,变的有些乱。所以在设计时就对调试增减留有一定的余地,然后调试完毕后再做一下整理,这样所设计的程序具有更高的质量。

程序的注释,起码应该有以下几个方面:

A、系统注释:整套程序的版权公司和此套程序用途

B、程序块注释:此程序块的主要用途和作者

C、段注释:此段代码的用途

D、变量注释:重要性无需多言,包含I/O注释、中间变量注释

而至于保密性的考虑,我觉得应该在程序的加密算法或者块的加密上考虑,而不应该用减少注释这种小聪明来实现。

3、正确性

PLC的程序一定要正确,并要经过实际工作验证,证明其能够正确工作。这是对PLC程序的最根本的要求,若这一点做不到,其它的再好也没有用。

要使程序正确,一定要准确的使用指令,正确的使用内部器件。准确的使用指令与准确理解指令相联系,为此对指令含义和使用条件一定要弄清楚。必要时,可编些小程序对一些不清楚的指令作些测试。

同一指令,由于PLC的出厂批次不同或是PLC的系列型号的不同,一些指令细节有可能不一样,应仔细查阅编程手册。

内部器件正确使用也是重要的。如有的PLC有掉电保护,有的PLC没有。一定要做到该掉电保护的一定要用掉电保护的器件,反之则不能用。

总之,要准确的使用指令,正确使用内部器件,使所编的程序能正确要作,这是对PLC程序最根本的要求。

举个简单的例子,西门子的上升沿和下降沿需要使用带存储功能的变量作为中间变量,比如M点或者DB点,如果使用FC的temp变量就会出问题的。

4、可靠性

程序不仅要正确,还要可靠。可靠反映着PLC程序的稳定性,这也是对PLC程序的基本要求。

有的PLC程序,在正常的工作条件下或合法操作时能正确工作,而出现非正常工作条件(如临时停电,又很快再通电)或进行非法操作(如一些按钮不按顺序按,或同时按若干按钮)后,程序就不能正常工作了。这种程序,就不大可靠,或说不稳定,就是不好的程序。

好的PLC程序对非正常工作条件出现,能予以识别,并能使其与正常条件衔接,可使程序适应于多种情况。好的PLC程序对非法操作能予以拒绝,且不留下“痕迹”。只接受合法操作。

联锁是拒绝非法操作常用的手段,继电电路常用这个方法,PLC也可继承这个方法。

5、易改性

要使程序易改,也就是要便于修改。PLC的特点之一就是方便,可灵活地适用于各种情况。其办法就是靠修改或重新设计程序。

重新设计程序用于改变PLC工艺的用途要求的情况,不仅程序重编,而且I/O也要重新分配。多数情况下不需要重编程序,作一些修改就可以了。这就要求程序具有易性,便于修改。

易改也就是弹性,要求只要作很少的改动,即可达到改变参数或理改动作的目的。

6、扩展性

许多程序可能在进现场之前都已经编好,但是到了现场,可能还需要添加另外的程序,为了避免打乱整套系统的结构,需要在每个功能区预留一定的空间作为备用。

硬件上留出足够的余量,软件在编写的时候把手动,自动,半自动考虑好,位置留出来。

7、完备报警系统

PLC系统往往用于工业环境中,每一次的事故都会造成或大或小的损失,为了做到事故预处理或者在事故中将损失降到最小,必须重视PLC的报警和保护,在此将其摘出来作为系统的一个重要组成部分。

8、程序模拟

为了保证现场的调试进度或者给客户展示,往往在进现场之前,要对自己的程序进行全自动的模拟。为此需要在程序中加入模拟程序部分,模拟程序部分在正常现场运行之后断开。为了使程序具备模拟功能,需要做以下工作:

(1)将实际的PLC的I/O点转换为PLC的中间变量或者数据块变量;

(2)根据工艺要求编写各个设备的模拟程序。在设计PLC程序的过程中,能够满足以上几个方面的要求的就能称的上是一个好程序了。

(二)PLC编程的小技巧

(1)选择合适的PLC型号及I/O点数,有特殊功能需求时选择特殊功能模块。

(2)熟悉所选择的PLC编程指令及编译软件。

(3)进行软元件规划,包括内部继电器、保持继电器、数据寄存器、定时器、计数器等。

(4)进行程序规划,一般以故障提取、故障处理、手动处理、自动处理、输出处理这样的顺序进行编程。比较大型的工程或设备按功能单元分段、分块进行处理,如一条自动化生产线中有提升机、移行、顶起旋转装置等,则应按上述单元分段分块编程。

(5)在分段分块编写的程序前应加上简短的段注释,说明此段程序的功能,如有必要可以注明相应的工艺流程。分块或分段的程序再总体程序的位置顺序应基本上按工艺流程顺序排列,便于程序的可读性。

(6)在程序设计之前,应对设备进行抽象,对如停止、急停、过载、超限、超时、安全光幕、碰停、门开关等共用因子进行提取,放在启动回路或启动主控、连锁回路,作为整个程序结构的大前提,在此基础下,再将程序分为自动、手动两大功能区。

(7)将程序结构手动功能区共用因子,如手动、危及设备人身安全等因数因子进行提取,放在手动主控、连锁回路,对手动控制进行保护、屏蔽、报警。

(8)将程序结构自动功能区共用因子,如自动、超限、超时等因数因子进行提取,放在自动主控、连锁回路,对自动控制下设备进行保护、屏蔽、报警。一个总的原则就是,在确保安全的前提下,严格限制设备的进,宽松限制设备的出。

(9)程序设计时应设计程序总复位功能,便于使用者在设备出现故障情况下,可以方便尽快恢复设备正常工作。总复位应充分考虑在复位过程中设备和人员的安全。

(10)自动模式切换到手动模式时,程序应清除自动模式下的输出和中间状态。特别是在自动模式使用SET指令时,必须在手动模式用RESET指令予以清除。

(11)严禁在编制程序中使用双输出,即同一条输出语句或同一个输出线圈在程序中出现2次及以上。在不同模式条件下的对同一输出点的输出使用中间继电器进行中转,最后集中到一起并列到输出点。

(12)使用触摸屏时,对触摸屏和PLC公用的控制区和状态区,不得做其他功能方面的编程使用。

(13)对PLC的特殊模块,在使用之前,应先查明其控制区和状态区是否占用工作字,若占用,不得将这些工作字做其他方面的编程。

(14)PLC的输入、输出、中间继电器、定时器、计数器、数据寄存器等都要加中文注释。输入、输出还要有元器件名称位号。对应的输入点,一般情况下默认为外围开关连接的是NO触点,对于需要接NC触点的须在注释中标明。所有注释应当清晰明了,不易产生误解,尽量少使用泛指。

(15)工程调试完成后,系统必须保留最终软件程序,保存的文件名应包含项目编号/作者/日期信息/版本号等。

(16)关于程序加密:对于加密程序的密码必须有专门的文件予以保存,并注明相应的用户名+密码+权限,分发给至少两个人以上了解密码,防止密码丢失带来无法打开程序的情况。

(17)PLC和上位机(或触摸屏)组成监控系统时,在画面上很多时候需要有“手动”、“自动”等控制模式(一般都是多个只能一个时)。在程序里面可以用“MOV”指令。如:当选择“手动”就将常数1 MOV到一个寄存器VB10里面,当选择“自动”就将2 MOV到同一寄存器VB10。只要判断寄存器的数据是多少,就知道系统是那种控制方式。这样的思路好处是容易理解,不需要互锁之类的麻烦程序。

(18)程序有模拟量控制时,如果读取的模拟量基本上没误差,可以采取时间滤波的方式,延时一段时间。如果读取的数据误差很大,就需要采取其它的滤波方式,如算平均值等。可以查阅相关的资料。

(19)在程序调试过程中(特别是设备改造时,你的程序是加入到原来设备的程序中时),当程序语句中出现条件满足,而输出线圈不接通时,可以检查你的这段程序是否是在这样的语句之间,如JUMP\go to\等语句。还有一种可能就是在中断程序之后,条件满足而没输出不接通,一般都是这段的程序不被扫描。

(20)在顺序控制程序时,即一个动作完成后,进入到下一个动作,等类似的顺序控制,采用+10+10控制模式,本人觉得很方便。其思路是:预置一个寄存器,在初始化时值为0,当系统启动后,对它+10,此时寄存器为10,寄存器等于10时可以做第一个动作;第一个动作完成后,再对寄存器+10,此时寄存器等于20,可以做第二个动作,第二个动作完成后又+10,此时寄存器等于30,这样只要判断寄存器里面数据为多少,就知道要完成那个动作。当需要跳跃动作时,可以不再+10,可以加+20\+30....,看实际的需要而定。为什么加10而不是加1,因为加10之后,如果插入一段,只要在这10个空余的地方随便选择一个位置就可以了。

(21)在设计程序的时候,当出现工艺上的故障(非控制系统控制),最好将故障现象保持,并有灯光声音报警。直到操作工复位,以让其知道系统出现了故障。不然停机了,别人还认为你的程序问题。一般都是在设计一个新系统时,要注意到这些。

(22)对于经常调用的子程序,可以做成子模块,频繁调用。

(23)由于生产机械在工作循环中的各工步运动在执行时需要一定的时间,且这些时间都有一定的限度,因此可以以这些时间为参考,在要检测的工步动作开始的同时,起动一个定时器,定时器的时间设定值比正常情况下该动作要持续的时间长20%~30%,而定时器的输出信号可以用于报警或自动停机装置。当生产机械某工步动作的时间超过规定时间,达到对应的定时器预置时间,还未转入下一工步动作时定时器发出故障信号,该信号停止正常工作循环程序,起动报警或停机程序,这就是我们常说的超节拍保护。

(24)一些安全用检测开关(如急停按钮、安全光幕、极限开关等)实用常闭(NC)输入。

(25)为安全、节能考虑,尽量将输出设计成需要动作时才动作,一旦到位就停止输出,而不要设计成平时一直输出,需要停止时才让输出断开。

(26)执行元件的动作原则应当是宁可不动,也不要乱动!

(27)单台设备控制:单台设备必须有软手操/自动切换以及软手操时可以启/停功能,由自动切换到软手操时,设备不能停机;由软手操切换到自动时,设备启/停取决于自动程序。

(28)单台设备(泵、风机及其它大型设备)运行满24小时。

免责声明:本文转自网络,版权归原作者所有,如涉及作品版权问题,请及时与我们联系删除,谢谢!

如何获取 电气热门资料?

操作指引如下!

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编程语言。采用功能模块图的形式来表示模块所具有的功能,不同的功能模块有不同的功能。

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

(4) 顺序功能流程图语言(SFC)

顺序功能流程图语言是为了满足顺序逻辑控制而设计的编程语言。编程时将顺序流程动作的过程分成步和转换条件,根据转移条件对控制系统的功能流程顺序进行分配,一步一步的按照顺序动作。每一步代表一个控制功能任务,用方框表示。在方框内含有用于完成相应控制功能任务的梯形图逻辑。这种编程语言使程序结构清晰,易于阅读及维护,大大减轻编程的工作量,缩短编程和调试时间。用于系统的规模校大,程序关系较复杂的场合。

顺序功能流程图编程语言的特点:以功能为主线,按照功能流程的顺序分配,条理清楚,便于对用户程序理解;避免梯形图或其他语言不能顺序动作的缺陷,同时也避免了用梯形图语言对顺序动作编程时,由于机械互锁造成用户程序结构复杂、难以理解的缺陷;用户程序扫描时间也大大缩短。

(5)结构化文本语言(ST)

结构化文本语言是用结构化的描述文本来描述程序的一种编程语言。它是类似于高级语言的一种编程语言。在大中型的PLC系统中,常采用结构化文本来描述控制系统中各个变量的关系。主要用于其他编程语言较难实现的用户程序编制。

结构化文本编程语言采用计算机的描述方式来描述系统中各种变量之间的各种运算关系,完成所需的功能或操作。大多数PLC制造商采用的结构化文本编程语言与BASIC语言、PASCAL语言或C语言等高级语言相类似,但为了应用方便,在语句的表达方法及语句的种类等方面都进行了简化。

结构化文本编程语言的特点:采用高级语言进行编程,可以完成较复杂的控制运算;需要有一定的计算机高级语言的知识和编程技巧,对工程设计人员要求较高。直观性和操作性较差。

在PLC控制系统设计中,要求设计人员不但对PLC的硬件性能了解外,也要了解PLC对编程语言支持的种类。

二、西门子PLC指令表功能汇总

指令( 英文全称意思 ) :指令含义

1、LD ( Load 装载 ) :动合触点

2、LDN ( Load Not 不装载 ) : 动断触点

3、A ( And 与 动合) : 用于动合触点串联

4、AN ( And Not 与 动断 ) :用于动断触点串联

5、O ( Or 或 动合 ) :用于动合触点并联

6、ON ( Or Not 或 动断 ) : 用于动断触点并联

7、= ( Out 输出 ) : 用于线圈输出

8、OLD ( Or Lode): 块或

9、ALD ( And Lode): 块与

10、LPS ( Logic Push ) :逻辑入栈

11、LRD ( Logic Read ) :逻辑读栈

12、LPP ( Logic Pop ) :逻辑出栈

13、NOT ( not 并非 ) :非

14、NOP ( No Operation Performed ) : 无操作

15、AENO ( And ENO ) :指令盒输出端ENO相与

16、S ( Set 放置 ) : 置1

17、R ( Reset 重置,清零 ) :清零

18、P ( Positive) :上升沿

19、N ( Negative) :下降沿

20、TON ( On_Delay Timer ) :接通延时定时器21、TONR ( Retentive On_Delay Timer ) : 有记忆接通延时定时器

22、TOF ( Off_ Delay Timer ) :断开延时定时器

23、CTU ( Count Up ) : 增计数器

24、CTD ( Count Down ) : 减计数器

25、CTUD ( Count Up/ Count Down ) :增减计数器

26、ADD ( add 加 ) : 加注意

//ADD_I (_ I 表示整数)

ADD_DI( DI表示双字节整数)

ADD-R (R 表示实数)

它们都是加运算只是数的大小不同。

27、SUB ( Subtract 减去,减少) :减

28、MUL ( Multiply ) : 乘

29、DIV ( Divide ) : 除

30、SQRT ( Square root ) : 求平方根

31、LN ( Napierian Logarithm 自然对数 ) : 求自然对数

32、EXP ( Exponential 指数的 ) : 求指数

33、INC_B ( Increment 增加 ) : 增1

//其中_B代表数据类型 还有W(字节)、DW双字后面几个都是这样的。34、DEC_B ( Decrement 减少 ) : 减1

35、WAND_B ( Word and 与命令 ) :逻辑与

36、WOR_B ( Word or 或命令) : 逻辑或

37、WXOR_B ( Word exclusive or 异或命令) :逻辑异或

38、INV_B ( Inverse 相反 ) : 取反

39、MOV _B ( Move 移动 ) : 数据传送

40、BLKMOV_B ( Block Move 块移动) :数据块传送

41、SWAP ( Swap 交换 ) : 字节交换

42、FILL ( Fill 填充 ) : 字填充

43、ROL_B ( Rotate Left 循环 向左) :循环左移位

44、ROR_B ( Rotate Right 循环 向右) : 循环右移位

45、SHL_B ( Shift Right 移动向左) :左移动

46、SHR_B ( Shift Right 移动向右 ) : 右移动

47、SHRB ( Shift buffer 移动缓存) :寄存器移位

48、STOP ( Stop 停止 ) : 暂停

49、END /MEND ( End /Mend ) : 条件/无条件结束

50、WDR ( Watch dog reset ) : 看门狗复位

51、JMP ( Jump 跳) :跳转

52、LBL ( Label 位置 ) : 跳转标号

53、FOR ( For 循环 ) : 循环

54、NEXT ( Next 再下去) :循环结束

55、SBR ( Subprogram Regulating子程序控制 ) : 子程序调用

56、SBR_T ( Subprogram Regulating Take ) : 带参数子程序调用

57、SCR ( Sequence Control 顺序控制 ) : 步开始

58、SCRT ( Sequence Control Transfer 顺序控制转移 ) : 步转移

59、SCRE ( Sequence Control End 顺序控制结束 ) : 步结束

60、AD_T_TBL ( Add data to table 添加数据到表格中) : 填数据表

61、FIFO ( First in First out 先进先出 ) : 先进先出

62、LIFO ( Last in First out 后进先出 ) :后进先出

63、TBL_FIND ( Table Find 表格查找 ) : 表查找

64、BCD_I ( Binary Coded Decimal _I 二进制编码的十进制 ) :BCD 码转整数

65、I_BCD ( I_ Binary Coded DecimaL ) :整数转BCD码

66、B_I ( Bit to int ) :字节转整数

67、I_B ( int to bit ) :整数转字节

68、DI_I ( Double int to int ) :双整数转整数

69、I_DI ( int to double int ) :整数转双整数

70、ROUND ( Round 取整 ) : 实数转双整数

71、TRUNC ( Trunc 截取 ) :转换32位实数整数部分(舍去小数取整)

72、DI_I (double int to int ) :双整数转实数

73、ENCO ( Encode 编码) : 编码

74、DECO ( Decode 译码) :译码

75、SEG ( Segment decoder分断译码器 ) : 七段显示译码器

76、ATH ( ASCII码 turn hex ) : ASCII码转16进制

77、HTA ( Hexadecimal to ascii) : 16进制转ASCII码

78、ITA ( // int to ascii) : 整数转ASCII码

79、DTA ( // double int to ascii ) : 双整转ASCII码

80、RTA ( // real to ascii) : 实数转ASCII码

81、ATCH (//attach ) : 中断连接

82、DTCH ( Depatch ) : 中断分离

83、HDEF ( High speed counter definition ) : 高速计数器定义

84、HSC ( High Speed Counter 高速计数器 ) :启动高速计数器

85、PLS ( Pulse 脉冲 ) :脉冲输出

86、READ_ RTC ( Read real time clock 读实时时钟 ) :读实时时钟

87、SET_RTC ( Set real time clock ) : 写实时时钟

88、XMT ( Transmitter ) : 自由发送

89、RCV ( Receive 接收 ) : 自由接收

90、NETR ( Net read 网络读 ) : 网络读

91、NETW ( Net write 网络写 ) : 网络写

92、GET_ADDR ( Get address 获取地址 ) : 获取口地址

93、SET_ADDR ( Set address 设置地址 ) : 设定口地址

94、PID ( Proportional Integral Differential 比例、积分、微分 ) :比例积分微分调节器。

如有不妥,欢迎指正!

相关问答

PlC的程序怎么编写?

编写PLC程序需要遵循一定的步骤。首先,需要进行需求分析,确定系统的功能和操作流程。然后,根据需求设计程序结构,包括输入输出模块的配置和信号处理逻辑。...

plc的常用代码?

PLC品牌比较多!每个都不一样!西门子,施耐德,AB(罗克韦尔),GE。中型PLC:西门子,施耐德,欧姆龙,三菱。小型PLC:西门子,欧姆龙,三菱,LS,松下,富士...PLC品牌比较...

用PLC如何写报警程序?

编写PLC报警程序需要考虑以下几个步骤:定义报警条件:首先需要确定哪些条件会触发报警,例如某个设备的温度超过设定值、某个传感器的读数异常等。设计报警逻...

如何设置plc指令?

如果你的程序里面,置位和复位的代码只是执行一个扫描周期的话,那可以通过PLC的OPCserver软件对你想操作的位进行设置。如果是每个周期都执行,那基本是没有办...

发那科焊接机器人程序代码详解

一般情况下,针对焊接机器人的控制系统的编程语言有:1、汇编语言;(针对普通51单片机)2、C语言;(针对大多数51和C8051F单片机,以及DSP和ARM)3、VHDL;...1、...

plc的初始化程序怎么写?

PLC(ProgrammableLogicController)的初始化程序有多种方法,具体的实现方法可以在不同品牌和型号的PLC上存在一些差异。在一般的PLC系统中,初始化程序包含以...

plc如何读取abbacs800的故障代码及运行数据?

要读取ABBACS800的故障代码和运行数据,您可以使用PLC与ACS800之间的通信协议,如Modbus或Profibus。首先,您需要配置PLC的通信模块,并确保与ACS800建立通信连...

plc程序怎么转换源码?

1、在GXDeveloper软件中新建与你的PLC型号一致的项目2、使用键盘快捷键ALT+F1切换到指令表输入方式,将你的指令表输入3、再次使用键盘快捷键ALT+F1切换回梯形...

欧姆龙plcmodbus功能代码怎么用?

欧姆龙PLC使用Modbus通信协议可以实现与其他设备的数据交换。在使用Modbus功能代码之前,需要先确保你的PLC型号支持Modbus通信,并正确配置了通信参数。以下是...

起保停plc程序怎么写?

1.起保停PLC程序一般需要根据具体的场景进行编写,因此难以给出一般性的答案。2.一般来说,起保停PLC程序是指根据输入信号的变化,控制输出信号的开关状态,从...

 广安邻水  3.21空难 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2025  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部