更新记录
1.0.1(2023-07-14)
DCloud初版
平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:5.0 - 12.0 | armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 | × |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios
注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择
插件使用说明
注意事项
1,购买本插件前,请先试用,并充分自测确认满足需求之后再行购买。一经购买,概不退还。
2,如有使用上的疑问请QQ()与作者沟通交流。
3,本插件目前仍在优化完善阶段,欢迎大家使用帮助作者完善插件。
本插件
支持数据读写
支持读写DB区,I区,Q区,M区,V区
支持读写西门子S1500,S1200,S200Smart
支持PLC自动重连
知识点
知识点1:地址的格式以及对应含义,兼容大小写
简写 | 区域 | 字节索引 | 位索引 | PLC类型 |
---|---|---|---|---|
DB1.1.2 | DB1区 | 1 | 2 | S1200/S1500 |
DB2 | DB2区 | 0 | 0 | S1200/S1500 |
DB3.3 | DB3区 | 3 | 0 | S1200/S1500 |
D1.1.2 | DB1区 | 1 | 2 | S1200/S1500 |
Q1.6 | Q区 | 1 | 6 | S1200/S1500 |
Q1 | Q区 | 1 | 0 | S1200/S1500 |
I2.5 | I区 | 2 | 5 | S1200/S1500 |
I2 | I区 | 2 | 0 | S1200/S1500 |
M3.2 | M区 | 3 | 2 | S1200/S1500 |
M3 | M区 | 3 | 0 | S1200/S1500 |
V2.1 | V区 | 2 | 1 | S200Smart |
V2 | V区 | 2 | 0 | S200Smart |
知识点2:访问数据类型与JAVA数据类型和PLC数据类型对应关系
访问数据类型 | 数据类型名称 | 数据大小[位] | 数据大小[字节] | JAVA数据类型 | PLC数据类型 | 示例 |
---|---|---|---|---|---|---|
boolean | 布尔类型 | 1 | 1/8 | Boolean | BOOL | true |
byte | 字节类型 | 8 | 1 | Byte | BYTE | 0x11 |
uint16 | 无符号2字节整型 | 16 | 2 | Integer | WORD/UINT | 65535 |
int16 | 有符号2字节整型 | 16 | 2 | Short | WORD/INT | -32760 |
uint32 | 无符号4字节整型 | 32 | 4 | Long | DWORD/UDINT | 70000 |
int32 | 有符号4字节整型 | 32 | 4 | Integer | DWORD/DINT | -70000 |
float32 | 4字节浮点型 | 32 | 4 | Float | REAL | 3.14 |
float64 | 8字节浮点型 | 64 | 8 | Double | LREAL | 3.14 |
string | 字符型 | 8 | 1 | String | String | ABC |
time | 时间/耗时 | 32 | 4 | Long | Time | 100ms |
date | 日期 | 16 | 2 | LocalDate | Date | 2023-04-03 |
timeOfDay | 一天中的时间 | 32 | 4 | LocalTime | TimeOfDay | 10:22:11 |
知识点3:PLC地址与本项目地址和数据类型的对应关系
PLC地址 | 位大小 | 字节大小 | 访问地址 | 访问数据类型 | PLC类型 |
---|---|---|---|---|---|
DB100.DBX0.0 | 1 | 1/8 | DB100.0.0 | boolean | S1200/S1500 |
DB100.DBB5 | 8 | 1 | DB100.5 | byte | S1200/S1500 |
DB100.DBW6 | 16 | 2 | DB100.6 | uint16/int16 | S1200/S1500 |
DB100.DBD3 | 32 | 4 | DB100.3 | uint32/int32/float32 | S1200/S1500 |
VB100 | 8 | 1 | V100 | byte | S200Smart |
VW100 | 16 | 2 | V100 | uint16/int16 | S200Smart |
VD100 | 32 | 4 | V100 | uint32/int32/float32 | S200Smart |
MB1 | 8 | 1 | M1 | byte | - |
MW1 | 16 | 2 | M1 | uint16/int16 | - |
MD1 | 32 | 4 | M1 | uint32/int32/float32 | - |
加载插件
var xyS7 = uni.requireNativePlugin("xy-S7PLC")
连接
var ret = xyS7.connect({
ip: "192.168.0.1",
port:102, //西门子默认端口102
rack:0,
slot:1
})
关闭连接
xyS7.close()
读写方法
// write boolean
var ret = xyS7.writeBoolean(address,data);
// write byte
var ret = xyS7.writeByte(address,data);
// write UInt16
var ret = xyS7.writeUInt16(address,data);
// write UInt32
var ret = xyS7.writeUInt32(address,data);
// write float32
var ret = xyS7.writeFloat32(address,data);
// write writeFloat64
var ret = xyS7.writeFloat64(address,data);
// write String
var ret = xyS7.writeString(address,data);
// write time
var ret = xyS7.writeTime(address,data);
// write date
var ret = xyS7.writeDate(address,data);
// time of day
var ret = xyS7.writeTimeOfDay(address,data);
// read boolean
var ret = xyS7.readBoolean(address);
// read byte
var ret = xyS7.readByte(address);
// read UInt16
var ret = xyS7.readUInt16(address);
// read UInt32
var ret = xyS7.readUInt32(address);
// read float32
var ret = xyS7.readFloat32(address);
// read float64
var ret = xyS7.readFloat64(address);
// read String
var ret = xyS7.readString(address);
// read time
var ret = xyS7.readTime(address);
// read date
var ret = xyS7.readDate(address);
// read time of day
var ret = xyS7.readTimeOfDay(address);