使用教程
-
本链接PDF文档详细介绍伺服电机在表格编程是如何一步一步操作,从开机自检,到逻辑控制,以及其它在实际机械编程时需要用到的功能,基本上可以说是比较完整的一套说明,我是经过多次在外面机械厂出差编程,包括PLC编程,和屏幕编程都可以参考本文PDF,这个文档是应用设计,对现场机械设计所需进行讲解,并不是学习这个【EasyDCS可编程控制系统】这个软件基础功能。 &...
-
用PLC来设计定时开关控制 用PLC来设计定时开关控制,非常详细的使用教程说明,一步一步说明到位,设计一个定时时间控制器,只需要表格选择,不需要梯型图编程,这个需要一个触摸屏来操作,屏的设计暂无说明。 PDF文档下载地址如下:可编程PLC定时开关控制器PDF下载 复杂物联网PLC程序控制:可编程 边缘计算、PLC网络远程控制教程
-
DCS分布式PLC可编程OPC物联网远程监控系统设计 在工业、工控行业中,在分散在不同地区不同空间的设备,需要对远程设备进行集中控制和监控时,远程终端有开关量,模拟量,电流、电压、电量、流量、压力、数量、温湿度环境数据、等各种各样的数据进行监控时,这时就需要一套可以发起多TCP连接数的DCS中控主机,发起连接时是支持Modbus-TCP和Modbus-RTU的,因为市场上通用各...
-
控制器恢复出厂IP地址的操作方法: 控制器在出厂前一般使用IP地址是192.168.1.250进行连接,这个IP地址其实并不是默认IP地址,是我们生产中将所有型号控制器直接修改成这个IP地址,用户使用各种型号时比较容易记住。 那默认IP地址是怎么产生的呢?于J4045型号为例,产品标签上有一个地址A,对应的下方就是一个小帽子,这个短路帽子有插着,和没插两种情况,当控制器上...
-
型号JRD-AD8028,为8通道模拟量AD采集模块,是一款工业极,精度高,温漂小,在正常采集数据时,精度可达小数4位半,或作为小数4位高精度来使用,本控制器可采集0V-10V,0V-5V,4-20mA,-10-10V,8路采集独立,电压与电流通过内部跳线切换,差分模式。 简介和优点: 1:外观与市场上不同厂家常见的模拟量采集模块无特别之处。 优点: 2:采集到电压,或电流,可直接...
-
介绍一:在中控主机扩展红外学习模块时,一般扩展1路红外模块时只是简单的跟扩展继电器开关相同,没有太多的设置,而扩展8通道红外模块,就需要编程设计一下切换功能,对于8个通道进行切换到哪里进行发送一开始中控并不知道,所以统过编程来设计。 介绍二:此教程设在软件计了从第1路到第8路是对于红外通道切换。其中切换通道,并不是控制,只是切换,控制时是从第9路开...
-
本视频只是让大家认识一下编程软件的一些指令的生成。
-
【远程设备多管理控制终端】【L3.51】 ,【L3.56】,【2.1.2】 上图视频设置定时的操作方法 上图视频定时器的读取时间的方法: 上图视频操作定时器时间导出为文件方法,和导入文件写进控制器方法 物理继电器功能是提供DCS中控主机的型号【DCS-SERVER400】调度。
-
【远程设备多管理控制终端】是可以管理多台设备,在管理软件可以直接控制,查看在线状态,修改设置定时时间等操作。一个软件最多可以管理几百上千台控制器,这是根据电脑的配置,一般普通电脑也可以管理200台控制器。管理软件建议可以安装在WIN7系统,和WIN10系统中。 1:电脑管理软件安装后,打开即可,什么都不用动,不用理。这是一套应用软件,操作员使用时就应该...
-
用户第一次使用,与控制器连接时,用电脑的网卡直接网线连到控制器,中间不需要路由器,不需要交换机,直接用网卡的方式连接,连接后再来设置控制器的IP地址等。 可以连接控制器了,并修改了控制器数据,将控制器放到需要安 装的地方,再将电脑的IP地址恢复到原来的方式。
开关控制SDK开发协议:获取和修改设备开关状态的指令
设备其它数据操作SDK开发协议下载地址:以太网协议
此版本为:FW2,第二版最新版本。
TCP上位机主动连接到设备的2000号端口
连接之后,设备会自动上报最新的输入,输出,和实时时间信息。
上报格式以以下协议描述的应答格式相同。
【线圈】表示输出的通道
1, 修改某一路开或关
发送格式:00 00 00 00 00 06 01 05 02 线圈 开关 00
00 00 00 00 00 06 01 05 02 线圈起始地址 开关标记(FF 或 00) 结尾 00
例如:
开第一路: 00 00 00 00 00 06 01 05 02 00 FF 00
关第一路: 00 00 00 00 00 06 01 05 02 00 00 00
开第二路: 00 00 00 00 00 06 01 05 02 01 FF 00
关第二路: 00 00 00 00 00 06 01 05 02 01 00 00
红色部分为输出的地址, 以十六进制表示, 00 表示第一路, 01 表示第二路, 02 表示第三路, 0A 表示第
十一路, 0B 表示第十二路, 0F 表示第 16 路, 10 表示第 17 路, 以此类推。
蓝色部分表示开关标记, FF 表示开,00 表示关。
2, 读取某几路状态
与第 5 条指令作用相同, 读取的数量可变
发送格式:00 00 00 00 00 06 01 01 02 线圈 00 数量
00 00 00 00 00 06 01 01 02 线圈起始地址 00 读取数量
返回格式:
00 00 00 00 00 【数据总数+3】 01 01【数据总数】 【数据第一字节】 【数据第二字节】 【数据第三字节】……
例如:从第一路开始, 读取 10 路: 00 00 00 00 00 06 01 01 02 00 00 0A
红色的部分为需要读取的首地址, 以十六进制表示, 00 表示第一路, 01 表示第二路, 02 表示第三路, 0A 表
示第十一路, 0B 表示第十二路, 0F 表示第 16 路, 10 表示第 17 路, 以此类推。
蓝色的部分为读取的总共数量, 以十六进制表示, 00 表示读取 0 路, 01 表示读取 1 路, 02表示读取 2 路,
0A 表示读取 10 路, 0B 表示读取 11 路, 0F 表示读取 15 路, 10 表示读取 16路, 以此类推。设备返回
应答 00 00 00 00 00 05 01 01 02 ff 03,返回应答红色部分 02 表示读取到 2 个字节数据, 紧跟
着的 FF 03 表示线圈状态, 使用十六进制表示, 读取到的线圈状态可能是多个字节组成,例如 AA BB CC DD …
每个字节最多表示 8 路, 两个字节表示 16 路, 3 个字节表示 24 路, 以此类推。
3, 同时修改 32 路状态
发送格式:03 01 02 00 00 05 00 20 AA BB CC DD
蓝色部分 AA BB CC DD 一共 4 个字节, 使用十六进制表示输出的状态值, 每个字节有 8 个比
特, 每个比特表示一路输出, 4 个字节总共表示 32 路输出, 从第 1 路开始, 到第 32 路。
例如:
32 路全开: 03 01 02 00 00 05 00 20 FF FF FF FF
32 路全关: 03 01 02 00 00 05 00 20 00 00 00 00
开第 1、 2 路, 关第 3、 4 路: 03 01 02 00 00 05 00 20 03 00 00 00
关第 1、 2 路, 开第 3、 4 路: 03 01 02 00 00 05 00 20 0C 00 00 00
4, 同时取反 32 路状态, 翻转 32 路状态
发送格式 24 01 02 00 00 05 00 AA BB CC DD
蓝色部分 AA BB CC DD 一共 4 个字节, 使用十六进制表示二进制, 每个字节有 8 个比特, 每
个比特表示一路输出, 4 个字节总共表示 32 路输出, 从第 1 路开始, 到第 32 路。
例如翻转第一路: 24 01 02 00 00 05 00 01 00 00 00
例如翻转第二路: 24 01 02 00 00 05 00 02 00 00 00
例如翻转第三路: 24 01 02 00 00 05 00 04 00 00 00
例如翻转第 1、 3、 5、 6 路: 24 01 02 00 00 05 00 35 00 00 00
5, 读取 32 路状态
与第 2 条指令作用相同, 只是数量固定 32 路
发送格式: 01 01 02 00 00 05 00 20 00 00 00 00
返回数据: 01 01 02 01 05 00 00 XX AA BB CC DD
XX 部分忽略
蓝色部分 AA BB CC DD 一共 4 个字节, 使用十六进制表示输出的状态值, 每个字节有 8 个比
特, 每个比特表示一路输出, 4 个字节总共表示 32 路输出, 从第 1 路开始, 到第 32 路。
例如:
返回 32 路全开状态: 01 01 02 01 05 00 00 10 FF FF FF FF
返回 32 路全关状态: 01 01 02 01 05 00 00 10 00 00 00 00
读取IP参数
22 00 00 00 00 00 00
返回原始数据:
22 00 00 01 14 00 5a c0 a8 01 fa ff ff ff 00 c0 a8 01 01 c0 a8 01 01 d0 07 50 00
除去头部分,剩下的部分为IP设置数据,根据数据结构:
c0 a8 01 fa ff ff ff 00 c0 a8 01 01 c0 a8 01 01 d0 07 50 00
A B C D E F
typedef struct _CmdIpConfigData
{
uint8_t ipaddr[4]; A 表示设备的IP地址
uint8_t netmask[4]; B 表示设备的子网掩码
uint8_t gateway[4]; C 表示设备的默认网关
uint8_t dns[4]; D 表示设备的DNS地址
uint16_t port; E 表示与设备通信的端口号
uint16_t webport; F 表示设备的WEB服务器的端口号(注意端口号不要重复使用,以免冲突
} CmdIpConfigData;
数据解释如下
C0 A8 01 FA 使用16进制表示,转换成10进制为: 192 168 1 250
FF FF FF 00 使用16进制表示,转换成10进制为: 255 255 255 0
C0 A8 01 01 使用16进制表示,转换成10进制为: 192 168 1 1
C0 A8 01 01 使用16进制表示,转换成10进制为: 192 168 1 1
D0 07 使用16进制表示16位整数为:0x07D0,转换成10进制为: 2000
50 00 使用16进制表示16位整数为:0x0050,转换成10进制为: 80
设置IP参数
21 00 00 01 14 00 5a c0 a8 01 fa ff ff ff 00 c0 a8 01 01 c0 a8 01 01 d0 07 50 00
与读取IP参数相似,只是头一个字节不同,数据格式相同。
设置通道名字
05 00 00 00 10 00 00 aa bb aa aa aa aa … aa
aa bb , 表示通道编码,aa,表示通道的索引,bb表示通道的类型,bb的取值为00或01,aa的取值范围是00~1F
aa aa aa aa … aa,表示通道的名字,一共20个字节字符串,以0结尾,ascii编码模式。
读取通道名字
04 00 00 00 10 00 00 aa bb aa aa aa aa … aa
aa bb , 表示通道编码,aa,表示通道的索引,bb表示通道的类型,bb的取值为00或01,aa的取值范围是00~1F
aa aa aa aa … aa,表示通道的名字,读指令这些数据忽略,
读通道名字的返回应答格式相同。
读定时器,读定时个数
06 00 00 00 00 00 00
返回数据:
06 00 00 01 02 00 02 02 00
说明:
02 00 十六进制:0x0002,十进制:2,表示设备的定时节点数量为 2,2个定时节点。
读取下一个定时节点
06 00 00 10 00 00 00
返回数据:
06 00 00 11 19 00 a2 05 00 03 02 71 07 1d 07 1e 00 71 07 1d 08 00 00 05 00 00 00 3c 00 00 00 00继续发送:06 00 00 10 00 00 00,读取下一个定时节点,返回下一个定时节点:
06 00 00 11 19 00 19 04 00 01 02 71 07 1d 13 00 00 71 07 1d 13 1e 00 dc 05 00 00 b8 0b 00 00 00继续发送:06 00 00 10 00 00 00,读取下一个定时节点,返回下一个定时节点:
06 00 00 10 19 00 54 00 56 01 42 58 00 00 00 01 00 07 58 ea f8 ef 1a c7 81 6b 80 1d 53 83 b2 40
根据第四个参数10,表示读取定时节点完毕。此数据包无效。11表示定时数据包有效。
说明:
读取定时个数之后,紧接着发送读取下一定时节点,读取到的是定时器的数据,这里定时器个数是2,所以,连续读取三次,只有前面两次才是有效的。
方框内是数据,以下是数据的结构:
typedef struct _timing_node
{
uint8_t addr[2]; //定时端口地址编码(板上输出口地址范围为[0][0] ~ [0][16]),第路输出就是addr[0]=4,addr[1]=0
uint16_t option; //选项,第0位:1表示定时有效,0表示无效,第1位:1表示小循环开启,0表示关闭。第[8:11]位表示循环类型,类型值如下
//
time_type start_time; //循环开启时间(精确到秒,以板上实时时间为准)
time_type end_time; //循环关闭时间(精确到秒,以板上实时时间为准)
//
uint32_t duty_cycle; //小循环中打开继电器的时间周期,即使开通时间长度,毫秒为单位,最小毫秒,最长数十天(天)
uint32_t period; //小循环一个周期的时间长度,毫秒为单位,最小毫秒,最长数十天(天)
//记录状态
uint8_t state; //内部使用,写
} timing_node;
typedef struct _time_type
{
uint8_t year;
uint8_t mon;
uint8_t day;
uint8_t hour;
uint8_t min;
uint8_t sec;
} time_type;
定义循环类型:
#define CYCLE_YEAR 0
#define CYCLE_MONTH 1
#define CYCLE_DAY 2
#define CYCLE_HOUR 3
#define CYCLE_MINITH 4
#define CYCLE_SECOND 5
#define CYCLE_WEEK 6
#define CYCLE_USER 7
#define CYCLE_ONCE 8
05 00 03 02 71 07 1d 07 1e 00 71 07 1d 08 00 00 05 00 00 00 3c 00 00 00 00
套用以上数据结构,第一条定时节点解释为:
- 05 00 表示第六路输出
- 03 02 option, 0x03,第0位为1,表示定时有效。第1位为1,表示小循环有效。高位为0x02,表示循环类型为:CYCLE_DAY,天循环类型。
- 71 07 1d 07 1e 00start_time,71 07 1d 08 00 00end_time表示开启时间和截止时间。
转换成十进制是113 7 29 7 30 00,
转换成十进制是113 7 29 8 00 00,
然后第1,2个数据分别做运算:113+1900=2013,7+1=8,
得到2013年8月29日,7点30分00秒,到2013年8月29日,8点0分0秒。定时时间范围在这个范围之内进行小循环动作。
- 05 00 00 00 duty_cycle,0x00000005,表示小循环开的时间为5秒,以秒位单位。
- 3c 00 00 00 period,表示小循环的时间为0x0000003C,表示小循环的周期为60秒。
继续解释第二条定时节点:
- 04 00 01 02 71 07 1d 13 00 00 71 07 1d 13 1e 00 dc 05 00 00 b8 0b 00 00 00
1, 04 00 表示第五路输出
2,01 02 option, 0x01,第0位为1,表示定时有效。第1位为0,表示小循环无效。高位为01 02,表示循环类型为:CYCLE_DAY,(天)循环类型。
3,dc 05 00 00 duty_cycle,小循环数据,这里无效。
4,b8 0b 00 00 period,小循环数据,这里无效。
5,71 07 1d 13 00 00start_time,71 07 1d 13 1e 00end_time表示开启时间和截止时间。
转换成十进制是113 7 29 19 00 00,
转换成十进制是113 7 29 19 30 00,
然后第1,2个数据分别做运算:113+1900=2013,7+1=8,
得到2013年8月29日,19点0分0秒,到2013年8月29日,19点30分0秒。定时时间范围在这个范围之内开启,没有小循环开和关动作。
写定时器,写定时个数
07 00 00 00 00 00 00 02 00
返回数据:
07 00 00 01 00 00 00
说明:
02 00 : 十六进制:0x0002,十进制:2,表示设备的定时节点数量为 2,2个定时节点。
01: 01表示写成功,00表示写失败。
写定时器,写定时节点
定时器节点的写,必须连续写入预定数据的定时节点。
根据定时器写数据结构,
typedef struct _CmdTimingNode
{
uint16_t index;
timing_node node;
} CmdTimingNode;
构造出定时器写节点的数据:
第一次发送数据:07 00 00 10 FF 00 00 00 00 05 00 03 02 71 07 1d 07 1e 00 71 07 1d 08 00 00 05 00 00 00 3c 00 00 00 00
返回应答:07 00 00 11 00 00 00
第二次发送数据:07 00 00 10 FF 00 00 01 00 04 00 01 02 71 07 1d 13 00 00 71 07 1d 13 1e 00 dc 05 00 00 b8 0b 00 00 00
返回应答:07 00 00 11 00 00 00
说明:
00 00 01 00 表示定时器节点索引,写定时器,从索引00 00开始写,01 00 表示第二个定时节点,02 00表示第三路定时节点,03 00表示第四路定时节点,不同的定时节点使用不同的索引号。写入同一个索引号,将覆盖以前的数据。注意,索引号不代表定时通道号,比如索引01 00只是代表定时器数据占用内存第一个定时节点,输出通道号表示继电器输出的通道,按照以下定时数据规定的为准。
05 00 03 02 71 07 1d 07 1e 00 71 07 1d 08 00 00 05 00 00 00 3c 00 00 00 00
04 00 01 02 71 07 1d 13 00 00 71 07 1d 13 1e 00 dc 05 00 00 b8 0b 00 00 00
表示定时器的定时数据,跟以上读定时的描述相同,最后一个字节:00,必须保证是00。
写定时器,结束定时器写
07 00 00 20 00 00 00
返回应答:
07 00 00 21 00 00 00
说明:
20标志定时器结束写,返回21表示写结束完成。
读或写设备实时时钟
typedef struct _time_type
{
uint8_t year;
uint8_t mon;
uint8_t day;
uint8_t hour;
uint8_t min;
uint8_t sec;
} time_type;
设置时间:09 00 00 00 00 06 00 aa bb cc dd ee ff
读取时间:08 00 00 00 00 00 00
返回应答:08 00 00 01 00 06 00 aa bb cc dd ee ff
或:08 00 00 01 00 06 00 aa bb cc dd ee ff
数据说明:
aa 表示year(年,比如0A(十进制是10),实际年份是1900+10 = 1910年)
bb 表示mon(月,比如 06(十进制是6),实际月份即是6+1=7月)
cc 表示day(天)
dd 表示hour(小时)
ee 表示min (分)
ff 表示sec (秒)
例如
发送指令:08 00 00 00 00 00 00返回08 00 00 01 06 00 00 00 00 01 00 00 00
或者发送:09 00 00 00 06 00 00 00 00 01 00 00 00
控制器MAC地址查询方法,一部分控制器可以通过此方法查询,通过Modbus软件查询:
控制器MAC地址查询方法,通过指令查询:
上图21 94是十进制8596转化而来,00 06读取6个字节,得到返回指令最后6位有效值。
定时器写注意:
- 先写定时器数量,此指令,规定了定时器节点的内存占用数。
- 然后按照规定写入规定数量的定时器节点,未写入的定时节点保持旧的定时节点数据,新写入的数据覆盖旧的数据。首次写必须全部写,以后再写,可以按照需要写入需要修改的定时节点。
- 最后需要发送结束定时器写指令,完成定时器写操作,让定时器生效。